什么是跨多处理rPc的好方法.过程?
我也愿意就以下架构设计建议:流程A*10,流程B*1.每个流程A必须检查流程B是否需要查询特定项目.
所以我正在考虑为所有As实现multiprocessing.Pipe()对象,然后让B监听它们中的每一个.但是,我意识到Multiprocessing.Pipe.recv是BLOCKING.所以我真的不知道如何做到这一点.(如果我使用一个循环来检查哪一个有通过另一端发送的东西,那么循环将被阻止).
有建议让我使用twisted,但是我不知道我应该如何在twisted中执行此操作:我是否应该从每个进程A创建一个defer对每个pipe.handler然后当recv()收到它继续的东西时并完成一定的例行程序?我知道个人扭曲与多处理不能很好地混合,但是我已经对扭曲进行了一些测试,这些测试是多处理实现的子进程,我想这次它是可行的.
有什么建议?
就个人而言,我总是倾向于倾向于基于套接字的RPC,因为当我需要扩展更多时,这使我从单个节点的限制中解脱出来.Twisted提供了一种处理基于套接字的通信的好方法,但当然还有其他替代方案.HTTP 1.1是一个很好的"传输"层,可用于此目的,因为它通常可以轻松地传递防火墙,如果您需要安全性,也可以轻松迁移到HTTPS.至于它上面的有效载荷,我可能有点偏心赞成JSON,但与XML或许多其他编码相比,我度过了一段美好时光.虽然我不得不承认,既然谷歌的protobufs是开源的,它们也很诱人(特别是因为它们是我们内部使用的,几乎完全 - 一个肯定习惯了它们;-).可惜没有针对HTTP的protobufs的特定RPC实现已经开源......但是为自己烹饪一个并不困难;-).