0

考虑到可伸缩性、安全性或任何其他任意考虑,考虑在不同服务器之间分配应用程序的逻辑并不罕见。在这种情况下,在单独的模块或应用程序之间拥有可靠的通信通道非常重要。

实际案例可能如下所示:

  1. (服务器#1)您有一个数据库表,其中填满了需要处理的任务(以表条目的形式)。
  2. (服务器#2)您有一个仲裁器,它会一个一个地获取这些任务,以便以某种特定的方式处理它们。
  3. (服务器#3 -- #n)您有多个工作应用程序从仲裁器接收任务并将结果返回给它。

现在想象一下,一切都是用 Node.js 编程的。您希望工作服务器能够在需要更多资源时生成,并在处理负载较低时终止。创建工作节点时,它必须连接回仲裁器以发出信号,表明它已准备好接收任务。

有哪些可用选项可用于与仲裁器通信工作节点,以便仲裁器可以检测到新工作节点何时连接到它并且两者之间的数据可以开始流动。或者,换句话说,如何在两个远程 Node.js 应用程序之间创建可靠的全状态通信通道?

4

2 回答 2

1

尽管这不应该变成消息技术之战,但另一个选择是 RabbitMQ。他们有关于工作队列远程过程调用 (rpc)的快速教程。

尽管这些教程是用 python 编写的,但它们仍然很容易理解(而且我相信通过谷歌搜索会在 github 上找到你的 Node 翻译)。

在您的情况下,Rabbit 将能够处理向特定工作人员发送消息,但是我认为您必须自己编写扩展逻辑。

于 2013-10-31T18:22:28.807 回答
0

zeromq是一个不错的选择。

于 2013-10-31T12:33:33.710 回答