Apache RocketMQ

RocketMQ[2]是一個分佈式消息和流數據平台,具有低延遲、高性能、高可靠性、萬億級容量和靈活的可擴展性。RocketMQ是2012年阿里巴巴開源的第三代分佈式消息中間件,2016年11月21日,阿里巴巴向Apache軟件基金會捐贈了RocketMQ;第二年2月20日,Apache軟件基金會宣佈Apache RocketMQ成為頂級項目。

Apache RocketMQ
開發者Apache軟件基金會
首次發佈2012年,​12年前​(2012
當前版本
  • 5.1.0(2023年2月20日)[1]
編輯維基數據鏈接
原始碼庫 編輯維基數據鏈接
程式語言Java
作業系統跨平台
類型流處理, 消息代理
許可協議Apache許可證 2.0
網站rocketmq.apache.org

歷史

RocketMQ的發展可分為三個階段。[3]

第一代在數據傳輸中使用push模式,在數據存儲中使用關係型數據庫。它展現了消息傳遞的低延遲,並且滿足了具有分佈式事務的典型電子商務平台[4] 的用途。

第二代在數據傳輸中使用pull模式,在數據存儲中使用文件系統。它更注重穩定性和可靠性,並顯示出與第一代響應時間和Kafka日誌收集相當的性能。

第三代將pull模式與一些push操作相結合。它繼承了第一代和第二代的優點,並在並發性和大量數據場景中表現出高性能。

功能

各種消息傳遞解決方案之間已經進行了很多比較,眾所周知,當主題數量急劇增加時,RocketMQ的吞吐量下降幅度遠小於Kafka。[5]由於具有高性能、高可靠性和高實時性的特點,RocketMQ與其他協議組件在MQTT等各種消息場景中的結合也越來越多。[6]

客戶端SDK 協議和規範 有序消息 計劃消息 批量消息 廣播消息 消息過濾器
Java,C++,Python,Go,Node.Js Pull模式,支持TCP,JMS,OpenMessaging 確保嚴格的消息排序,並可以優雅地擴展 支持 支持同步模式以避免的消息損失 支持 支持基於SQL92的屬性過濾器表達式
伺服器觸發的重傳遞 消息儲存 消息追溯 消息優先權 高可用性和故障轉移 消息跟蹤 配置
支持 高性能和低延遲的文件存儲 支持時間戳和偏移量兩種表示 不支持 支持Master-Slave模型,不需要其他組件 支持 開箱即用,用戶只需要注意幾個配置

架構

 

RocketMQ由四部分組成:命名伺服器(Name Server)、代理(Broker)、生產者(Producer)和消費者(Consumer),其中每一個都可以水平擴展而沒有單點故障,如上圖所示。

命名伺服器集群

命名伺服器集群是用於服務發現的輕量級組件,它們可用於讀取和寫入路由信息。每個命名伺服器可以記錄全局信息,並支持快速存儲擴展。

代理集群

代理集群使用輕量級主題(topic)和隊列(queue)機制來管理數據存儲。為了實現容錯,代理提供2份或3份數據。客戶端可以在Push和Pull模型中獲取消息。此外,還支持災難恢復和豐富的指標統計信息。

生產者集群

生產者(Producer)可以分佈式部署,從生產者到代理的消息可以通過多路徑進行平衡。此外,還支持快速故障恢復和低延遲。

消費者集群

消費者也可以在Push和Pull模型中進行分佈式部署,他們可以實時訂閱消息,以集群為單位消費消息,同時還支持消息廣播。

應用

Apache RocketMQ至少可以應用到以下五個方面:

  • 異構系統的集成;
  • 應用程式之間的分離;
  • 在事件驅動機制和複雜事件架構模型中的骨幹;
  • 數據複製渠道;
  • 與流計算引擎集成。

社區維護

RocketMQ團隊為活躍社區做了很多工作。聚會、研討會、ApacheCon和Code Marathon定期在北京、深圳、杭州等地舉行,以吸引新的貢獻者和提交者。OpenMessaging基準測試套件目前可用於RocketMQ,它使RocketMQ與分佈式消息傳遞的全球標準保持同步。[7]對於版本管理,採用了一系列標準化的軟件開發過程。最新版本是4.2.0,4.3.0即將推出。可在此處頁面存檔備份,存於互聯網檔案館)獲取更多信息。

獲獎

2016年度最受歡迎中國開源軟件獎頁面存檔備份,存於互聯網檔案館

2017年度最受歡迎中國開源軟件獎頁面存檔備份,存於互聯網檔案館

第12次中日韓(中國-日本-韓國)開源軟件優秀技術獎頁面存檔備份,存於互聯網檔案館

2018年度最受歡迎中國開源軟件獎頁面存檔備份,存於互聯網檔案館

參見

參考文獻

  1. ^ Release 5.1.0. 2023年2月20日 [2023年3月8日]. 
  2. ^ apache/rocketmq. GitHub. [2018-05-25]. (原始內容存檔於2019-08-01) (英語). 
  3. ^ From Alibaba to Apache: RocketMQ’s Past, Present, and Future. InfoQ. [2018-06-26]. (原始內容存檔於2018-06-19). 
  4. ^ Toward a General Distributed Messaging Framework for Online Transaction Processing Applications - IEEE Journals & Magazine. ieeexplore.ieee.org. [2018-06-26]. (原始內容存檔於2018-06-26) (美國英語). 
  5. ^ Cloud, Alibaba. Kafka vs. RocketMQ- Multiple Topic Stress Test Results. Medium. 2018-01-04 [2018-07-08]. (原始內容存檔於2018-07-08). 
  6. ^ A MQTT Protocol Message Push Server Based on RocketMQ - IEEE Conference Publication. ieeexplore.ieee.org. [2018-06-26]. (原始內容存檔於2018-06-19) (美國英語). 
  7. ^ The OpenMessaging Benchmark Framework. openmessaging.cloud. [2018-07-08]. (原始內容存檔於2018-06-25). 

外部連結