在spreaded services / unix机器之间进行通信的最佳pythonic方法是什么?

时间:2011-03-10 18:58:38

标签: python django unix tcp communication

Mornink!

我需要设计,编写和实现由多个执行不同角色和运行不同服务的unix服务器组成的宽系统。该系统必须防弹,坚固且快速。是的,我知道。 ;)由于我不知道如何处理这项任务,我决定在离开设计阶段之前询问你的意见。以下是工作流程的流程:

  • 用户正在与网站进行互动,他们在那里设置了服务需求
  • 正在存储此需求(数据库?)并且正在向中央系统(群集)发送某种消息以了解数据库/队列中的新需求
  • 中央系统接收需求并向各种其他系统(集群)发送信号以执行其职责(部分要求的服务设置)
  • 完成后,他们会向中央系统或正在提供服务的网站发送消息

现在,将这些请求存储在某种队列中并执行它们的现代,强大,干净和有效的方法是什么?我应该发送一些信号,还是应该让所有子系统检查任何类型的队列/数据库以获取新数据?可能是那个队列,它应该是一个数据库吗?如何处理消息?我想过打开单个tcp连接并通过它发送数据,以及在另一端触发动作/功能的命令,但仔细观察,必须有其他更好的方法。所以我发现了Spring Python,因为它被批评为90年代。

我知道这是一个非常广泛的问题,但我真的希望你能帮助我绕过那个设计而不是在这里做些蠢事:)

提前致谢!

2 个答案:

答案 0 :(得分:0)

一些一般性的想法: 您可以采用主客户端方法。请求将插入到主数据库中,存储在数据库中。 Master知道每个客户端的状态(相同的db)。只要有请求,主服务器就会将其重定向到免费客户端。客户端在完成任务时报告(包括答案​​,如果有的话),使其能够从主服务器接收新任务(这消除了对池的需要)。 可以使用Web服务进行通信。 HTTP请求/帖子应该解决所有情况。无需实际进入TCP级别。

只是一般性的想法,希望它们有用。

答案 1 :(得分:0)

有许多消息队列技术都是Python友好的,可以很好地服务。我所知道的前两个是ActiveMQRabbitMQ,它们都适用于Python,另外我发现this comparison表明ActiveMQ目前(截至18个月前!)优于RabbitMQ