【问题标题】:Is there any ready solution to communicate between web servers interrally?是否有任何现成的解决方案可以在 Web 服务器之间进行通信?
【发布时间】:2016-05-10 08:18:45
【问题描述】:

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

问题是,http 作为协议在这方面是否非常有效?就每个请求都需要新连接而言,我担心另一种解决方案,准备好应对高负载。

另一件事,假设我有 10 个服务 A 实例,而只有 5 个 B 实例,并且有一个内部负载均衡器,所以当 A 询问 B 时,均衡器给了他最可用的 B。从那时起,我有疑问,如果keep-alive 在这里可能会有所帮助。

是否有可用于生产的库?类似于pub/sub,当服务发布请求时,某些组的一些免费服务处理它,并给出响应?或者说,当服务 B 拉动服务 A 时,B 希望在 A 周围停留一段时间,再请求几个请求,然后再寻找空闲的。

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

抱歉,这个问题太宽泛了。

谢谢!

【问题讨论】:

  • 这个问题太宽泛了。您能否通过添加服务器和您正在使用的技术来缩小范围?
  • @CássioMazzochiMolin 抱歉,更新了问题。
  • 这一个至少有三个不同的问题。当您将其划分为特定的部分时,您可能会得到更好的响应

标签: python rest nginx tornado high-load


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2015-01-15
    • 2013-09-12
    • 1970-01-01
    • 2011-09-16
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多