RocketMQ全貌解析,阿里不愧是阿里

RocketMQ是一個來自阿里巴巴的分佈式消息中間件,於2012年開源,並在2017年正式成為Apache頂級項目。據瞭解,包括阿里雲上的消息產品以及收購的子公司在內,阿里集團的消息產品全線都運行在RocketMQ之上,並且最近幾年的雙十一大促中,RocketMQ都有搶眼表現。

談起消息系統中間件,就開源項目而言,戶的選擇其實很多,包括ActiveMQ、ZeroMQ、Kafka等。那到底RocketMQ又有什麼優勢?

Apache Kafka為日誌處理而生,目前從社區來看,發力重點在流計算,IoT等領域,和Apache Spark Streaming,Apache Flink,Apache Storm等一站式流計算平臺不同,它從Apache Samza這種輕量級方案汲取了養分,提供給用戶的是一個異步編程框架, 用戶基於類庫編程,不需要考慮分發,部署,調度等一系列傳統流計算框架帶來的繁瑣工作。這種輕量級的解決方案在一些日誌處理, ETL等場景更受大家歡迎。

如果是應對一些高併發,可靠以及可比較苛刻的場景,Apache RocketMQ是一個不錯的選擇。最近留意到一個有趣的現象,國內一些中大型規模的公司普遍部署了兩套消息引擎,一套選擇 Apache RocketMQ髒交易,數據分發等核心鏈路上,一套選擇Apache Kafka髒大數據等在線、離線分析鏈路上。無疑問,Kafka 目前在大數據生態建設這塊,確實具備定的先發優勢。

RocketMQ作為承載了阿里巴巴雙十一萬億級數據體量的消息引擎,在電商,金融領域的優勢也是比較明顯的。目前,國內很多金融領域的領軍企業在構建自己的分佈式金融體系時,也都不約而同地選擇了RocketMQ。

本學習文檔可以學習到:

  • 產品發展歷史
  • 專業術語
  • 消息中間件需要解決那些問題
  • RocketMQ Overview
  • RocketMQ 存儲特點
  • RocketMQ 關鍵特性
  • RocketMQ 消息過濾
  • RocketMQ 通信組件
  • RocketMQ 服務發現(Name Server)

一、前言

本學習文檔旨在描述 RocketMQ 的多個關鍵特性的實現原理,並對消息中間件遇到的各種問題進行總結,闡述RocketMQ 如何解決這些問題。文中主要引用了 JMS 規範與 CORBA Notification 規範,規範為我們設計系統指明瞭方向,但是仍有不少問題規範沒有提及,對於消息中間件又至關重要。RocketMQ 並不遵循任何規範,但是參考了各種規範與同類產品的設計思想。

二、產品發展歷史

  • Metaq(Metamorphosis) 1.x
  • Metaq 2.x
  • RocketMQ 3.x

三、專業術語

  • Producer
  • Consumer
  • Push Consumer
  • Pull Consumer
  • Producer Group
  • Consumer Group
  • Broker
  • 廣播消費
  • 集群消費
  • 順序消息
  • 普通順序消息
  • 嚴格順序消息
  • Message Queue

四、消息中間件需要解決那些問題

本節闡述消息中間件通常需要解決哪些問題,在解決這些問題當中會遇到什麼困難,RocketMQ 是否可以解決,規範中如何定義這些問題。

  • Publish/Subscribe
  • Message Priority
  • Message Order
  • Message Filter
  • Message Persistence
  • Message Reliabilty
  • Low Latency Messaging
  • At least Once
  • Exactly Only Once
  • Broker的Buffer滿了怎麼辦?
  • 回溯消費
  • 消息堆積
  • 分佈式事務
  • 定時消息
  • 消息重試

五、RocketMQ Overview

  • RocketMQ是什麼?
  • RocketMQ物理部署結構
  • RocketMQ邏輯部署結構
RocketMQ全貌解析,阿里不愧是阿里

RocketMQ全貌解析,阿里不愧是阿里

六、RocketMQ 存儲特點

  • 零拷貝原理
  • 文件系統
  • 數據存儲結構
  • 存儲目錄結構
  • 數據可靠性
RocketMQ全貌解析,阿里不愧是阿里

七、RocketMQ 關鍵特性

  • 單機支持1萬以上持久化序列
  • 刷盤策略
  • 消息查詢
  • 服務器消息過濾
  • 長輪詢 Pull
  • 順序消息
  • 事務消息
  • 發送消息負載均衡
  • 訂閱消息負載均衡
  • 單隊列並行消費
  • 發送定時消息
  • 消息消費失敗,定時重試
  • HA,同步雙鞋/異步複製
  • 單個JVM進程也能利用機器超大內存
  • 消息堆積問題解決辦法
RocketMQ全貌解析,阿里不愧是阿里

RocketMQ全貌解析,阿里不愧是阿里

八、RocketMQ 消息過濾

  • 簡單消息過濾
  • 高級消息過濾
RocketMQ全貌解析,阿里不愧是阿里

九、RocketMQ 通信組件

  • 網絡協議
  • 心跳處理
  • 連接複用
  • 超時連接
RocketMQ全貌解析,阿里不愧是阿里

寫在最後

在分佈式系統中,RocketMQ中間件是非常重要的組成,具有較高的技術門檻。同時,中間件相關的開源軟件眾多,適用場景各異,學習不易,

對於初學者,或者正在學習RocketMQ的朋友可以來@Java架構師丨蘇先生私信【中間件】即可獲取以上所有的學習資料的免費領取方式

冰凍三尺非一日之寒,掌握一門技術也不是一天兩天的事情,重在堅持,程序員,加油!


分享到:


相關文章: