热门问题
时间线
聊天
视角
Apache RocketMQ
来自维基百科,自由的百科全书
Remove ads
RocketMQ[2]是一個分布式消息和流數據平台,具有低延遲、高性能、高可靠性、萬億級容量和靈活的可擴展性。RocketMQ是2012年阿里巴巴開源的第三代分布式消息中間件,2016年11月21日,阿里巴巴向Apache軟體基金會捐贈了RocketMQ;第二年2月20日,Apache軟體基金會宣布Apache RocketMQ成為頂級項目。
歷史
RocketMQ的發展可分為三個階段。[3]
第一代在數據傳輸中使用push模式,在數據存儲中使用關係型資料庫。它展現了消息傳遞的低延遲,並且滿足了具有分布式事務的典型電子商務平台[4] 的用途。
第二代在數據傳輸中使用pull模式,在數據存儲中使用文件系統。它更注重穩定性和可靠性,並顯示出與第一代響應時間和Kafka日誌收集相當的性能。
第三代將pull模式與一些push操作相結合。它繼承了第一代和第二代的優點,並在並發性和大量數據場景中表現出高性能。
功能
各種消息傳遞解決方案之間已經進行了很多比較,眾所周知,當主題數量急劇增加時,RocketMQ的吞吐量下降幅度遠小於Kafka。[5]由於具有高性能、高可靠性和高實時性的特點,RocketMQ與其他協議組件在MQTT等各種消息場景中的結合也越來越多。[6]
Remove ads
架構
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年度最受歡迎中國開源軟體獎(頁面存檔備份,存於網際網路檔案館)
參見
- Apache ActiveMQ
- Apache Flink
- Apache Qpid
- Apache Samza
- Apache Spark Streaming
- Data Distribution Service
- Enterprise Integration Patterns
- Enterprise messaging system
- Streaming analytics
- Event-driven SOA
- Message-oriented middleware
- Service-oriented architecture
- StormMQ
- Apache Kafka
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads