消息中間件:談一談 RocketMQ 的技術架構
作者:技術大咖秀
RocketMQ 自阿里開源以來,在 Apache 下的孵化還不錯,現在很多互聯網公司都在生產環境下使用。當然也是各大技術廠商的面試要點。
RocketMQ 自阿里開源以來,在 Apache 下的孵化還不錯,現在很多互聯網公司都在生產環境下使用。當然也是各大技術廠商的面試要點。
技術架構

RocketMQ架構上主要分為四部分,如上圖所示:
- Producer:消息發布的角色,支持分布式集群方式部署。Producer通過MQ的負載均衡模塊選擇相應的Broker集群隊列進行消息投遞,投遞的過程支持快速失敗并且低延遲。
- Consumer:消息消費的角色,支持分布式集群方式部署。支持以push推,pull拉兩種模式對消息進行消費。同時也支持集群方式和廣播方式的消費,它提供實時消息訂閱機制,可以滿足大多數用戶的需求。
- NameServer:NameServer是一個非常簡單的Topic路由注冊中心,其角色類似Dubbo中的zookeeper,支持Broker的動態注冊與發現。主要包括兩個功能:Broker管理,NameServer接受Broker集群的注冊信息并且保存下來作為路由信息的基本數據。然后提供心跳檢測機制,檢查Broker是否還存活;路由信息管理,每個NameServer將保存關于Broker集群的整個路由信息和用于客戶端查詢的隊列信息。然后Producer和Conumser通過NameServer就可以知道整個Broker集群的路由信息,從而進行消息的投遞和消費。NameServer通常也是集群的方式部署,各實例間相互不進行信息通訊。Broker是向每一臺NameServer注冊自己的路由信息,所以每一個NameServer實例上面都保存一份完整的路由信息。當某個NameServer因某種原因下線了,Broker仍然可以向其它NameServer同步其路由信息,Producer,Consumer仍然可以動態感知Broker的路由的信息。
- BrokerServer:Broker主要負責消息的存儲、投遞和查詢以及服務高可用保證。
其中Broker,為了實現這些功能,包含了以下幾個重要子模塊。

- Remoting Module:整個Broker的實體,負責處理來自clients端的請求。
- Client Manager:負責管理客戶端(Producer/Consumer)和維護Consumer的Topic訂閱信息
- Store Service:提供方便簡單的API接口處理消息存儲到物理硬盤和查詢功能。
- HA Service:高可用服務,提供Master Broker 和 Slave Broker之間的數據同步功能。
- Index Service:根據特定的Message key對投遞到Broker的消息進行索引服務,以提供消息的快速查詢。
責任編輯:武曉燕
來源:
今日頭條