我有三个 (nodejs) 进程 P1、P2、P3。
P1 的函数 A 完成其执行并将一些数据发送到 P2。
P2 执行其事件,其输出应发送到 P3。
P3 处理输入,将一些确认数据发送到 P1 的函数 B。
这三个都是不同的node js应用,运行在不同的服务器上(在同一个局域网)。问题是这些进程之间的通信机制应该是什么。
三个选项似乎是可行的:
1) REST API(快捷)
让所有进程成为Express REST API,使用http
node js包调用需要的函数
2) 发布/订阅
当 P1 完成工作时,它将输出作为消息发布到主题,P2 成为订阅者,onMessage
P2 进程执行。
3) TCP/IP
一个简单的 TCP/IP 服务器-客户端架构,其中 P1 成为服务器客户端,P2 作为服务器。每当 P1 完成工作时,通过套接字发送输出。
所有三个选项都用于多对一或多对多通信,所以我猜可能会有很多不必要的开销,因为我的要求只有进程之间的一对一通信。
是否有任何其他方法我可以使用,或者这些最适合的方法之一是困境。
请提出建议。
谢谢。
最佳答案
您可以使用 mqtt 协议(protocol)。这是一个非常轻量级和快速的协议(protocol)。在此协议(protocol)中,您将获得发布者、订阅者和经纪人。发布者将通过 mqtt broker 将数据发送给主题下的订阅者。它几乎与 Pub/Sub 相同。
注意:P1 的函数 A 将发布数据,P2 将订阅。 P2 完成其事件后,它将向 P3 发布数据,P3 将处于订阅模式。之后 P3 将发布确认,P1 的功能 B 将订阅该主题。
关于node.js - 两个nodejs应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46519001/