是否有任何现成的解决方案可以在网络服务器之间进行内部通信?

Is there any ready solution to communicate between web servers interrally?

我有一堆不同的 RESTful 服务 运行,它们被设计成尽可能独立(物理上或逻辑上)。但有时他们需要相互通信(如果可用)。只要它们是网络服务器,我就使用 http 从一个到另一个传递消息,并接收响应。

问题是,http 作为协议在这方面是否非常有效?至于每个请求都需要一个新的连接,我关心另一个解决方案,为高负载做好准备。

另一件事,假设我有 10 个服务 A 实例和 5 个 B 实例,并且有一个内部负载平衡器,所以当 A 询问 B 时,平衡器给他最可用的 B。从那时起,我有疑惑,if keep-alive 可能对这里有所帮助。

是否有用于此的生产就绪库?类似于pub/sub,当服务发布请求时,来自某些组的一些免费服务处理它并给出响应?或者说,当服务 B 拉取服务 A 时,B 想要在 A 周围停留一段时间以获取更多请求,然后搜索免费的。

UPD. 我正在使用 tornado 框架 (python),nginx 作为负载均衡器(并计划在未来)。

抱歉,如果这个问题太宽泛。

谢谢!

经过一些调查,我发现 RabbitMQ 是我的问题的解决方案。它带有代理和强大的管理工具。

使用 RPC I've implemented an asynchronous request-reply pattern through JSON-RPC,因此内部服务可以非常快速地相互通信。同一服务的多个实例可能附加到代理,并且请求循环。

此外,this 文章帮助我找到了如何做到这一点的想法。