考虑到可伸缩性、安全性或任何其他任意考虑,考虑在不同服务器之间分配应用程序的逻辑并不罕见。在这种情况下,在单独的模块或应用程序之间拥有可靠的通信通道非常重要。
实际案例可能如下所示:
- (服务器#1)您有一个数据库表,其中填满了需要处理的任务(以表条目的形式)。
- (服务器#2)您有一个仲裁器,它会一个一个地获取这些任务,以便以某种特定的方式处理它们。
- (服务器#3 -- #n)您有多个工作应用程序从仲裁器接收任务并将结果返回给它。
现在想象一下,一切都是用 Node.js 编程的。您希望工作服务器能够在需要更多资源时生成,并在处理负载较低时终止。创建工作节点时,它必须连接回仲裁器以发出信号,表明它已准备好接收任务。
有哪些可用选项可用于与仲裁器通信工作节点,以便仲裁器可以检测到新工作节点何时连接到它并且两者之间的数据可以开始流动。或者,换句话说,如何在两个远程 Node.js 应用程序之间创建可靠的全状态通信通道?