连接在不同服务器上运行的Node.js应用程序

时间:2013-10-31 10:19:19

标签: node.js network-programming socket.io

考虑到在不同服务器之间分发应用程序的逻辑,无论是因为可伸缩性,安全性还是任何其他任意问题,这种情况并不罕见。在这种情况下,在单独的模块或应用程序之间建立可靠的通信渠道非常重要。

实际案例可能如下所示:

  1. (服务器#1)您的数据库表填满了需要处理的任务(以表格形式)。
  2. (服务器#2)您有一个仲裁员可以逐个取出这些任务,以便以某种特定的方式处理它们。
  3. (服务器#3 - #n)您有多个工作程序应用程序从仲裁程序接收任务并将结果返回给它。
  4. 现在想象一切都是用Node.js编程的。您希望工作服务器能够在需要更多资源时生成,并在处理负载较低时终止。创建工作节点时,它必须连接回仲裁器以表示它已准备好接收任务。

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

2 个答案:

答案 0 :(得分:1)

尽管这不应该变成消息传递技术的战斗,但另一个选择是RabbitMQ。他们为worker queuesremote procedure calls (rpc)提供了快速教程。

虽然这些教程都在python中,但它们仍然很容易理解(我相信一些谷歌搜索会在github上找到你的节点翻译)。

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

答案 1 :(得分:0)

zeromq是一个很好的选择。