node.js - ZeroMQ 和 IPC 的区别

标签 node.js ipc zeromq inproc nanomsg

Q1:什么使用 ZeroMQ 向子进程发送消息与默认的进程间通信相比有什么区别?解释 here

Q2:对于与 child 沟通的直接过程,哪个会更合适? (更快)

Q3:文档说:Creates an IPC channel,它使用什么类型的IPCTCP?套接字?

最佳答案


在最开始的时候就说明一个很好的观点 - ZeroMQ 无经纪人


A1:使用ZeroMQ的区别发送消息 & IPC

嗯,这样说,ZeroMQ 专注于许多不同的好处,而不仅仅是发送消息和扩大规模的能力(两者都很有帮助)。

ZeroMQ引入( well Scaleable ) 正式沟通模式

这就是说,应用程序端的核心焦点是可以使用哪些 ZeroMQ 库模式原语来直接实现参与代理之间实际需要的行为模型(一个 PUB + 许多 SUB -s/many PUB -s + many cross-connected SUB -s )

如何编写更复杂的、特定于应用程序的信号平面(使用可用的 ZeroMQ 构建 block 行为原始套接字原型(prototype) + 设备 + 应用程序逻辑,为信号平面添加功能提供有限状态机或事务引擎) .

标准IPC提供一个愚蠢的基于 O/S 的服务,没有行为

这很好,如果在纯 O/S 上下文中理解(即“包含电池不是这种情况)。

然而,任何更高级别的消息传递支持和其他重要功能 (类似公平队列、循环调度、多路复用传输不可知服务组合在任何/所有{ inproc:// | ipc:// | tcp:// | pqm:// | ... }传输类、毫秒调整的多 channel 轮询器、零拷贝消息切换和许多其他智能功能)是自行设计/实现(这就是为什么 ZeroMQ 被放入游戏中的原因,不是必须这样做,不是吗?非常感谢,Martin SUSTRIK 和 Pieter HINTJENS'团队 )


最好的下一步是什么?

To see a bigger picture on this subject >>>包含更多论点、一张简单的信号平面图和一个指向 Pieter HINTJENS 必读书籍的直接链接


A2:更快? 如果有人给出一个简单的答案,我会担心。这取决于……很多……

有兴趣的妹子ZeroMQ , 一个 nanomsg ,检查来自 Martin SUSTRIK 的更轻量级框架 nanomsg.org >>> .

快,更快,最快...

关于最小开销的灵感(读作速度的高潜力) 零拷贝(读作有效的开销避免)阅读关于 inproc:// 用于线程间消息传递的传输类:


A3:它使用IPC .

IPC本身就是一个运输类。无需重新包装/对齐/组装/CRC/封装/分发|解码\CRC-recheck\demap...原始IPC -数据进入更高的抽象TCP -如果在 localhost 之间传输的数据包处理 IPC - channel ,是吗?

关于node.js - ZeroMQ 和 IPC 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681838/

相关文章:

node.js - 如何使用 NodeJS 创建图表?

mysql - 当我将 sails js 连接到 mysql 时出现错误( Node - v7.5.0)

c - 当等待进程(在信号量队列中)收到来自另一个进程的信号时会发生什么?

multithreading - 如何从clojure中的子进程执行非阻塞读取标准输出?

docker - 与 Docker 容器共享内存(Docker 版本 1.4.1)

filtering - ZeroMQ 主题过滤与 Pub/Sub(Java 绑定(bind))

sql - 过程数据库代码与多个数据库调用

javascript - FIREBASE admin sdk 不返回 promise ? Node JS

zeromq - ZMQ/0MQ如何实现多个发布者和订阅者?

c++ - 以 "almost always auto"样式初始化 ZeroMQ 2.2 消息要使用私有(private)构造函数