正确的Python Tornado应用程序扩展方式

3 投票
2 回答
2166 浏览
提问于 2025-04-17 09:02

我正在寻找一种方法,将一个tornado应用程序的实例扩展到多个实例。我有5台服务器,想在每台服务器上运行4个应用程序实例。现在我面临的主要问题是,如何让这些实例之间正确地进行通信。我考虑了以下几种方法:

  • 使用memcached来共享数据。我觉得这个方法不太好,因为会有很多流量涌向memcached服务器。这样将来可能会出现与流量相关的问题。
  • 在每个实例之间打开套接字。对我来说,这种通信方式维护起来会太复杂。
  • 使用像ZeroMQ这样的工具。我对这项技术不太了解。它能否成为在服务器之间扩展应用程序的一种方法?

2 个回答

0

你可以为每台服务器运行一个memcached实例和一个tornado实例。让这些memcached实例通过repcached互相“主从复制”,这样每个tornado实例就可以从它所在的机器访问memcached的数据。总共需要四台服务器来运行tornado和memcached实例,第五台用来运行haproxy,以便对其他服务器进行负载均衡。

www.haproxy.org/

repcached.lab.klab.org/

2

我其实在研究类似的事情,我想到的一个方法是这样的。可以使用Python的多进程模块(http://docs.python.org/library/multiprocessing.html)来把各个进程连接起来,这样在每台服务器上就能一起工作。然后可以用一个memcached服务器来存储会话特定的数据。(比如会话ID、IP信息、用来把会话和特定用户以及他们正在使用的活动线程关联起来的信息)其他的数据则可以从数据库中获取。

撰写回答