溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的

發(fā)布時(shí)間:2021-12-17 14:21:44 來(lái)源:億速云 閱讀:223 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的”這篇文章吧。

一、消息存儲(chǔ)整體架構(gòu)

一個(gè)broker下所有topic的消息都順序存儲(chǔ)在同一個(gè)數(shù)據(jù)日志文件(commit log file)中。同時(shí)broker還維護(hù)了一個(gè)索引文件(index file)記錄了msg key的反向索引關(guān)系,用于從key查找所有關(guān)聯(lián)的msgs。對(duì)于消費(fèi)端,broker會(huì)為每個(gè)topic下的子隊(duì)列創(chuàng)建一個(gè)邏輯消費(fèi)隊(duì)列(ConsumeQueue),ConsumeQueue中存儲(chǔ)的元素具有固定的20字節(jié)的長(zhǎng)度,是一個(gè)指向commitlog中消息實(shí)體的指針。每個(gè)consumer的消費(fèi)進(jìn)度offset本質(zhì)上就是ConsumeQueue中元素的index,能夠通過(guò)commitlog offset獲得具體的消息體。

broker在接收到producer發(fā)送的消息時(shí),首先會(huì)把消息添加到commitlog文件的末尾,通過(guò)同步或者異步的方式刷盤。后續(xù)會(huì)有一個(gè)ReputMessageService的線程異步構(gòu)建ConsumeQueue以及IndexFile。核心的存儲(chǔ)文件如下圖:

RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的

二、存儲(chǔ)模型層次結(jié)構(gòu)

broker的消息存儲(chǔ)架構(gòu)按依賴關(guān)系可以劃分為以下層次:

RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的

其中,MappedFileQueue/MappedFile封裝了底層的文件讀寫接口。RocketMQ使用JDK NIO中的MappedByteBuffer/FileChannel來(lái)使用操作系統(tǒng)的文件映射服務(wù),將一個(gè)大文件直接映射到一個(gè)內(nèi)存地址空間中。通過(guò)內(nèi)存的讀寫實(shí)現(xiàn)了文件的讀寫操作,避免了數(shù)據(jù)從內(nèi)核態(tài)向用戶態(tài)的拷貝。MappedFile代表的就是一個(gè)被切分成固定大小的日志文件(commitlog默認(rèn)切分大小為1G,文件名為該分片首字節(jié)在整個(gè)commitlog中的偏移)。多個(gè)MappedFile組成一個(gè)MappedFileQueue,形成一個(gè)完整的日志文件的視圖。

三、核心實(shí)現(xiàn)類

消息存儲(chǔ)核心實(shí)現(xiàn)類如下圖:

RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的

DefaultMessageStore是整個(gè)存儲(chǔ)子系統(tǒng)的入口,提供了消息寫入/讀取/查詢的方法,并通過(guò)后臺(tái)線程異步構(gòu)建ConsumeQueue和IndexFile兩個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。

以上是“RocketMQ中broker消息存儲(chǔ)架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI