首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZeroMQ与工控机的区别

ZeroMQ与工控机的区别
EN

Stack Overflow用户
提问于 2015-09-20 16:45:26
回答 2查看 11.1K关注 0票数 9

Q1:,与默认的进程间通信相比,使用ZeroMQ向子进程发送消息的确切区别是什么--解释这里

Q2:对于子通信的直接进程,哪个更合适?(更快)

Q3:医生们说:Creates an IPC channel,,它用的是什么样的IPCTCP?插座?

EN

回答 2

Stack Overflow用户

发布于 2015-09-20 18:28:32

使用像ZeroMQ这样的消息队列可以使您扩展到多台机器,而子进程通信只能是本地的,只能扩展到该机器上的硬件。

由于消息代理依赖于TCP,因此消息代理的速度要慢一些,因为子进程通信使用管道或标准I/O,这更快,因为它避免了TCP和网络堆栈的开销。虽然我会说这里的速度优势是可以忽略不计的,特别是当你计划扩展到多台机器时。

值得注意的是,ZeroMQ可以使用unix_sockets,并提供与child_process核心模块所提供的基本类似的其他形式的IPC。虽然它可能会更难使用。

也许,在需要跨多台计算机扩展之前,将ZeroMQ与unix_sockets或管道一起使用并不是个坏主意。

票数 2
EN

Stack Overflow用户

发布于 2021-07-15 09:35:22

在你所链接的案例中,我们讨论的是两个相互竞争的协议。一个是通用的(ZMQ),另一个是绑定到NodeJS的。引用关于IPC的文章中的话说,您链接到“以除process.send()以外的任何方式访问IPC通道fd,或使用IPC通道与非Node.js实例的子进程一起使用,都是不支持的。”

通常,IPC (进程间通信)可以引用许多不同的协议,包括ZMQ。ZMQ是一种IPC机制。还有其他较低级别的机制,如管道和UDP套接字。我使用了管道和UDP套接字,发现即使在简单的两方情况下,像ZMQ这样的更高级别的协议也几乎总是更好,因为管道和UDP有两个问题:

缓冲分块

缓冲:操作系统不断创建缓冲区来存储在进程之间发送的消息部分。这些缓冲区必须是刷新的。最后,您必须编写一堆很难正确处理的复杂代码,以同时刷新消息,并将消息读取并缝合在一起,部分发送消息。

分块:UDP的最大消息大小在500个到65000字节之间。当直接使用UDP时,您必须处理这些最大大小和消息块。ZMQ自动处理分块,您不需要对它进行修改。ZMQ中没有最大消息大小(在ZMQ的例子中,消息必须适合内存)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32681838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档