RocketMQ綜述(未完成)

mingziday發表於2016-02-04

RocketMQ是一款分散式、佇列模型的訊息中介軟體,具有以下特點:

1.能夠保證嚴格的訊息順序 2.提供豐富的訊息拉取模式 3.高效的訂閱者水平擴充套件能力 4.實時的訊息訂閱機制 5.億級訊息堆積能力

RocketMQ網路部署

1、NameServer是一個幾乎無狀態的節點,可叢集部署,一般用zookeeper實現,用於管理分散式Topic資訊

NameServer維護資訊示例:
rocketMQ/brokers/myserver
rocketMQ/topics/epftopic4wolf
rocketMQ/topics/epftopic4tiger

2、Broker部署相對複雜,Broker分為Master與Slave,一個Master可以對應多個Slaver,但是一個Slaver只能對應一個Master,Master與Slaver的對應關係通過指定相同的BrokerName,不同的BrokerId來定義,BrokerId為0表示Master,非0表示Slaver。Master可以部署多個。
每個Broker與NameServer叢集中的所有節點建立長連線,定時註冊Topic資訊到所有的NameServer。

Broker需要配置:
broker.name=myserver
broker.group=99
執行RocketMq的server端程序,可以以war包的形式通過tomcat釋出

3、Producer與NameServer叢集中的其中一個節點(隨機選擇)建立長連線,定期從NameServer獲取Topic路由資訊
並向提供Topic服務的Master建立長連線,且定時向Master傳送心跳,把訊息傳送到Broker,由Broker排隊
Producer完全無狀態,可叢集部署,執行rocketMq的Client程式。

Producer需要配置:
name=EPFProducer
group=EPF

4、Consumer與NameServer叢集中的其中一個節點(隨機選擇)建立長連線,定期從NameServer取Topic路由資訊;
並向提供Topic服務的Master、Slaver建立長連線,且定時向Master、Slaver傳送心跳。Consumer即可從Master訂閱訊息,也可以從Slave訂閱訊息,訂閱規則由Broker配置決定。
從Broker獲取訊息,可以為push和poll兩種方式

Consumer需要配置:

name=EPFConsumer
group=EPF
Type=push

Producter程式設計

Consumer程式設計

 參考資料

http://alibaba.github.io/RocketMQ-docs/document/design/RocketMQ_design.pdf
http://www.uml.org.cn/zjjs/201504011.asp?artid=16152
http://www.uml.org.cn/zjjs/201504021.asp?artid=16162

相關文章