1兼砖、RocketMQ 簡(jiǎn)介:
?RocketMQ前身是阿里研發(fā)的一個(gè)隊(duì)列模型的消息中間件陈醒,后開源給apache基金會(huì)成為了apache的頂級(jí)開源項(xiàng)目,具有高性能或杠、高可靠、高實(shí)時(shí)宣蔚、分布式特點(diǎn)向抢。
2、RocketMQ基本架構(gòu):
如圖所示RocketMQ架構(gòu)上主要分為四部分:
Producer:
? ? ? ?充當(dāng)消息發(fā)布的角色胚委,支持分布式集群方式部署挟鸠。producer通過MQ的負(fù)載均衡模塊選擇相應(yīng)的Broker集群隊(duì)列進(jìn)行消息投遞。投遞的過程支持快速失敗并且低延遲亩冬。
Consumer:
? ? ? 充當(dāng)消息消費(fèi)者的角色艘希,支持分布式集群方式部署。支持以push推硅急,pull拉兩種模式對(duì)消息進(jìn)行消費(fèi)覆享。同時(shí)也支持集群方式和廣播形式的消費(fèi),它提供實(shí)時(shí)消息訂閱機(jī)制营袜,可以滿足大多數(shù)用戶的需求撒顿。
NameServer:
? ? ? NameServer是一個(gè)功能齊全的服務(wù)器,其角色類似dubbo中的zookeeper荚板,支持Broker的動(dòng)態(tài)注冊(cè)與發(fā)現(xiàn)凤壁。主要包括兩個(gè)功能:
? ? ?1吩屹、Broker管理。NameServer接受Broker集群的注冊(cè)信息并且保存下來(lái)作為路由信息的基本數(shù)據(jù)拧抖。然后提供心跳檢測(cè)機(jī)制煤搜,檢查Broker是否還存活。?
? ? 2?唧席、路由信息管理擦盾。每個(gè)NameServer將保存關(guān)于Broker集群的整個(gè)路由信息和用于客戶端查詢的隊(duì)列信息。然后Producer和Conumser通過NameServer就可以知道整個(gè)Broker集群的路由信息袱吆,從而進(jìn)行消息的投遞和消費(fèi)厌衙。
? ? ?NameServer通常也是集群的方式部署,各實(shí)例間相互不進(jìn)行信息通訊绞绒。Broker是向每一臺(tái)NameServer注冊(cè)自己的路由信息婶希,所以每一個(gè)NameServer實(shí)例上面都保存一份完整的路由信息。當(dāng)某個(gè)NameServer因某種原因下線了蓬衡,Broker仍然可以向其它NameServer同步其路由信息喻杈,Produce,Consumer仍然可以動(dòng)態(tài)感知Broker的路由的信息。
配置NameServer:
? ?代碼方式:producer.setNamesrvAddr("ip:port"); consumer.setNamesrvAddr("ip:port");多個(gè)實(shí)例的NameServer以";'分割狰晚。
? ?java 配置:rocketmq.namesrv.addr
? 操作系統(tǒng)環(huán)境變量:?NAMESRV_ADDR
? HTTP Endpoint.
Broker Server:
? ? broker主要負(fù)責(zé)消息的存儲(chǔ)筒饰、投遞和查詢以及服務(wù)高可用保證。為了實(shí)現(xiàn)這些功能broker包含了以下幾個(gè)重要子模塊壁晒。
? ?Remoting Module:整個(gè)broker的實(shí)體瓷们,負(fù)責(zé)處理來(lái)自clients端的請(qǐng)求。
? ?Client Manager:負(fù)責(zé)管理客戶端(Producer/Consumer)和維護(hù)Consumer的topic訂閱信息
? ??Store Service:提供方便簡(jiǎn)單的API接口處理消息存儲(chǔ)到物理硬盤和查詢功能秒咐。
? ??HA Service:高可用服務(wù)谬晕,提供master broker 和 slave broker之間的數(shù)據(jù)同步功能。
? ? Index Service:根據(jù)特定的Message key對(duì)投遞到broker的消息進(jìn)行索引服務(wù)携取,以提供消息的快速查詢攒钳。
以上的內(nèi)容只是對(duì)roketMQ進(jìn)行一些基本的入門簡(jiǎn)介,后面會(huì)有相關(guān)的文章對(duì)具體的內(nèi)容進(jìn)行更深入的討論雷滋,也歡迎大家提出寶貴的意見和發(fā)表自己的見解不撑。