我正在使用 Python 构建一个集中式消息传递程序,类似于旧的 msn messenger 或 whatsapp。假设现在,我的服务器可以处理大约 50.000 个在线用户,它的工作原理如下:
user1 想向 user2 发送 msg,因此 user1 将 msg 发送到服务器,服务器在内存中维护一个巨大的列表,映射用户及其 ip 地址,因此如果 user2 在线,则服务器将 msg 转发给 user2,如果 user2 在线不在线消息被保存在服务器中,直到用户 2 再次在线并要求新的消息。
现在我的问题:假设程序在用户数量方面增长,现在我必须处理 20 万用户,所以我需要 4 台服务器。为了将消息转发给他,处理“查找”用户2连接到的服务器的过程的最简单方法是什么?也许是一个“路由器服务器”,它将所有服务器中的所有用户在线映射,以便连接 user1 的服务器将 msg 转发到连接 user2 的 serverX?如果这是最好的方法,当用户离线、重新在线并“询问”新消息到随机服务器时,我该怎么办?我怎样才能检索它所有的新消息?
也许另一种方式可能是服务器在连接用户 1 时向其余服务器广播搜索,询问用户 2 是否连接到它们?
提前谢谢各位