RocketMQ 介紹及核心概念

RocketMQ 是阿里巴巴開源的分布式消息中間件。

RocketMQ 特點

  • 是一個隊列模型的消息中間件,具有高性能、高可靠、高實時、分布式等特點
  • Producer、Consumer、隊列都可以分布式
  • Producer 向一些隊列輪流發送消息,隊列集合稱為 Topic,Consumer 如果做廣播消費,則一個 Consumer 實例消費這個 Topic 對應的所有隊列,如果做集群消費,則多個 Consumer 實例平均消費這個 Topic 對應的隊列集合
  • 能夠保證嚴格的消息順序
  • 支持拉(pull)和推(push)兩種消息模式
  • 高效的訂閱者水平擴展能力
  • 實時的消息訂閱機制
  • 億級消息堆積能力
  • 支持多種消息協議,如 JMS、OpenMessaging 等
  • 較少的依賴

RocketMQ 核心概念

  • Producer
    消息生產者,將業務系統生成的消息發送給消息代理(Broker),RocketMQ 提供了多種發送消息的模式:同步(synchronous)、異步(asynchronous)和單向(one-way)。

  • Producer Group
    消息生產者組,具有相同角色的消息生產者組合在一起,相同角色可以理解為生產同一類消息。

  • Consumer
    消息消費者,從消息代理(Broker)獲取消息并將其提供給應用程序。又可以根據消息獲取方式分為:
    (1) Pull Consumer
    積極主動地從消息代理(Broker)中拉取消息,一旦批量消息被拉出,用戶應用便啟動消息。
    (2) Push Consumer
    將拉動消息、消費進度和其它維護工作封裝起來,留下一個回調接口給最終用戶實現,這個接口在消息到達時會被執行。

  • Consumer Group
    消息消費者組,同消息生產者組類似,將具有相同角色的消息消費者組合在一起,相同角色可以理解為消費同一類消息。

  • Topic
    Topic 是消息的邏輯分類。

  • Message
    Message 是發送的信息載體,Message 必須指定 Topic,可以類比信件地址。Message 有一個可選的 Tag 設置便于過濾消息,還可以添加額外的鍵值對。

  • Message Queue
    Topic 會被分為一個或多個 Message Queue

  • Tag
    Tag 是 Topic 的進一步細分,為用戶提供額外的靈活性。同一業務不同目的的消息可以擁有相同的 Topic 和不同的 Tag。

  • Broker
    Broker 是 RocketMQ 系統主要組件,接收來自消息生產者的消息,存儲這些消息并為消息消費者拉動這些消息做準備,也存儲消息相關元數據。

  • Name Server
    Name Server 為消息生產者和消費者提供路由信息。

  • Message Model
    消息模型:集群(Clustering)和廣播(Broadcasting)

  • Message Order
    消息順序:順序(Orderly)和并發(Concurrently)

RocketMQ 架構

此圖來自:http://rocketmq.apache.org/docs/rmq-arc/

RocketMQ 架構圖中展示了四個集群:

  • NameServer 集群
    提供輕量級的服務發現及路由,每個 NameServer 記錄完整的路由信息,提供相應的讀寫服務,支持快速存儲擴展。有些其它開源中間件使用 ZooKeeper 實現服務發現及路由功能,如 Apache Kafka。
    NameServer是一個功能齊全的服務器,主要包含兩個功能:
    (1) Broker 管理,接收來自 Broker 集群的注冊請求,提供心跳機制檢測 Broker 是否存活
    (2) 路由管理,每個 NameServer 持有全部有關 Broker 集群和客戶端請求隊列的路由信息

  • Broker 集群
    通過提供輕量級的 Topic 和Queue 機制處理消息存儲。同時支持推(Push)和拉(Pull)兩種模型,包含容錯機制。提供強大的峰值填充和以原始時間順序累積數千億條消息的能力。此外還提供災難恢復,豐富的指標統計數據和警報機制,這些都是傳統的消息系統缺乏的。
    Broker 有幾個重要的子模塊:
    (1) 遠程處理模塊,Broker 入口,處理來自客戶端的請求
    (2) 客戶端管理,管理客戶端(包括消息生產者和消費者),維護消費者的主題訂閱
    (3) 存儲服務,提供在物理硬盤上存儲和查詢消息的簡單 API
    (4) HA 服務,提供主從 Broker 間數據同步
    (5) 索引服務,通過指定鍵為消息建立索引并提供快速消息查詢

  • Producer 集群
    消息生產者支持分布式部署,分布式生產者通過多種負載均衡模式向 Broker 集群發送消息。

  • Consumer 集群
    消息消費者也支持 Push 和 Pull 模型的分布式部署,還支持集群消費和消息廣播。提供了實時的消息訂閱機制,可以滿足大多數消費者的需求。

有關架構圖中集群間交互方式的說明:
(1) Broker Master 和 Broker Slave 是主從結構,會執行數據同步 Data Sync
(2) 每個 Broker 與 NameServer 集群中所有節點建立長連接,定時注冊 Topic 信息到所有 NameServer
(3) Producer 與 NameServer 集群中的其中一個節點(隨機)建立長連接,定期從 NameServer 獲取 Topic 路由信息,并與提供 Topic 服務的 Broker Master 建立長連接,定時向 Broker 發送心跳
(4) Producer 只能將消息發送到 Broker Master,但是 Consumer 同時和提供 Topic 服務的 Master 和 Slave 建立長連接,既可以從 Master 訂閱消息,也可以從 Slave 訂閱消息。

有關 RocketMQ 的更多資料可以參看:
Apache RocketMQ
RocketMQ on Github
阿里中間件團隊博客之十分鐘入門 RocketMQ

下一篇:RocketMQ 安裝部署及運行

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容