Я создаю централизованную программу обмена сообщениями на Python, похожую на старый MSN Messenger или WhatsApp.Допустим, теперь мой сервер может обрабатывать около 50 000 онлайн-пользователей, и он работает следующим образом:
user1 хочет отправить сообщение пользователю 2, поэтому user1 отправляет сообщение серверу, сервер ведет огромный списокв памяти, которая отображает пользователей и их IP-адреса, поэтому, если пользователь2 подключен к сети, сервер пересылает сообщение пользователю2, если пользователь2 не подключен, сообщение сохраняется на сервере до тех пор, пока пользователь2 снова не подключится и не запросит новые сообщения.
Теперь моя проблема: допустим, программа растет с точки зрения количества пользователей, и теперь мне приходится обрабатывать 200 тыс. Пользователей, поэтому мне нужно 4 сервера.Каков был бы самый простой способ обработать процесс «нахождения», к какому серверу подключен пользователь2, чтобы переслать ему сообщение?Может быть, «Сервер маршрутизатора», который отображает всех пользователей в сети на всех серверах, так что сервер, к которому подключен пользователь 1, пересылает сообщение на сервер X, где подключен пользователь 2?и если это лучший способ, что я могу сделать, когда пользователь находится в автономном режиме, возвращается в онлайн и «запрашивает» новое сообщение на случайном сервере?как я могу получить все его новые сообщения?
Может быть, другим способом может быть то, что сервер, когда подключен пользователь 1, передает запрос на остальные серверы, спрашивая, подключен ли пользователь 2 к ним?
Заранее спасибо, ребята