node.js - 两个nodejs应用程序之间的通信

标签 node.js rest sockets tcp publish

我有三个 (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 相同。

MQTT Architecture

MQTT

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

关于node.js - 两个nodejs应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46519001/

相关文章:

java - 如何使用 Executor 创建 Jersey 2 客户端

java - 关闭 Input/OutputStream 和直接关闭 Socket 有什么区别?

qt - 从 C 函数向 QTextEdit 框写入文本

c++ - 如何同时使用 2 个套接字 PF_INET 和 PF_PACKET?

node.js - Node.js 中的错误 : Can't set headers after they are sent.

node.js - '类型错误: validator is not a function' after installing and requiring express-validator

javascript - 从 angularjs 调用 REST 服务时本地主机上的 CORS 问题

javascript - 如何在条件语句中结束 emitter.on

node.js - Nodejs Sharp 图像调整大小并上传到 S3 超时

java - RestEasy @Path 正则表达式问题