精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

三分鐘白話RocketMQ系列—— 如何存儲消息

開發 前端
因為消息存儲仍然使用本地磁盤,本地磁盤空間不足時,為保證服務穩定性消息仍然會被強制清理,導致消息的實際保存時長小于設置的保存時長。建議在存儲成本可控的前提下,盡可能延長消息存儲時長。延長消息存儲時長,可以為緊急故障恢復、應急問題排查和消息回溯帶來更多的可操作空間。

我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。

那接下來,我們白話一下,RocketMQ是如何存儲消息的,揭秘消息存儲全過程。

注意,如果白話中不小心提到相關代碼配置與類名,請參考RocketMQ 4.9.4版本

關鍵字摘要
  • 存儲模型與存儲類型
  • 如何保證存儲消息不丟失
  • 如何提高寫入性能
  • 如何清理過期消息

存儲模型是什么?有哪些存儲類型?

RocketMQ使用了一種基于日志的存儲方式,將消息以順序寫入的方式追加到文件中,從而實現高性能的消息存儲和讀取。

RocketMQ的消息存儲方式可以分為兩個類型:CommitLog 和ConsumeQueue 。

圖片圖片

還有一個文件類型是indexfile,主要用于控制臺消息檢索,不影響消息的寫入與消費,我們就不展開了。

CommitLog

CommitLog文件存儲了Producer端寫入的消息主體內容,它以追加寫入的方式將消息存儲到磁盤上的文件中。

單個文件大小默認1G ,文件名長度為20位(左邊補零,剩余為起始偏移量),當文件滿了,寫入下一個文件。

比如00000000000000000000代表了第一個文件,起始偏移量為0,文件大小為1G=1073741824;當第一個文件寫滿了,第二個文件為00000000001073741824,起始偏移量為1073741824,以此類推。

它的主要特點是:順序寫,但是隨機讀(被ConsumeQueue讀取)。

雖然是隨機讀,但是利用package機制,可以批量地從磁盤讀取,作為cache存到內存中,加速后續的讀取速度。

Broker單個實例下所有的隊列共用一個日志數據文件CommitLog來存儲。而Kafka采用的是獨立型的存儲結構,每個隊列一個文件。

ConsumeQueue

ConsumeQueue文件是用于支持消息消費的存儲結構。保存了指定Topic下的隊列消息在CommitLog中的起始物理偏移量offset,消息大小size和消息Tag的HashCode值。

消費者 通過 順序讀取 ConsumeQueue文件,可以快速定位到消息在CommitLog中的物理存儲位置,從而實現快速消息的拉取和消費。

從實際物理存儲的角度來看,每個主題Topic下的每個隊列Queue對應一個ConsumeQueue文件。

生產者端的消息是順序寫入CommitLog,消費者端是順序讀取ConsumeQueue。但是根據ConsumeQueue的起始物理位置偏移量offset讀取消息真實內容,實際是隨機讀取CommitLog。實現了 消息生產與消息消費、數據存儲和數據索引 相互分離。

怎么保證存儲消息不丟失?

刷盤機制

Broker在把消息寫入日志文件的過程中,如果在剛收到消息時,Broker異常宕機了,那么內存中尚未寫入磁盤的消息就會丟失了。

因此,RocketMQ持久化消息分為兩種:同步刷盤和異步刷盤(默認配置)。

異步刷盤是指Broker收到消息后先存儲到PageCache,然后立即通知Producer消息已存儲成功,可以繼續處理業務邏輯。此后,Broker會啟動一個異步線程將消息持久化到磁盤。然而,如果Broker在持久化到磁盤之前發生故障,消息將會丟失。

## 刷盤策略配置
flushDiskType = ASYNC_FLUSH

注意,寫入PageCache后,應用服務宕機消息不丟失,只有機器斷電或宕機會有少量消息丟失。

相比之下,同步刷盤的方式是在消息存儲到緩存后不立即通知Producer,而是等待消息被持久化到磁盤后再通知Producer。這種方式確保了消息不會丟失,但性能不如異步刷盤高。一般用于金融業務。

## 刷盤策略配置
flushDiskType = SYNC_FLUSH

在選擇刷盤方式時,需要根據業務場景進行權衡。

主從同步機制

即使Broker采用同步刷盤策略,但如果刷盤完成后磁盤損壞,會導致所有存儲在磁盤上的消息丟失。

