我有三个(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完成工作时,通过套接字发送输出。
所有这三个选项都用于多对一或多对多的通信,所以我猜可能会有很多不必要的开销,因为我的要求在进程之间只有一对一的通信。
我可以使用任何其他方法,或者这些最佳套装中的一种是困境。
请建议。
感谢。
答案 0 :(得分:4)
您可以使用mqtt协议。这是一个非常轻量级和快速的协议。在此协议中,您将获得发布者,订阅者和经纪人。 Publisher将通过mqtt broker在主题下向订阅者发送数据。它与Pub / Sub几乎相同。
注意:P1的功能A将发布数据,P2将订阅。 P2完成其活动后,它将向P3发布数据,P3将处于订阅模式。之后P3将发布确认,P1的功能B将订阅该主题。