1、RocketMQ 簡介:
RocketMQ前身是阿里研發的一個隊列模型的消息中間件,后開源給apache基金會成為了apache的頂級開源項目,具有高性能、高可靠、高實時、分布式特點。
2、RocketMQ基本架構:

如圖所示RocketMQ架構上主要分為四部分:
Producer:
充當消息發布的角色,支持分布式集群方式部署。producer通過MQ的負載均衡模塊選擇相應的Broker集群隊列進行消息投遞。投遞的過程支持快速失敗並且低延遲。
Consumer:
充當消息消費者的角色,支持分布式集群方式部署。支持以push推,pull拉兩種模式對消息進行消費。同時也支持集群方式和廣播形式的消費,它提供實時消息訂閱機制,可以滿足大多數用戶的需求。
NameServer:
NameServer是一個功能齊全的服務器,其角色類似dubbo中的zookeeper,支持Broker的動態注冊與發現。主要包括兩個功能:
- Broker管理。NameServer接受Broker集群的注冊信息並且保存下來作為路由信息的基本數據。然后提供心跳檢測機制,檢查Broker是否還存活。
- 路由信息管理。每個NameServer將保存關於Broker集群的整個路由信息和用於客戶端查詢的隊列信息。然后Producer和Conumser通過NameServer就可以知道整個Broker集群的路由信息,從而進行消息的投遞和消費。
NameServer通常也是集群的方式部署,各實例間相互不進行信息通訊。Broker是向每一台NameServer注冊自己的路由信息,所以每一個NameServer實例上面都保存一份完整的路由信息。當某個NameServer因某種原因下線了,Broker仍然可以向其它NameServer同步其路由信息,Produce,Consumer仍然可以動態感知Broker的路由的信息。
配置NameServer:
代碼方式:producer.setNamesrvAddr("ip:port"); consumer.setNamesrvAddr("ip:port");多個實例的NameServer以";'分割。
java 配置:rocketmq.namesrv.addr
操作系統環境變量: NAMESRV_ADDR
HTTP Endpoint.
Broker Server:
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的消息進行索引服務,以提供消息的快速查詢。

以上的內容只是對roketMQ進行一些基本的入門簡介,后面會有相關的文章對具體的內容進行更深入的討論,也歡迎大家提出寶貴的意見和發表自己的見解。