精品欧美一区二区三区在线观看 _久久久久国色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久久99久久精品国产片| 中日韩精品视频在线观看| 国产一区二区三区电影在线观看 | 噜噜噜噜噜久久久久久91| 国产成人精品亚洲男人的天堂| 色综合综合色| 国产精品欧美三级在线观看| 欧美午夜片欧美片在线观看| 亚洲在线色站| 日韩一级免费视频| 久久国产生活片100| 久久久日本电影| 人妻无码一区二区三区免费| 国产美女撒尿一区二区| 欧美日韩久久不卡| 青青草原av在线播放| 婷婷av在线| 国产精品久久久久一区二区三区| 狠狠色狠狠色综合人人| 国产欧美日韩成人| 老**午夜毛片一区二区三区| 久久青草精品视频免费观看| 99久久婷婷国产综合| 国产欧美久久一区二区三区| 亚洲精品电影在线| 女同性αv亚洲女同志| 四虎精品一区二区免费| 在线观看亚洲成人| 无码精品国产一区二区三区免费| 男女免费观看在线爽爽爽视频| 国产精品国模大尺度视频| 欧美精品一区二区三区在线看午夜 | 四虎国产精品免费观看| 亚洲视频综合网| 99久久人妻无码中文字幕系列| 深夜激情久久| 51久久夜色精品国产麻豆| 91国产精品视频在线观看| 最新日韩精品| 欧美性猛交xxxx黑人猛交| 欧美亚洲日本一区二区三区| 在线中文字幕电影| 一区二区在线看| 日本一道在线观看| 在线网址91| 一区二区三区欧美日| 麻豆传媒网站在线观看| 中文字幕中文字幕在线十八区| 中文字幕亚洲一区二区va在线| 婷婷亚洲婷婷综合色香五月| freemovies性欧美| 国产精品久久毛片a| 亚洲午夜精品久久久中文影院av | 国产欧美精品一区二区三区四区| 欧美午夜精品久久久久免费视| 色综合成人av| 国产日韩欧美亚洲| 亚洲激情图片| 日本在线看片免费人成视1000| 欧美激情一区在线观看| 中文字幕一区二区三区四区五区六区| 午夜激情在线观看| 亚洲精品欧美在线| 免费一级特黄毛片| 桃花岛tv亚洲品质| 欧美日韩免费观看一区三区| 午夜免费一级片| 成人免费在线电影网| 日韩大陆欧美高清视频区| 超碰97人人干| 日韩欧美精品| 欧美激情视频一区二区| 日韩精品视频免费播放| 日韩中文字幕一区二区三区| 国产精品视频免费在线| 精品人妻av一区二区三区| 成人精品一区二区三区四区| 裸模一区二区三区免费| 91九色在线porn| 亚洲精品国产第一综合99久久| 日韩人妻无码精品久久久不卡| 在线播放高清视频www| 欧美曰成人黄网| 日韩高清一二三区| 国产99久久久国产精品成人免费 | 日韩成人影音| 91精品国产综合久久精品性色| 中文字幕人妻熟女在线| 精品国产精品| 久久久久久久激情视频| 国产一区免费看| 国产精品一区二区视频| 久久人人九九| 日本三级在线播放完整版| 亚洲国产乱码最新视频| 少妇一级淫免费放| 精品国产导航| 久久精品国亚洲| 久久99国产综合精品免费| 激情综合色播激情啊| 精品伦理一区二区三区| 日本三级在线视频| 精品日本高清在线播放 | 人人爽人人爽人人片av| 国产乱淫av一区二区三区| 欧美日韩一区在线视频| 色婷婷av在线| 欧美三级日韩在线| 特大黑人巨人吊xxxx| 亚洲女同中文字幕| 国产精品88a∨| 欧美一级淫片aaaaaa| 国产精品久久久久精k8| 久久久久久香蕉| 国内视频在线精品| 欧美另类交人妖| 伊人网站在线观看| 久久久99精品免费观看不卡| 97视频在线免费| 日韩中文字幕无砖| 精品国产一区二区在线| 东京热一区二区三区四区| 国产iv一区二区三区| 国产在线拍揄自揄拍无码| 丰满少妇一区| 在线播放国产一区中文字幕剧情欧美| 亚洲免费在线视频观看| av男人天堂一区| 日韩一级片免费视频| 免费欧美网站| 久久成人在线视频| 国产精品无码久久久久成人app| 欧美激情一区二区在线| 91视频免费版污| 国产欧美日韩影院| 琪琪第一精品导航| 日本天堂影院在线视频| 欧美日韩激情小视频| 亚洲一区二区三区四区av| 欧美三级特黄| 国产精品一区二| 日本小视频在线免费观看| 欧美一区二区女人| 动漫性做爰视频| 国产乱国产乱300精品| 乱子伦一区二区| 精品一级视频| 久久久久久久久久久网站| 韩国av永久免费| 欧美日韩综合视频网址| 97伦伦午夜电影理伦片| 日韩成人午夜精品| 亚洲综合首页| 欧美日韩国产一区二区在线观看| 欧美巨大黑人极品精男| 噜噜噜久久,亚洲精品国产品| 一区二区国产盗摄色噜噜| 黄色免费视频网站| 久久久久久色| 永久免费精品视频网站| 精品国产一级| 91国产美女视频| 欧美一区二区视频| 欧美日韩一区高清| 免费三片在线播放| 97精品久久久午夜一区二区三区 | 蜜月aⅴ免费一区二区三区| 97精品人妻一区二区三区在线| 国产精品久久久久久久久动漫| 三区视频在线观看| 极品尤物久久久av免费看| 久久久久久久久久久久久9999| 最新欧美电影| 美女视频黄免费的亚洲男人天堂| 国产91久久久| 色噜噜狠狠成人网p站| 永久久久久久久| www日韩大片| 一级做a免费视频| 激情视频一区二区三区| 欧美一区2区三区4区公司二百| 成人网ww555视频免费看| 欧美成人免费全部| 日本又骚又刺激的视频在线观看| 欧美日韩在线播放一区| 免费在线视频观看| www精品美女久久久tv| 97人人爽人人| 久久国产精品亚洲77777| 亚洲人成人77777线观看| 国产精品丝袜在线播放| 国产精品福利久久久| 欧美人与牲禽动交com| 亚洲视频在线看| 欧美 日韩 人妻 高清 中文| 欧美色精品在线视频| 国产精品23p| 亚洲欧洲美洲综合色网| 成年人的黄色片| 国内外成人在线视频| 亚洲爆乳无码专区| 亚洲小说欧美另类社区| 五月天男人天堂| 亚洲欧美校园春色| 丁香婷婷久久久综合精品国产| www.久久.com| 91av国产在线| 国产乱码在线| 久久资源免费视频| 免费黄网站在线播放| 亚洲色图五月天| 亚洲av成人无码网天堂| 日韩无一区二区| 国产精品女人久久久| 在线观看网站黄不卡| 成人免费看片98欧美| 亚洲一区二区av在线| 九九这里只有精品视频| 国产偷国产偷亚洲高清人白洁| 国产国语性生话播放| 成人午夜视频在线观看| 日韩av加勒比| 韩国精品久久久| 天天干天天av| 久久99久久久欧美国产| 国产三级国产精品国产专区50| 久久香蕉精品| 久草青青在线观看| 久久久久.com| 国产又黄又大又粗视频| 国产一级一区二区| 青青青免费在线| 日韩一级精品| 北条麻妃在线视频观看| 亚洲欧洲综合| 欧美日韩一道本| 免费日韩av| 成年人视频网站免费观看| 久久精品二区三区| 黄色av免费在线播放| 久久亚洲精选| 日本爱爱免费视频| 麻豆精品久久精品色综合| 日本肉体xxxx裸体xxx免费| 免费观看在线色综合| 手机在线成人免费视频| 久久99国产精品尤物| www.cao超碰| 国产成人午夜视频| 国产xxxx视频| 久久久精品国产免大香伊| gv天堂gv无码男同在线观看| 国产精品国产三级国产aⅴ中文| 国产免费久久久久| 亚洲综合男人的天堂| 久久综合成人网| 欧美性高跟鞋xxxxhd| jizz国产在线| 91精品国产美女浴室洗澡无遮挡| 国产超碰人人模人人爽人人添| 精品日韩成人av| 香蕉人妻av久久久久天天| 亚洲天堂一区二区三区| 麻豆视频在线| 97色在线观看| 日韩精选视频| 99国产在线视频| 偷窥自拍亚洲色图精选| 亚洲v国产v在线观看| 亚洲一区二区三区无吗| 免费看毛片的网址| 免费成人av在线| 黄页网站在线看| 2019国产精品| 精品国产精品国产精品| 欧美日韩国产精品专区| 中文字幕日韩第一页| 欧美xxxx在线观看| 大地资源第二页在线观看高清版| 999精品视频| 9色porny| 日本最新不卡在线| 九色91porny| 久久精品人人爽人人爽| 最新一区二区三区| 欧美网站在线观看| 国产精品国产精品国产专区| 日韩精品极品在线观看播放免费视频| av大全在线免费看| 欧美一级黄色网| 国产视频一区二区在线播放| 免费看成人片| 欧美三级午夜理伦三级中文幕| 九色porny91| jiyouzz国产精品久久| 男女男精品视频网站| 精品国产乱码久久久久久天美| 一区两区小视频| 亚洲免费av电影| 丁香花在线电影| 91精品综合视频| 精品久久久中文字幕| 日韩欧美不卡在线| 国产九色精品成人porny | 国产精品国模大尺度视频| 日韩欧美三级视频| 欧美一级久久久| 中文日本在线观看| 日韩av电影手机在线| 澳门久久精品| 特级西西444| 国产综合色在线观看| 国产日韩欧美日韩| 亚洲区小说区| 97视频在线免费| 国产麻豆精品95视频| 欧美成人短视频| 91国在线观看| 女人偷人在线视频| 欧美亚洲在线观看| 国产精品调教视频| 超碰成人免费在线| 国产xxx精品视频大全| 手机av在线看| 欧美日韩mp4| 欧美日韩欧美| 国产精品男女猛烈高潮激情| 国产伦精品一区二区三区千人斩| 中文字幕无码精品亚洲35| 丁香桃色午夜亚洲一区二区三区| caoporn91| 欧美一区二区日韩| 羞羞网站在线免费观看| 亚洲最大的免费| 综合一区av| 69久久精品无码一区二区| 18欧美乱大交hd1984| 国产一区二区三区中文字幕| 中文字幕日韩有码| 伊人久久精品| 91大学生片黄在线观看| 国产精品69久久久久水密桃 | 亚洲精品国产一区二区三区四区在线| 中文字幕在线一| 麻豆一区二区在线观看| 精品伊人久久| 精品人妻人人做人人爽| 粉嫩av一区二区三区| 日韩精品一区二区在线播放| 亚洲精品美女久久久| 亚洲天堂av影院| 欧美性bbwbbwbbwhd| 日本不卡123| 日本中文在线视频| 日韩欧美一区二区三区在线| 女同视频在线观看| 美日韩免费视频| 日韩精品成人一区二区三区| 亚洲激情图片网| 欧美一级搡bbbb搡bbbb| 91精品国产黑色瑜伽裤| 久久爱av电影| 美女一区二区三区| 我家有个日本女人| 亚洲国产精品字幕| 成人自拍av| 美国av在线播放| 不卡视频一二三| 黄色一区二区视频| 欧美成人午夜影院| 亚洲精品亚洲人成在线观看| 特级丰满少妇一级| 亚洲一区二区三区四区在线免费观看 | 日韩欧美高清一区| 亚洲天堂手机| 中文字幕乱码一区二区三区| 粉嫩一区二区三区性色av| 成人小视频在线播放| 久久av在线播放| 精品国产乱码久久久久久果冻传媒| 久久人人爽av| 精品久久久香蕉免费精品视频| 在线免费av网站| 极品校花啪啪激情久久| 蜜臀va亚洲va欧美va天堂| 久久精品免费在线| 爽爽爽爽爽爽爽成人免费观看| av动漫精品一区二区| 一区二区三区入口| 亚洲国产精品久久艾草纯爱| av在线女优影院| 国产一区在线免费| 激情av综合网| 在线视频一区二区三区四区| 欧美xxxx14xxxxx性爽| 国产一区二区电影在线观看|