缩放python龙卷风应用程序的正确方法

时间:2011-12-26 16:17:02

标签: python memcached scalability tornado zeromq

我正在寻找一种方法来将龙卷风应用程序的一个实例扩展到许多。我有5台服务器,并希望在每4个应用程序实例上运行。我不知道如何解决的主要问题是以正确的方式在实例之间进行通信。我看到了下一步的方法:

       
  • 使用memcached共享数据。我不认为这种方法是好的,因为很多流量会通过memcached进入服务器。因此,将来可能会出现与交通相关的问题。    
  •    
  • 在每个实例之间打开套接字。至于我,维持这种沟通方式将太难了。    
  •    
  • 使用ZeroMQ之类的工具。我不熟悉这项技术。它可以成为在服务器之间扩展应用程序的方法吗?    

2 个答案:

答案 0 :(得分:2)

我实际上在看类似的东西,我想出的是这个。使用Python多处理模块(http://docs.python.org/library/multiprocessing.html)以各种服务器的方式将进程链接在一起。然后使用memcached服务器获取会话特定数据。 (SessionID,IP信息,用于将会话绑定到特定用户以及他们正在使用的活动的线程的信息)其余的是从数据库实例驱动的数据。

答案 1 :(得分:0)

您可以为运行memcached实例和tornado实例的每台服务器执行的操作。使用repcached使memcached实例彼此“主复制”,这样每个龙卷风实例都可以从其机器访问memcached数据。龙卷风和memcached实例有四个服务器,第五个服务器运行haproxy来平衡其他服务器。

www.haproxy.org/

repcached.lab.klab.org/