ØMQ
此條目需要更新。 (2018年10月18日) |
此條目過於依賴第一手來源。 (2010年7月) |
開發者 | iMatix公司 |
---|---|
目前版本 | 4.3.4(2021年1月17日 | )
預覽版本 | (錯誤:沒有參數 ) |
原始碼庫 | |
程式語言 | C++ |
平台 | 跨平台 |
類型 | 訊息佇列 |
許可協定 | LGPL with static linking exception |
網站 | www.zeromq.org |
ØMQ (也拼寫作ZeroMQ,0MQ或ZMQ)是一個為可伸縮的分散式或並行應用程式設計的高效能非同步訊息庫。它提供一個訊息佇列, 但是與訊息導向中介層不同,ZeroMQ的執行不需要專門的訊息代理(message broker)。該庫設計成常見的通訊端風格的API。
ZeroMQ是由iMatix公司和大量貢獻者組成的社群共同開發的。ZeroQ通過許多第三方軟件支援大部分流行的程式語言,從Java和Python到Erlang和Haskell。
技術
[編輯]類別館提供一些通訊端(對傳統Berkeley通訊端和Unix domain socket的泛化),每一個通訊端可以代表一個埠之間的多對多連接。以訊息的粒度進行操作,通訊端需要使用一種訊息模式(message pattern),然後專門為那種模式進行了最佳化。
基本的ZeroMQ模式有:
- 請求響應模式
- 將一組客戶端連接到一組伺服器。這是一種遠端程序呼叫和任務分發模式。
- 發佈/訂閱模式
- 將一組發佈者連接到一組訂閱者。這是一種數據分發模式。
- 管道模式
- 以扇出/扇入模式連接節點,可以有多個步驟,可以有迴圈。這是一種並列的任務分發和收集模式。
- 排他對模式
- 在一個排他對中連接兩個通訊端。 (這是一種進階的為某種用例而設計的低階別模式)
任何通過通訊端的訊息被看作不透明的數據塊。傳送給訂閱者的訊息可以自動地通過塊最開始的字串進行過濾。ZeroMQ提供多種訊息傳輸協定,包括TCP,PGM(可靠的多播),行程間通訊(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加速器的中介軟體解決方案的方式,歐洲核子研究組織的研究比較了CORBA,Ice,Thrift,ZeroMQ, YAMI4,RTI和 Qpid (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]
參見
[編輯]
參考文獻
[編輯]- ^ 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.0 2.1 Middleware Trends And Market Leaders 2011. [2013-06-08]. (原始內容存檔於2020-11-03).
- ^ ZeroMQ Message Transfer Protocol. [2013-06-08]. (原始內容存檔於2019-11-22).
- ^ GitHub Search: ZMTP. [2013-06-08]. (原始內容存檔於2020-08-14).
- ^ iMatix will end OpenAMQ support by 2011. openamq-dev maillist. [14 July 2012]. (原始內容存檔於2012年10月10日).
- ^ What is wrong with AMQP (and how to fix it). iMatix Corporation. [14 July 2012]. (原始內容存檔於2012-07-17).
- ^ Crossroads I/O. [14 July 2012]. (原始內容存檔於2012年7月13日).
- ^ ZeroMQ and Crossroads I/O: Forking over trademarks. LWN.net. [14 July 2012]. (原始內容存檔於2022-03-05).
- ^ jeromq - java pojo zeromq. zeromq-dev mailing list. [23 May 2013]. (原始內容存檔於2013年7月31日).
- ^ NetMQ. GitHub. [23 May 2013]. (原始內容存檔於2021-09-18).
- ^ Securing ZeroMQ: draft ZMTP v3.0 Protocol. Hintjens.com. [23 May 2013]. (原始內容存檔於2022-02-23).
外部連結
[編輯]- 官方網站
- ØMQ(ZeroMQ)簡介 (頁面存檔備份,存於互聯網檔案館). InfoQ。
- 0MQ: A new approach to messaging (頁面存檔備份,存於互聯網檔案館). Linux Weekly News.
- ZeroMQ is the Answer (頁面存檔備份,存於互聯網檔案館) (a talk at PHP UK conference 2012)
- ZeroMQ an introduction
- Selecting a Message Queue – AMQP or ZeroMQ
- Why ZeroMQ? (頁面存檔備份,存於互聯網檔案館) (introductory video)
- ZeroMQ: Modern & Fast Networking Stack (頁面存檔備份,存於互聯網檔案館) (overview with Ruby examples)
- ØMQ: The Theoretical Foundation (頁面存檔備份,存於互聯網檔案館)