學習思路
- 名詞解釋
- 架構設計分析
- 網絡部署特點
- 消息發送流程分析
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、架構設計分析
架構圖
解釋:
- NameServer:類似於zookeeper註冊中心,存放Producer、Consumer、Broker的IP/Port以及Topic對應Broker等信息,與各個系統保持心跳,無狀態集羣部署
- Broker:接收Producer消息、存儲消息、查詢消息、推送Consumer消息,無狀態支持水平擴展
- Producer:與NameServer保持長連接,訂閱Topic對應Broker等信息,與Broker建立長連接發送消息
- Consumer:與NameServer保持長連接,訂閱Topic對應Broker等信息,與Broker建立長連接接收/拉取Broker消息進行消費,支持集羣/廣播模式
3、網絡部署特點
還是上圖
解釋:
- 第一步啓動NameServer,不依賴任何項目,啓動後等待Producer、Consumer、Broker註冊/訂閱,可無限水平擴展
- 第二步啓動Broker,依賴NameServer,啓動後向NameServer註冊自己的IP/Port並跟Broker建立長連接保持心跳,支持單Master、單Master多Slave、多Master多Slave部署
- 第三步新建Topic(指定Broker)或者在啓動Broker是設置自動創建Topic(生產不建議),向Broker註冊Topic和Broker關係
- 第四步啓動Producer,依賴NameServer,啓動後跟NameServer建立長連接,定時發送心跳,訂閱Broker信息(包含IP/Port、Topic和Broker關係)和指定Broker建立長連接定時發送心跳,選擇隊列發送消息
- 第五步啓動Consumer,依賴NameServer,啓動後跟NameServer建立長連接,定時發送心跳,訂閱Broker信息(包含IP/Port、Topic和Broker關係)和與Broker的Master、Slave建立長連接定時發送心跳,訂閱消息
4、消息發送流程分析
還是上圖
解釋:
- Broker啓動後將與Topic的關係等信息註冊到NameServer並與系統保持心跳定時同步配置
- Producer訂閱配置後與拉取的Broker建立長連接,推消息到指定Broker
- Broker接收消息後進行同步/異步刷盤
- Consumer訂閱配置後(確認Topic在哪個Broker上)與Broker建立長連接訂閱消息進行消費
公衆號主要記錄各種源碼、面試題、微服務技術棧,幫忙關注一波,非常感謝