簡介
RocketMQ是一款分佈式消息中間件,其設計基於主題的發佈與訂閱模式。功能包括消息發送、消息存儲、消息消費,參與的基本組件主要包括:消息發送者、消息服務器、消息消費、路由發現,分別對應RocketMQ集羣中包含的4個模塊: Producer、Broker、Consumer,Namesrv。
- Producer: 消息生產者,負責生產消息。
- Broker: 消息服務器,集羣最核心模塊,主要負責Topic消息存儲、消費者的消費位置管理(消費進度)。
- Consumer: 消息消費者,負責消費消息。
- Namesrv: 路由發現,存儲當前集羣所有Brokers信息、Topic跟Broker的對應關係。
架構
集羣工作流程如下:
- 啓動NameServer,作爲路由控制中心,等待Broker、Produer、Consumer連接。
- Broker啓動,向所有NameServer註冊,註冊信息包含當前Broker信息(IP+端口等)以及所有topic信息。註冊成功後,namesrv集羣中就有Topic跟Broker的映射關係,並定時發送心跳包。
- Producer發送消息之前先從NameServer獲取Broker服務器地址列表,然後根據負載算法從列表中選擇一臺消息服務器進行消息發送。
- Consumer跟Producer類似,先從NameServer獲取當前訂閱Topic存在哪些Broker上,然後直接跟Broker建立連接通道,開始消費消息。