跳至內容

ØMQ

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
ØMQ
開發者iMatix公司
當前版本
  • 4.3.5 (2023年10月9日;穩定版本)[1]
編輯維基數據鏈接
源代碼庫 編輯維基數據鏈接
編程語言C++
平台跨平台
類型消息隊列
許可協議LGPL with static linking exception
網站www.zeromq.org

ØMQ (也拼寫作ZeroMQ0MQZMQ)是一個為可伸縮的分布式或並發應用程序設計的高性能異步消息庫。它提供一個消息隊列, 但是與面向消息的中間件不同,ZeroMQ的運行不需要專門的消息代理message broker英語message broker)。該庫設計成常見的套接字風格的API

ZeroMQ是由iMatix公司和大量貢獻者組成的社群共同開發的。ZeroQ通過許多第三方軟件支持大部分流行的編程語言,從JavaPythonErlangHaskell

技術[編輯]

類庫提供一些套接字(對傳統Berkeley套接字Unix domain socket的泛化),每一個套接字可以代表一個端口之間的多對多英語many-to-many連接。以消息的粒度進行操作,套接字需要使用一種消息模式message pattern英語message pattern),然後專門為那種模式進行了優化。

基本的ZeroMQ模式有:

請求響應模式
將一組客戶端連接到一組服務器。這是一種遠程過程調用和任務分發模式。
發布/訂閱模式
將一組發布者連接到一組訂閱者。這是一種數據分發模式。
管道模式
以扇出/扇入模式連接節點,可以有多個步驟,可以有循環。這是一種並行的任務分發和收集模式。
排他對模式
在一個排他對中連接兩個套接字。 (這是一種高級的為某種用例而設計的低級別模式)

任何通過套接字的消息被看作不透明的數據。發送給訂閱者的消息可以自動地通過塊最開始的字符串進行過濾。ZeroMQ提供多種消息傳輸協議,包括TCPPGM(可靠的多播),進程間通信(IPC) 以及線程間通訊(ITC)。

由於內部線程模型,ZeroMQ的性能非常好,通過利用一種自動消息批處理技術,它甚至在吞吐量上超過了TCP的性能。[2][3]

ZeroMQ實現了ZMTP, ZeroMQ消息傳輸協議。[4] ZMTP定義了向後兼容性的規則,可擴展的安全機制,命令和消息分幀,連接元數據,以及其他傳輸層功能。不使用完整的ZeroMQ實現,而是直接實現ZMTP協議的項目不斷增加。[5]

歷史[編輯]

2010年3月30日,AMQP的最初設計者iMatix公司的首席執行官Pieter Hintjens宣布iMatix將退出AMQP工作組,而且為了簡單得多,快的多的ZeroMQ,將不支持 可能發布的AMQP/1.0[6][7]

2011年,歐洲核子研究組織 (CERN)調查了統一用於操作CERN加速器的中間件解決方案的方式,歐洲核子研究組織的研究比較了CORBAIceThrift,ZeroMQ, YAMI4,RTIQpid (AMQP) ,ZeroMQ得到了最高的分數。[3]

2012年3月,由於在項目控制權上的分歧,一些ZeroMQ的最初開發者建立了ZeroMQ的分支,Crossroads I/O. Crossroads I/O[8]計劃使用更常見的「仁慈獨裁者」模式,Martin Sustrik將充當仁慈獨裁者。[9]

2012年8月,Dongmin Yu宣布了他的純Java的ZeroMQ實現,JeroMQ.[10] 這激發了更多的ZeroMQ全本地化的移植,例如C#的NetMQ。[11]

2013年3月, Pieter Hintjens宣布了ZMTP線級協議的新的草案,為ZeroMQ提供了安全機制的可擴展性。[12]

參見[編輯]



參考文獻[編輯]

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

外部連結[編輯]