消息隊列——rocketmq——簡介與架構

目錄

一、Rocketmq簡介:

二、Rocketmq整體結構:


一、Rocketmq簡介:

RocketMQ是一款分佈式、隊列模型的消息中間件,是阿里巴巴集團自主研發的專業消息中間件,借鑑參考了JMS規範的MQ實現,更參考了優秀的開源消息中間件kafka,實現了業務消峯、分佈式事務的優秀框架。其底層代碼編寫清晰優秀,採用Netty NIO框架進行數據通信,摒棄了Zookeeper,內部使用更輕量級的NameServer進行網絡路由,提高服務性能,並且支持消息失敗重試機制。天然支持集羣模型,消費者負載均衡、水平擴展能力,支持廣播模式和集羣模式。採用零拷貝的原理、順序寫盤、支持億級消息堆積能力。提供豐富的消息機制,如順序消息、事務消息等。

產品基於高可用分佈式集羣技術,提供消息訂閱和發佈、消息軌跡查詢、定時(延時)消息、資源統計、監控報警等一系列消息雲服務,是企業級互聯網架構的核心產品。

二、Rocketmq整體結構:

Rocketmq的整體可以分成4個角色,分別是:Producer,Consumer,Broker以及NameServer。

NameServer:可以理解爲是消息隊列的協調者,Broker向它註冊路由信息,同時Client向其獲取路由信息,如果使用過Zookeeper,就比較容易理解了,但是功能比Zookeeper弱;NameServer本身是沒有狀態的,並且多個NameServer直接並沒有通信,可以橫向擴展多臺,Broker會和每一臺NameServer建立長連接;

Broker:broker是RocketMQ的核心,提供了消息的接收,存儲,拉取等功能,一般都需要保證Broker的高可用,所以會配置Broker Slave,當Master掛掉之後,Consumer然後可以消費Slave;Broker分爲Master和Slave,一個Master可以對應多個Slave,Master與Slave的對應關係通過指定相同的BrokerName,不同的BrokerId來定義,BrokerId爲0表示Master,非0表示Slave;

Producer:消息隊列的生產者,需要與NameServer建立連接,從NameServer獲取Topic路由信息,並向提供Topic服務的Broker Master建立連接;Producer無狀態,看集羣部署;

Consumer:消息隊列的消費者,同樣與NameServer建立連接,從NameServer獲取Topic路由信息,並向提供Topic服務的Broker Master,Slave建立連接;

Topic和Message Queue:字面意思就是主題,用來區分不同類型的消息,發送和接收消息前都需要先創建Topic,針對Topic來發送和接收消息,爲了提高性能和吞吐量,引入了Message Queue,一個Topic可以設置一個或多個Message Queue,有點類似kafka的分區(Partition),這樣消息就可以並行往各個Message Queue發送消息,消費者也可以並行的從多個Message Queue讀取消息;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章