RocketMQ解析-架構原理

 學習思路

  1. 名詞解釋
  2. 架構設計分析
  3. 網絡部署特點
  4. 消息發送流程分析

1、名詞解釋

BrokerServer 消息中轉角色,用於接收客戶端消息,存儲,爲消費端消費消息做準備
Producer 消息生產者,發送消息到Broker
Consumer 消息消費者,接收/拉取消息進行消費
NameServer 類似於zookeeper註冊中心,用於接收Broker的註冊(IP/Port、Topic),Producer、Consumer對配置的訂閱
Topic 代表一類消息,每個主題包含多個消息,每個消息屬於一個主題,是訂閱消息的基本單位
Tag 消息標籤,每類消息的功能細分,訂閱的時候可細分功能分別處理
推送消息 Broker接收到消息後會主動推送到Consumer端進行消費,實時性比較高
拉取消息 Consumer主動拉取Broker的消息,主動權在應用,一旦拉取立馬消費
Producer端group 生產者集羣一個分組,只有在發送事務消息時用到,發送消息後Broker回調時發現Producer宕機可選擇分組下的其它Producer,告知提交或回滾
Consumer端group 消費者集羣一個分組,可保證消費者高可用,消息模式分爲:集羣模式、廣播模式
集羣模式 同一個分組的消費者集羣下,確保一個消息只被一個消費者消費
廣播模式 同一個分組的消費者集羣,一個消息被所有消費者都消費
嚴格順序消費 消費端消費消息嚴格按照發送的順序消費
事務消息 Producer事務跟發送消息要麼同時成功要麼同時失敗

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、架構設計分析

架構圖

 

 解釋:

  1. NameServer:類似於zookeeper註冊中心,存放Producer、Consumer、Broker的IP/Port以及Topic對應Broker等信息,與各個系統保持心跳,無狀態集羣部署
  2. Broker:接收Producer消息、存儲消息、查詢消息、推送Consumer消息,無狀態支持水平擴展
  3. Producer:與NameServer保持長連接,訂閱Topic對應Broker等信息,與Broker建立長連接發送消息
  4. Consumer:與NameServer保持長連接,訂閱Topic對應Broker等信息,與Broker建立長連接接收/拉取Broker消息進行消費,支持集羣/廣播模式

3、網絡部署特點

還是上圖

解釋:

  1. 第一步啓動NameServer,不依賴任何項目,啓動後等待Producer、Consumer、Broker註冊/訂閱,可無限水平擴展
  2. 第二步啓動Broker,依賴NameServer,啓動後向NameServer註冊自己的IP/Port並跟Broker建立長連接保持心跳,支持單Master、單Master多Slave、多Master多Slave部署
  3. 第三步新建Topic(指定Broker)或者在啓動Broker是設置自動創建Topic(生產不建議),向Broker註冊Topic和Broker關係
  4. 第四步啓動Producer,依賴NameServer,啓動後跟NameServer建立長連接,定時發送心跳,訂閱Broker信息(包含IP/Port、Topic和Broker關係)和指定Broker建立長連接定時發送心跳,選擇隊列發送消息
  5. 第五步啓動Consumer,依賴NameServer,啓動後跟NameServer建立長連接,定時發送心跳,訂閱Broker信息(包含IP/Port、Topic和Broker關係)和與Broker的Master、Slave建立長連接定時發送心跳,訂閱消息

4、消息發送流程分析

還是上圖

解釋:

  1. Broker啓動後將與Topic的關係等信息註冊到NameServer並與系統保持心跳定時同步配置
  2. Producer訂閱配置後與拉取的Broker建立長連接,推消息到指定Broker
  3. Broker接收消息後進行同步/異步刷盤
  4. Consumer訂閱配置後(確認Topic在哪個Broker上)與Broker建立長連接訂閱消息進行消費

公衆號主要記錄各種源碼、面試題、微服務技術棧,幫忙關注一波,非常感謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章