ØMQ (也拼写作ZeroMQ0MQZMQ)是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库。它提供一个消息队列, 但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理message broker英语message broker)。该库设计成常见的套接字风格的API

ØMQ
开发者iMatix公司
当前版本4.3.4(2021年1月17日,​3年前​(2021-01-17
预览版本错误:没有参数​(
源代码库 编辑维基数据链接
编程语言C++
平台跨平台
类型消息队列
许可协议LGPL with static linking exception
网站www.zeromq.org

ZeroMQ是由iMatix公司和大量贡献者组成的社群共同开发的。ZeroQ通过许多第三方软件支持大部分流行的编程语言,从JavaPythonErlangHaskell

技术

类库提供一些套接字(对传统Berkeley套接字Unix domain socket的泛化),每一个套接字可以代表一个端口之间的多对多英语many-to-many连接。以消息的粒度进行操作,套接字需要使用一种消息模式message pattern英语message pattern),然后专门为那种模式进行了优化。

基本的ZeroMQ模式有:

请求响应模式
将一组客户端连接到一组服务器。这是一种远程过程调用和任务分发模式。
发布/订阅模式
将一组发布者连接到一组订阅者。这是一种数据分发模式。
管道模式
以扇出/扇入模式连接节点,可以有多个步骤,可以有循环。这是一种并行的任务分发和收集模式。
排他对模式
在一个排他对中连接两个套接字。 (这是一种高级的为某种用例而设计的低级别模式)

任何通过套接字的消息被看作不透明的数据。发送给订阅者的消息可以自动地通过块最开始的字符串进行过滤。ZeroMQ提供多种消息传输协议,包括TCPPGM(可靠的多播),进程间通信(IPC) 以及线程间通讯(ITC)。

由于内部线程模型,ZeroMQ的性能非常好,通过利用一种自动消息批处理技术,它甚至在吞吐量上超过了TCP的性能。[1][2]

ZeroMQ实现了ZMTP, ZeroMQ消息传输协议。[3] ZMTP定义了向后兼容性的规则,可扩展的安全机制,命令和消息分帧,连接元数据,以及其他传输层功能。不使用完整的ZeroMQ实现,而是直接实现ZMTP协议的项目不断增加。[4]

历史

2010年3月30日,AMQP的最初设计者iMatix公司的首席执行官Pieter Hintjens宣布iMatix将退出AMQP工作组,而且为了简单得多,快的多的ZeroMQ,将不支持 可能发布的AMQP/1.0[5][6]

2011年,欧洲核子研究组织 (CERN)调查了统一用于操作CERN加速器的中间件解决方案的方式,欧洲核子研究组织的研究比较了CORBAIceThrift,ZeroMQ, YAMI4,RTIQpid (AMQP) ,ZeroMQ得到了最高的分数。[2]

2012年3月,由于在项目控制权上的分歧,一些ZeroMQ的最初开发者建立了ZeroMQ的分支,Crossroads I/O. Crossroads I/O[7]计划使用更常见的“仁慈独裁者”模式,Martin Sustrik将充当仁慈独裁者。[8]

2012年8月,Dongmin Yu宣布了他的纯Java的ZeroMQ实现,JeroMQ.[9] 这激发了更多的ZeroMQ全本地化的移植,例如C#的NetMQ。[10]

2013年3月, Pieter Hintjens宣布了ZMTP线级协议的新的草案,为ZeroMQ提供了安全机制的可扩展性。[11]

参见



参考文献

  1. ^ How come ØMQ has higher throughput than TCP although it's built on top of TCP?. ZeroMQ FAQ. [2013-06-08]. (原始内容存档于2019-07-16). 
  2. ^ 2.0 2.1 Middleware Trends And Market Leaders 2011. [2013-06-08]. (原始内容存档于2020-11-03). 
  3. ^ ZeroMQ Message Transfer Protocol. [2013-06-08]. (原始内容存档于2019-11-22). 
  4. ^ GitHub Search: ZMTP. [2013-06-08]. (原始内容存档于2020-08-14). 
  5. ^ iMatix will end OpenAMQ support by 2011. openamq-dev maillist. [14 July 2012]. (原始内容存档于2012年10月10日). 
  6. ^ What is wrong with AMQP (and how to fix it). iMatix Corporation. [14 July 2012]. (原始内容存档于2012-07-17). 
  7. ^ Crossroads I/O. [14 July 2012]. (原始内容存档于2012年7月13日). 
  8. ^ ZeroMQ and Crossroads I/O: Forking over trademarks. LWN.net. [14 July 2012]. (原始内容存档于2022-03-05). 
  9. ^ jeromq - java pojo zeromq. zeromq-dev mailing list. [23 May 2013]. (原始内容存档于2013年7月31日). 
  10. ^ NetMQ. GitHub. [23 May 2013]. (原始内容存档于2021-09-18). 
  11. ^ Securing ZeroMQ: draft ZMTP v3.0 Protocol. Hintjens.com. [23 May 2013]. (原始内容存档于2022-02-23). 

外部链接