即使采用了主從復制,如果主節點在刷盤完成后還沒有來得及將數據同步給從節點就發生了磁盤故障,同樣會導致數據丟失。

所以我們可以配置同步機制,等待從節點復制完成主節點的消息后,才去通知Producer完成了消息存儲。

## 主從同步策略配置
brokerRole=SYNC_MASTER

怎么提高存儲寫入性能?

零拷貝技術

RocketMQ通過使用內存映射文件(包括CommitLog、 ConsumeQueue等文件)來提高IO訪問性能,也就是我們常說的零拷貝技術。

Java在NIO包里,引入了sendFile(FileChannel類)和MMAP(MappedByteBuffer類)兩種實現方式的零拷貝技術。

主流的MQ都會使用零拷貝技術,來提升IO:

  • Kafka:record 的讀和寫都是基于 FileChannel。index 的讀寫則基于 MMAP。
  • RocketMQ:讀取數據基于 MMAP,寫入數據默認使用 MMAP。但可以通過修改配置transientStorePoolEnable參數將其配置為使用 FileChannel。作者之所以這樣設計,是為了避免 PageCache 的鎖競爭,并通過兩層架構實現讀寫分離。

緩沖池寫入增強

在不開啟RocketMQ的內存映射增強方案時,RocketMQ的讀和寫都只會簡單直接使用MMAP。

但是,MappedByteBuffer也存在一些缺陷:

  • 使用虛擬內存,超過物理內存會導致內存交換,引起磁盤IO(可能非順序IO)速度較慢。
  • 虛擬內存交換是受操作系統控制的,所以其他進程活動也會觸發RocketMQ內存映射的交換。
  • 文件內存映射寫入PageCache時存在鎖競爭,直接寫入內存可避免競爭,在異步刷盤場景下速度更快。

為此,RocketMQ通過transientStorePoolEnable參數控制,對寫入進行了優化。

如果開啟了這個參數,會將寫入拆分為兩步, 寫入緩沖區 + 異步刷盤 的增強策略。

## 刷盤策略配置
flushDiskType = ASYNC_FLUSH 
transientStorePoolEnable = true

MappedFile會提前申請一塊直接內存用作緩沖區,放棄使用mmap直接寫文件。

數據先寫入緩沖區,然后異步線程每200ms(且臟數據達到16K,commitCommitLogLeastPages = 4)將緩沖區的數據commit寫入FileChannel。

再喚醒定時服務(FlushRealTimeService類)將FileChannel里的數據持久化到磁盤。flush函數和commit一樣也可以傳入一個刷盤頁數,當臟頁數量達到16K時(flushLeastPages = 4),會進行刷盤操作,調用FileChannel的force將內存中的數據持久化到磁盤。

開啟transientStorePoolEnable參數后,性能最好,但是相對來說持久化最不可靠

如何處理消息的過期和刪除?

RocketMQ 使用存儲時長作為消息存儲的依據,即每個節點對外承諾消息的存儲時長。在存儲時長范圍內的消息都會被保留,無論消息是否被消費;超過時長限制的消息則會被清理掉。

需要注意的是,在RocketMQ中,消息存儲時長并不能完整控制消息的實際保存時間。

因為消息存儲仍然使用本地磁盤,本地磁盤空間不足時,為保證服務穩定性消息仍然會被強制清理,導致消息的實際保存時長小于設置的保存時長。

建議在存儲成本可控的前提下,盡可能延長消息存儲時長。延長消息存儲時長,可以為緊急故障恢復、應急問題排查和消息回溯帶來更多的可操作空間。

總結

  • 存儲模型與存儲類型:commitLog文件存儲消息物理文件,consumeQueue文件夾存儲邏輯隊列索引
  • 如何保證存儲消息不丟失:同步&異步刷盤、主從消息同步
  • 如何提高寫入性能:零拷貝技術MMAP和FileChannel、緩沖區增強 + 異步刷盤 策略
  • 如何清理過期消息:按存儲時長清理消息
責任編輯:武曉燕 來源: 阿丸筆記
相關推薦

2023-08-01 09:01:51

Broker? 事務消息selector

2023-08-24 09:01:25

消息拉取RocketMQ

2023-09-13 08:14:57

RocketMQ次數機制

2023-09-21 09:02:03

RocketMQ全局有序局部有序

2023-07-25 09:00:27

RocketMQ開源

2024-04-01 09:59:08

