介紹:
要掌握Rocketmq,首先要了解Rocketmq的集羣架構原理。
上圖是一個rockemq集羣架構圖,根據這個圖讓我們來了解一下Rocketmq集羣原理:
NameSrv 路由中心集羣
負責保存broker topic,ip地址等集羣信息,提供路由註冊,發現,broker故障剔除等功能。nameSrv集羣中所有節點都保存了一樣的路由信息,彼此之間互不同通信。
Broker集羣
消息存儲和消費:broker集羣主要負責存儲消息,提供消息消費查詢功能;
路由註冊:所有broker都會向所有的namesrv節點註冊自己的路由信息;
主從複製:broker爲了保證高可用採用Master-Slave架構,Master節點負責寫消息,Slave節點負責同步消息,當Master節點負載過大時候,Slave也會對consumer消費者提供讀服務,分擔Master節點的壓力;
磁盤存儲:broker會把所有消息順序寫入pageCache,然後在刷入磁盤,這種方式大大提供IO寫性能。讀取消息使用mmap提高IO讀能力;
網絡通信:broker和namesrv,生產者,消費者之前網絡通信使用的是netty,netty底層使用的多路複用IO網絡模型,性能很高。
Producer生產者
生產者一般就是我們開發的應用程序,負責向broker發送消息;
producer會週期性的向broker 中的master節點發送心跳請求,broker 中的master節點也會保存producer的ip 地址等信息,
消費者rebalance的時候會應用到這些信息。
Consumer消費者
生產者一般就是我們開發的應用程序,負責從·broker拉取消息消費消息;
consumer也會週期性的向broker 中的master節點發送心跳請求,broker 中的master節點也會保存producer的ip 地址等信息,
消費者rebalance的時候會應用到這些信息。