RocketMQ的架构
集群本身沒有什么特殊之處,和kafka的整體架構類似,其中zookeeper替換成了NameServer。
在rocketmq的早版本(2.x)的時候,是沒有namesrv組件的,用的是zookeeper做分布式協調和服務發現,但是后期阿里數據根據實際業務需求進行改進和優化,自組研發了輕量級的namesrv,用于注冊Client服務與Broker的請求路由工作,namesrv上不做任何消息的位置存儲,?頻繁操作zookeeper的位置存儲數據會影響整體集群性能
RocketMQ由四部分組成?
1)Name Server 可集群部署,節點之間無任何信息同步。提供輕量級的服務發現和路由
2)Broker(消息中轉角色,負責存儲消息,轉發消息) 部署相對復雜,Broker 分為Master 與Slave,一個Master 可以對應多個Slave,但是一個Slave 只能對應一個Master,Master 與Slave 的對應關系通過指定相同的BrokerName,不同的BrokerId來定 義,BrokerId為0 表示Master,非0 表示Slave。Master 也可以部署多個。
3)Producer,生產者,擁有相同 Producer Group 的 Producer 組成一個集群, 與Name Server 集群中的其中一個節點(隨機選擇)建立長連接,定期從Name Server 取Topic 路由信息,并向提供Topic?服務的Master 建立長連接,且定時向Master 發送心跳。Producer 完全無狀態,可集群部署。
4)Consumer,消費者,接收消息進行消費的實例,擁有相同 Consumer Group 的 Consumer 組成一個集群,與Name Server 集群中的其中一個節點(隨機選擇)建立長連接,定期從Name Server 取Topic 路由信息,并向提供Topic 服務的Master、Slave 建立長連接,且定時向Master、Slave 發送心跳。Consumer既可以從Master 訂閱消息,也可以從Slave 訂閱消息,訂閱規則由Broker 配置決定。
要使用rocketmq,至少需要啟動兩個進程,nameserver、broker,前者是各種topic注冊中心,后者是真正的broker。
?
總結
以上是生活随笔為你收集整理的RocketMQ的架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RocketMQ的发展历史
- 下一篇: 单机环境RocketMQ的安装