对于我目前的设置,我有一个使用Tornado的客户端服务器,一个独立的数据库服务器和我网站的另一个独立服务器。
我正在考虑在同一系统上运行第二个客户端服务器进程(以利用其多个核心),我希望找到一些建议来查找我的客户端"客户端"有联系。每个客户端可以有多个连接(实例)。
我已经看过使用memcached来保存用户标识符列表并将它们链接到它们所连接的服务器,但这似乎并不能很好地扩展(例如,有六位连接用户)。
我在数据库查找时看到了同样的问题。 我已经尽可能地优化了我的服务器,而没有进行微优化,我个人对此不以为然。
当前的服务器方法:
连接时: 接受连接,每个IP的最大连接的速率限制。 将客户端实例附加到名为" clientList"。
的列表中来自客户的数据: 每秒最大消息的速率限制。 将数据附加到客户端工作队列。 如果客户端有一个专用于其工作队列的线程: 返回,它的工作将被当前线程咀嚼 否则为此用户工作队列创建一个新线程,启动它。
TLDR: 如何有效地存储客户端连接的服务器,以便将消息转发给该用户。