Vertx SockJS服务器vs sockjs-tornado

时间:2012-09-29 11:32:04

标签: python tornado vert.x sockjs

我一直在使用独立的Python服务器通过sockJS检查两个类似的支持Web套接字的解决方案,到目前为止我找到了两个解决方案。

我需要编写一个复杂的,可扩展的基于Web套接字的Web应用程序,我担心它会难以扩展Tornado,而且看起来Vertx在Web套接字的水平扩展方面似乎更好。

我也理解Redis可以与Tornado一起用于水平扩展pub / sub系统,而HAproxy用于扩展SockJS请求。

在Vertx和Tornado之间,编写支持SockJS的可扩展系统的首选解决方案是什么?

2 个答案:

答案 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):

  • 如果A的接收者托管在同一台服务器上(通过检查内存缓存),使用SockJS路由器直接发送msg
  • 否则通过RabbitMQ brocker B1(A)(通过使用路由逻辑)将M发送到B2(A),其中SockJS路由器B可以直接将您的消息发送到原始接收器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缓存。