日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的心跳發送到namesrv。

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

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

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

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


broker

來南下每個broker的組成吧

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

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

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

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

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


producer & consumer

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

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

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

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

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

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

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

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


通信方式

producer/consumer broker namesrv 通信方式

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


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

總結

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

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