一、RocketMQ 簡介:java
RocketMQ前身是阿里研發的一個隊列模型的消息中間件,後開源給apache基金會成爲了apache的頂級開源項目,具備高性能、高可靠、高實時、分佈式特色。apache
二、RocketMQ基本架構:服務器
如圖所示RocketMQ架構上主要分爲四部分:架構
Producer:負載均衡
充當消息發佈的角色,支持分佈式集羣方式部署。producer經過MQ的負載均衡模塊選擇相應的Broker集羣隊列進行消息投遞。投遞的過程支持快速失敗而且低延遲。分佈式
Consumer:性能
充當消息消費者的角色,支持分佈式集羣方式部署。支持以push推,pull拉兩種模式對消息進行消費。同時也支持集羣方式和廣播形式的消費,它提供實時消息訂閱機制,能夠知足大多數用戶的需求。操作系統
NameServer:orm
NameServer是一個功能齊全的服務器,其角色相似dubbo中的zookeeper,支持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進行一些基本的入門簡介,後面會有相關的文章對具體的內容進行更深刻的討論,也歡迎你們提出寶貴的意見和發表本身的看法。