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

时间:2016-02-01 18:49:11

标签: python rest nginx tornado high-load

我有一堆不同的RESTful服务正在运行,它们的设计尽可能分开(物理上或逻辑上)。但有时他们需要彼此沟通(如果有的话)。只要它们是Web服务器,我就使用http将消息从一个发送到另一个,并接收响应。

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

另一件事,比如我有10个服务A实例,只有5个B实例,并且有一个内部负载均衡器,所以当A问B时,平衡器给他最多可用B.从那时起,我怀疑,如果keep-alive可能会有帮助。

这是否有适合生产的库?类似于pub/sub的东西,当服务发布请求时,以及来自某些组的一些免费服务处理它,并给出响应?或者说,当服务B提取服务A时,B希望在A处停留一段时间以获得更多请求,然后搜索免费服务。

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

对不起,如果这个问题太宽泛了。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

RabbitMQ

使用RPC我通过JSON-RPC实现了异步请求 - 回复模式,因此内部服务可以非常快速地相互通信。可以将多个相同服务的实例附加到代理,并且请求循环。

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