在两个nodejs应用程序之间进行通信

时间:2017-10-02 03:10:34

标签: node.js rest sockets tcp publish

我有三个(nodejs)进程P1,P2,P3。

  • P1的功能A完成其执行,它向P2发送一些数据。

  • P2执行其活动,其输出应发送到P3。

  • P3在输入上工作,向P1的功能B发送一些确认数据。

这三个都是不同的节点js应用程序,并在不同的服务器上运行(在同一个LAN中)。问题是what should be the communication mechanism between these processes.

三种选择似乎是可行的:

1)REST API(Express)

让所有进程都是Express REST API并使用http节点js包调用所需的函数

2)Pub / Sub

当P1完成工作时,它将输出作为消息发布到主题,P2成为订阅者并且onMessage P2进程执行。

3)TCP / IP

一种简单的TCP / IP服务器 - 客户端架构,其中P1成为服务器客户端,P2成为服务器。每当P1完成工作时,通过套接字发送输出。

所有这三个选项都用于多对一或多对多的通信,所以我猜可能会有很多不必要的开销,因为我的要求在进程之间只有一对一的通信。

我可以使用任何其他方法,或者这些最佳套装中的一种是困境。

请建议。

感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用mqtt协议。这是一个非常轻量级和快速的协议。在此协议中,您将获得发布者,订阅者和经纪人。 Publisher将通过mqtt broker在主题下向订阅者发送数据。它与Pub / Sub几乎相同。

MQTT Architecture

MQTT

注意:P1的功能A将发布数据,P2将订阅。 P2完成其活动后,它将向P3发布数据,P3将处于订阅模式。之后P3将发布确认,P1的功能B将订阅该主题。