问题描述
莫宁克!
我需要设计,编写和实现由多个具有不同角色并运行不同服务的Unix服务器组成的系统。 该系统必须防弹,坚固且快速。 是的,我知道。 ;)由于我不知道如何完成此任务,因此我决定在离开设计阶段之前征询您的意见。 这是工作流的流动方式:
- 用户正在与网站进行交互,从而建立了服务需求
- 此需求正在存储(数据库?),并且有关中央数据库/队列中的新需求的某种消息正在发送至中央系统(集群)
- 中央系统接收需求并将信号发送到其他各种系统(集群)以执行其职责(部分需求的服务设置)
- 完成后,他们会向中央系统或网站发送消息,说明正在提供服务
现在,将这些请求存储在某种队列中并执行它们的现代,可靠,清洁和高效的方法是什么? 我应该发送一些信号,还是让所有子系统检查任何类型的队列/数据库以获取新数据? 该队列应该是什么,应该是数据库吗? 如何处理邮件? 我考虑过打开单个tcp连接并通过它发送数据,以及另一端触发命令/功能的命令,但仔细检查,必须有其他更好的方法。 所以我找到了Spring Python,它被批评为90年代年代。
我知道这是一个非常广泛的问题,但是我真的希望您可以帮助我将头放在该设计周围,而不要在这里做出愚蠢的事情:)
提前致谢!
1楼
为您提供一些一般性想法:您可以采用主-客户方法。 请求将被插入到主数据库中,并存储在数据库中。 主机知道每个客户端的状态(相同的数据库)。 每当有请求时,主服务器都会将其重定向到免费客户端。 客户端报告完成任务的时间(包括答案??,如果有的话),从而使其能够从主服务器接收新任务(这消除了对池的需求)。 可以使用网络服务进行通信。 HTTP请求/帖子应解决所有情况。 无需实际下降到TCP级别。
只是一般的想法,希望它们有用。
2楼
那里有许多消息队列技术,它们都是Python友好的,可以很好地发挥作用。 我知道的前两个是和 ,它们都可以在Python上很好地运行,而且我发现表明ActiveMQ当前(截至18个月前!)优于RabbitMQ。