日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读

發(fā)布時間:2025/3/21 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Rocketmq整體架構
    • namesrv
    • broker
    • producer & consumer
  • 通信方式


Rocketmq整體架構

RocketMQ-初體驗RocketMQ(01)_RocketMQ初體驗中 對 RocketMQ 架構圖做了一個大體的介紹

接下來,我們再細說一下RocketMQ的架構

如上圖

整體由4部分組成

  • namesrv
  • broker
  • producer
  • consumer

namesrv

當broker服務啟動后,會向namesrv注冊信息,比如broker中的 主題、消費偏移量、隊列、ip、端口等,由broker的心跳發(fā)送到namesrv。

broker cluster中的每一個節(jié)點都會注冊到namesrv上。

比如 你有4個broker節(jié)點,2個namesrv,那么注冊如下

這種情況的話,即使一個namesrv節(jié)點掛了,剩下的一個namesrv節(jié)點仍然包含所有的broker信息。

需要注意的是: namesrv是無狀態(tài)的, namesrv之間不會相互通信,跟zk是不一樣的。一個namesrv掛了,不會影響另外一個namesrv,這倆namesrv是沒有關聯的。


broker

來南下每個broker的組成吧

每一個broker節(jié)點 ,儲存消息,都會對應一個commitlog , commitlog 負責存儲真實的消息的內容。

broker中的每個topic , 如果不設置的話, 默認創(chuàng)建4個隊列, 隊列編號 0 , 1 ,2 , 3. 每個隊列都會對應一個持久化文件 。

當producer向broker中的topic發(fā)送消息的時候, 如果發(fā)現隊列沒有創(chuàng)建持久化文件,會自動創(chuàng)建。 然后該隊列的持久化信息都會存放在該持久化文件中。

每個broker下面會創(chuàng)建一個consumerOffset.json文件. 這個json文件用來記錄當前你消費節(jié)點已經消費的數據位置,即消費的偏移量。這個也是需要持久化的。 這個偏移量的來源 是 consumer 來上報的。(如下圖)

consumer從broker中拉取消息后,要進行消費,消費了多多少消息,要把消費這些對應的這些偏移量上報到broker上去。 主要是為了什么呢? ---->最大可能的避免消息重復的推送。


producer & consumer

Q: producer & consumer 到底選擇跟哪個broker去連接,去消費哪個broker中的消息?

A: producer & consumer也是無狀態(tài)的,每一個producer之間 ,每一個consumer之間都不會通信, 每個producer和consumer內部都有自己的一套負載均衡的算法 ,默認的選擇策略: 已發(fā)送的消息數量對queuecount取mod .

消費者的兩種消費模式主要有兩種: 推跟拉

  • 拉取式消費(Pull Consumer):Consumer消費的一種類型,應用通常主動調用Consumer的拉消息方法從Broker服務器拉消息、主動權由應用控制。一旦獲取了批量消息,應用就會啟動消費過程。

  • 推動式消費(Push Consumer):Consumer消費的一種類型,該模式下Broker收到數據后會主動推送給消費端,該消費模式一般實時性較高。

pull的方式,由客戶端來主動獲取,通過定時任務或者需要的時候從broker端獲取,這種方式用的比較少。 如果消息量比較少, 堆積也不會太多,對安全性要求不高的應用,可以考慮。

與此對應的另外一種push方式:

push的方式,在RocketMQ中其實也是基于pull模式的一個深度封裝,consumer對broker進行一個長輪詢,一直監(jiān)聽broker中的數據,就好像是broker主動推送給consumer似的。


通信方式

producer/consumer broker namesrv 通信方式

producer/consumer 給 broker發(fā)送消息/消費消息,或者從 namesrv拉取消息 , 通信是基于netty的方式,優(yōu)先選用epoll方式,如果操作系統(tǒng)不支持epoll的話,會選擇NIO。


《新程序員》:云原生和全面數字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。