我已经检查了两个类似的解决方案,使用独立的Python服务器通过sockJS支持web套接字,到目前为止,我找到了两个解决方案。
我需要编写一个复杂的、可伸缩的基于web socket的web应用程序,我担心这将很难扩展Tornado,而且似乎Vertx更适合于web socket的水平扩展。
我还了解到Redis可以与Tornado一起用于水平扩展发布/订阅系统,而HAproxy可以用于扩展SockJS请求。
在Vertx和Tornado之间,编写支持SockJS的可扩展系统的首选解决方案是什么?
发布于 2012-11-26 17:46:51
Vertx有内置的集群支持。我没有在很多节点上尝试过它,但它似乎在一些节点上工作得很好。在内部它使用hazelcast来组织节点。Vertx还运行在JVM上,JVM上已经有许多可能有用的监控/管理工具。因此,在我看来,Vertx似乎是“包含电池”的解决方案。
发布于 2013-06-10 00:26:44
您也可以使用Sockjs Tornado + Rabbit MQ + Memcached来水平扩展。RabbitMQ brocker将扮演从物理服务器A到物理服务器B的消息总线的角色。所有关于服务器的信息都可以存储在memcache中。例如,您需要从客户端套接字C1(A)向客户端套接字C2(B)发送消息M:
如果A的接收方托管在同一服务器上(通过检查memcache),则直接使用Router
由于RabbitMQ的AMQP协议使用了Erlang,因此消息传递非常稳定,非常适合于高负载的分布式应用。为了支持我的话,请看这里:http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/
每台物理服务器(配备power Xenon 4节点,内存4 4Gb,HDD- 140 -1000 4Gb)可以处理3-5个sockjs tornado实例。通过url中的附加参数,SockJS实现也很好地利用了反向代理(HaProxy)。
对于分布式测试,您可以使用gemetr或tsung (基于erlang)。
我在几个分布式应用程序中使用了这种方法。
此外,不要忘记使用Tornado内存作为L1缓存。
https://stackoverflow.com/questions/12652336
复制相似问题