了解 ZeroMQ

Understanding ZeroMQ

因此,正如我在之前的 post 中所问,我希望能够使用不同语言编写的程序或函数能够在它们之间进行通信。

我最近遇到了 zeromq,我想弄清楚这是否对我有帮助,因为它提供了某种套接字。例如,zeromq 可以在用 python 编写的程序与用 C++ 编写的程序或函数之间交换数据(或传递参数),还是它的功能完全不同?

ZeroMQ 是套接字的抽象。它是跨平台的并且有很多语言绑定:我个人不知道任何没有 ZeroMQ 绑定的语言。

所以是的,您可以使用 ZeroMQ 在用 Python 编写的程序和用 C++ 编写的程序之间进行通信。

我建议阅读 zguide,因为它包含 很多 关于 ZeroMQ 的非常有用的信息。

PyZMQ 可以用作 Python 绑定,zmqpp for your C++ code. Note that for the C++ code you could also use cppzmq 或 zmq C API 直接。我建议使用 zmqpp 作为其更高级别并且(恕我直言)更易于使用。

A:哦,是的,这正是 ZeroMQnanomsg 框架的力量

这两个都不是sockets而是BEHAVIOURZero-* -- 一组勇敢的格言 S可扩展 F普通 C通信P模式F框架的设计、开发和微调是为了满足。

这将使您能够 assemble 您自己的快速智能消息传递层。

问:最好的下一步是什么?

不管你的第一印象如何,请忘记你所知道的关于套接字和多线程同步技巧的任何事情。

是的,宁愿忘记并在 "green field" 上建立你的新理解。

拿 Pieter HINTJENS 的 book "Code Connected, Volume 1"(可在 PDF 中访问)并花几周时间了解动机以及 Pieter 在这本 ZeroMQ 必读圣经中指出的典型错误。

代码片段危险,以防您没有得到或完全错过完整上下文更大的图景。

相信我。我无法给你更好的建议。你可以查看我在 ZeroMQ 和 nanomsg 上的其他帖子,看看有什么不同。

你一定会从这本书中受益,ZeroMQ 会给你许多你永远不会(相信我永远不会)准备好自己从头开始编程的能力。 力量太强大了(如果用得好的话).


nota bene

对于现实世界的进程间通信,需要注意一个小问题。各种 ZeroMQ 版本的互操作性。是的,ZeroMQ 的力量是巨大的,但是,有必要在您的消息传递层中保留内置的版本控制,以解决某些平台没有 "newer" 发布可用的更新路径的情况。进入这个问题,重新整合一个交易系统与一个组件,其中旧的 zmq.__version__ == 2.1.11 是必要的,而最近的版本远高于 14.x.y,以确保 100% 结束-到端向后兼容。

尽管如此,整体潜力如此巨大,坚持并完成工作是有意义的。 G/L 在那。