【发布时间】:2011-11-26 06:59:33
【问题描述】:
假设实时聊天客户端(Skype、Windows Live Messenger)使用套接字来保持与其相关服务的连接,开发人员实施了哪些策略来横向扩展其服务器?即使是像 Xbox LIVE 这样的系统,用户也可以聊天并向他们的在线朋友发送游戏邀请。
主要问题是这些连接中的每一个都必须共享状态;其中一些状态需要由其他客户端查询(这些客户端可能连接到世界另一端负载均衡器后面的不同服务器)。最明显的是在线状态。
这些服务是否使用基于 RAM 的巨大缓存(可能类似于 memcached)或 NoSQL 数据库(例如 Cassandra),世界各地的所有服务器都连接到这些数据库,并更新和检索所需的状态信息。
我想知道这种解决方案对于我上面描述的实时服务来说是否足够快(或合理)。
我的主要问题是内存。通过负载平衡器和循环 DNS 平衡的组合,分配负载相当简单(我希望如此)。
【问题讨论】:
标签: sockets caching nosql scalability