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