我需要为具有高吞吐量的大量客户端(超过500K并发)构建基于Comet的分布式服务器。我目前正在调查使用Tornado的可能性,因为它在处理大量长轮询请求时效率很高。
我担心的是,单个Tornado服务器是否可以处理如此大量的长轮询客户端。作为一项实验,我想将Tornado Chat演示(https://github.com/facebook/tornado/tree/master/demos/chat)扩展到分布式环境。即有一堆并行运行的Tornado聊天服务器,每个服务器负责一组不断变化的客户端。
如果您对实施此类计划或任何相关资源的引用有任何想法/想法,我将不胜感激。
谢谢!
答案 0 :(得分:0)
通常,为了使基本聊天分布在多个Tornado实例中,您需要创建分布式消息传递机制,最直接的实现是使用某种消息队列,如RabbitMQ(或它的竞争对手)并发送扇出消息当用户输入内容时,所有连接都在监听。
答案 1 :(得分:0)
我最初的想法是在前端有一个Nginx服务器/反向代理,而在后面有多个Tornado实例,这可能是每个进程的Tornado实例,尝试做一些基准测试你的机器可以看到机器可以处理的不同进程中运行多少个Tornado实例,当你注意到性能下降时,开始在另一台机器上做同样的事情。
Nginx将循环遍历所有必须通过长轮询/ Tornado服务器/实例分发负载的服务器。
在这种情况下,不确定rabbitmq是如何有用的。