消息隊列通信微服務

2024-09-13 08:49:45

2024-05-16 11:13:16

Helm工具release

2024-12-18 10:24:59

代理技術JDK動態代理

2009-11-09 12:55:43

WCF事務

2021-04-20 13:59:37

云計算

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2023-12-27 08:15:47

Java虛擬線程

2024-08-30 08:50:00

2024-01-16 07:46:14

FutureTask接口用法

2025-10-27 01:35:00

2020-06-30 10:45:28

Web開發工具

2013-06-28 14:30:26

棱鏡計劃棱鏡棱鏡監控項目

2025-04-01 01:25:00

MySQLInnoDBMyISAM

2021-12-17 07:47:37

IT風險框架
點贊
收藏

51CTO技術棧公眾號

99久久精品国产网站| 91精品国产乱码久久久久久| 精品国产乱码久久久久酒店| 国产精品裸体一区二区三区| 日韩 欧美 综合| 最新国产一区| 欧美日产国产精品| 国产成人生活片| 神马久久久久久久久久| 亚洲美女黄色| 伊人久久久久久久久久久| 日日躁夜夜躁aaaabbbb| 美足av综合网| 久久女同性恋中文字幕| 国产精品免费视频久久久| 欧美xxxooo| 国产亚洲亚洲国产一二区| 18涩涩午夜精品.www| 国产精品一区二区三区在线观| 国产99久久久| 亚洲国产精品91| 亚洲国模精品私拍| 奇米视频888| 亚洲综合图区| 国产午夜一区二区三区| 国产精品偷伦视频免费观看国产| 精品国产欧美日韩不卡在线观看| 国产一区二区在线视频你懂的| 欧美中文字幕一区| 国产视频在线观看网站| 国产三级在线| 成人午夜视频免费看| 国产精品丝袜视频| 可以免费看的av毛片| 五月精品视频| 亚洲欧美福利视频| 国产精品无码自拍| www.成人在线视频| 天天亚洲美女在线视频| 一区二区视频在线观看| 免费国产在线观看| 高清在线成人网| 国产精品视频精品| 久久精品欧美一区二区| 999成人网| 亚洲一区二区久久久| av天堂一区二区| 四虎精品永久免费| 欧美亚洲自拍偷拍| 成人免费在线小视频| 福利成人导航| 亚洲精品乱码久久久久| 一区二区精品免费视频| 青青草视频在线观看| 成人激情免费网站| 999精品视频一区二区三区| 中文字幕视频免费观看| 久久xxxx精品视频| 国内成人精品视频| 国产在线视频第一页| 9191国语精品高清在线| 中文字幕亚洲国产| 69xxx免费| 超碰精品在线观看| 欧美一区二区日韩一区二区| 人人爽人人av| 精品成人免费一区二区在线播放| 日韩欧美国产骚| 黄色国产精品视频| 一区二区乱码| 色综合久久久久综合99| 熟女性饥渴一区二区三区| 中文字幕乱码在线播放| 好吊成人免视频| 免费国产黄色网址| 亚洲欧美电影| 色综合久久88色综合天天免费| 免费无码毛片一区二三区| 大香伊人久久| 欧美日韩国产中字| 韩国日本在线视频| 国产精品亚洲d| 日韩欧美一区二区三区久久| 日韩视频免费播放| 亚洲涩涩在线| 欧洲一区在线电影| 亚州精品一二三区| 国产精品视频一区二区三区综合 | 国产麻豆视频在线观看| 久久精品国产亚洲夜色av网站 | 精品国产91久久久久久浪潮蜜月| 亚洲精品自产拍| 真实乱视频国产免费观看| 欧美视频免费| 久久综合电影一区| 久久久香蕉视频| 一区二区久久| 日韩av大片免费看| 一级成人免费视频| 国产剧情av麻豆香蕉精品| 成人综合av网| 日本天堂在线| 亚洲精品成人天堂一二三| 蜜臀av无码一区二区三区| av在线私库| 欧美性一二三区| 免费国偷自产拍精品视频| 林ゆな中文字幕一区二区| 亚洲午夜精品视频| 国产日韩精品中文字无码| 欧美激情五月| 日韩免费在线看| 97视频免费在线| av资源网一区| 中文字幕中文字幕99| 超碰在线视屏| 欧美精选在线播放| 欧美一级片黄色| 国产成人一区| 欧美裸体xxxx极品少妇| 在线免费观看av网址| 国产精品主播直播| 欧美一级爽aaaaa大片| 成人影院www在线观看| 黄色成人在线播放| 亚洲欧洲日本精品| 日韩美女精品| 久久伊人色综合| 久久久久久久久久成人| 成人激情动漫在线观看| 自拍偷拍一区二区三区| 中文一区一区三区高中清不卡免费 | 欧美大片在线观看一区二区| 五月天精品视频| 欧美视频不卡| 亚洲综合av影视| 欧洲天堂在线观看| 亚洲午夜免费福利视频| 91精品999| av永久不卡| 欧美在线观看日本一区| 黄色av小说在线观看| 亚洲视频狠狠干| 国产精品入口免费软件| 中文字幕一区二区三区四区久久| 日韩一区二区欧美| 日韩欧美国产另类| 91色porny蝌蚪| 日本男女交配视频| 欧美国产中文高清| xxxx欧美18另类的高清| 探花视频在线观看| 不卡av电影在线播放| 黄色成人在线免费观看| 国产一区二区三区视频在线| 久久精品影视伊人网| 中文字幕人妻丝袜乱一区三区 | 97人人做人人人难人人做| 午夜国产福利在线| 欧美日韩国产天堂| 日本猛少妇色xxxxx免费网站| 午夜一区不卡| 欧美久久久久久久| 日日夜夜天天综合| 一区二区三区四区视频| 亚洲成人第一网站| 成人激情小说网站| 国产 福利 在线| 神马香蕉久久| 欧美中文字幕视频在线观看| 天堂av手机版| 欧美性xxxxhd| 国产sm调教视频| 首页欧美精品中文字幕| 三区精品视频观看| 日韩精品第一| 中文字幕亚洲欧美日韩在线不卡| 国产第一页在线观看| 国产女人aaa级久久久级| 国产嫩草在线观看| 欧美性感美女一区二区| 国产精品日本精品| 黄色视屏免费在线观看| 91精品一区二区三区久久久久久 | 午夜免费看毛片| 国产韩日影视精品| 国产精品免费一区二区三区在线观看 | av激情久久| av影院在线免费观看| 精品一区二区电影| 在线观看亚洲一区二区| 18欧美乱大交hd1984| 九色porny自拍| 国产精品激情| 日韩国产伦理| 成人免费看黄| 久久精品视频在线| 国产精品一区二区人人爽| 亚洲一区二区五区| 人妻大战黑人白浆狂泄| 国内成人精品2018免费看| 激情五月六月婷婷| blacked蜜桃精品一区| 国产精品视频免费观看www| 日本激情视频在线观看| 亚洲国产成人久久综合| 中文字幕一区二区三区免费看| 一级性生活毛片| 亚洲欧美一区在线| 美国av一区二区三区| 欧美性生活一级| 97精品久久久| 波多野结衣在线网站| 日韩精品中文字幕一区二区三区 | 国产香蕉在线观看| 色哟哟亚洲精品| 毛片久久久久久| av影院午夜一区| 制服丝袜中文字幕第一页 | 国产精品一区二区三区四区在线观看| 欧美精品video| 丁香在线视频| 亚洲国产精品人久久电影| 91精品人妻一区二区三区果冻| 午夜婷婷国产麻豆精品| 成人18视频免费69| www.色综合.com| 国产永久免费网站| 久久国产主播| 成人av在线不卡| 欧美电影《轻佻寡妇》| 欧美久久久久久| 一区三区自拍| 91免费在线视频| 亚洲日本在线观看视频| 8050国产精品久久久久久| 18加网站在线| 日韩视频免费看| 神马亚洲视频| 亚洲黄色av女优在线观看| 国产精品一区二区人人爽| 色综合久久天天| 波多野结衣国产| 亚洲综合色视频| 免费三级在线观看| 国产精品成人免费| 国产无遮挡在线观看| 久久亚洲一区二区三区明星换脸| 动漫美女无遮挡免费| 国产在线精品一区二区不卡了| 国产主播中文字幕| 久久一区欧美| 人妻精品无码一区二区三区| 欧美涩涩网站| 日韩成人三级视频| 午夜国产一区二区| 中文字幕av日韩精品| 日韩精品一区二区三区免费观影| 久久天天狠狠| 婷婷综合成人| 久久久久久久久一区| 青青草原在线亚洲| 久久精品国产一区二区三区日韩 | 国产精品专区一| 视频精品导航| 国产日韩在线观看av| 浪潮色综合久久天堂| 国产成人拍精品视频午夜网站| 亚洲v.com| 国产成人一区三区| 性国裸体高清亚洲| 欧美一区在线直播| 日本免费久久| 国产精品老牛影院在线观看| 成人精品三级| 91精品中文在线| 欧美区一区二区| 99国精产品一二二线| jizz国产精品| 免费一区二区三区在在线视频| 亚洲午夜久久| 亚洲精品一区二区三区樱花| 日韩欧美中文| 亚洲精品少妇一区二区| 一区在线观看| wwwxxx黄色片| 久久av资源网| 国产ts在线观看| www激情久久| 久久久久久成人网| 亚洲视频综合在线| 久久久久国产精品夜夜夜夜夜| 亚洲线精品一区二区三区| 久热这里只有精品6| 欧美精品九九99久久| 五月婷婷六月丁香| 久久国产精品久久久| 成人美女大片| 粉嫩高清一区二区三区精品视频| 精品国产91| 国产人妻777人伦精品hd| 久久99精品久久只有精品| 韩国无码一区二区三区精品| 中文字幕亚洲不卡| 无码人妻精品一区二区三区9厂| 欧美一区二区日韩| 91在线观看| 欧美一级免费视频| 北条麻妃在线一区二区免费播放| 五月天久久狠狠| 亚洲视频1区| 丰满少妇xbxb毛片日本| 国产精品久久久久影院老司| 日韩精品在线免费视频| 精品国产一区二区三区久久影院 | 中文字幕制服丝袜成人av| 午夜精品久久久久久久久久久久久蜜桃 | 久久奇米777| 日本熟妇毛耸耸xxxxxx| 91精品国产综合久久久久久漫画 | 国产精品色眯眯| 天堂а√在线中文在线新版 | 91理论片午午论夜理片久久| 久久不见久久见免费视频7| 国产一线二线三线女| 国产自产v一区二区三区c| 国产精品www爽爽爽| 欧美午夜女人视频在线| 欧美一级在线免费观看| 欧美国产日韩一区二区在线观看| 日韩三区四区| 亚洲欧美日韩国产yyy| 日韩成人dvd| 国产免费一区二区三区网站免费| 天天av天天翘天天综合网 | 国产一区二区三区高清在线观看| 女人高潮被爽到呻吟在线观看 | 交换做爰国语对白| 国产精品美女久久久久aⅴ| 中国黄色一级视频| 一区二区欧美日韩视频| 经典三级一区二区| 特级西西444www大精品视频| 日韩精品乱码av一区二区| 男女做爰猛烈刺激| 欧洲亚洲国产日韩| av网站在线免费观看| 国产欧美一区二区三区久久| 91亚洲国产高清| 中文字幕在线视频一区二区三区| 国产精品另类一区| 国产伦精品一区二区三区四区| 色老头一区二区三区在线观看| 久久日本片精品aaaaa国产| 一区二区三区国产福利| 国产在线精品一区二区三区不卡 | 日韩在线免费电影| 成人高清视频观看www| 亚洲精品888| 成年女人免费视频| 欧美性猛交xxxx免费看漫画| 九色在线免费| 国产精品主播视频| 欧美日韩四区| 欲求不满的岳中文字幕| 色域天天综合网| 日本亚洲精品| 成人欧美一区二区三区黑人免费| 国产精品久久久一区二区| 国产手机在线观看| 欧美军同video69gay| 在线电影福利片| 精品久久久久久亚洲| 视频一区欧美精品| 日韩黄色免费观看| 精品亚洲国产视频| 麻豆久久久久| 99热久久这里只有精品| 久久夜色精品国产欧美乱极品| 亚洲一线在线观看| 91国产精品电影| 日韩精品看片| 精品视频站长推荐| 精品视频一区三区九区| 福利网站在线观看| 四虎永久国产精品| 成人动漫视频在线| 伊人网免费视频| 高清欧美性猛交| 欧美电影《睫毛膏》| yy6080午夜| 欧美一级欧美三级在线观看| xxx欧美xxx| 警花观音坐莲激情销魂小说| wwwwxxxxx欧美| 国产日产亚洲系列最新| 国产99久久精品一区二区| 欧美国产高清| 极品尤物一区二区| 亚洲精品久久视频|