rocketMQ資料儲存

2021-10-04 02:59:18 字數 767 閱讀 9803

rocketmq中的訊息資料儲存,採用了零拷貝技術(使用 mmap + write 方式),檔案系統採用 linux ext4 檔案系統進行儲存。

訊息資料的儲存

在rocketmq中,訊息資料是儲存在磁碟檔案中,為了保證寫入的效能,rocketmq盡可能保證順序寫入,順序寫入的效率比隨機寫入的效率高很多。

rocketmq訊息的儲存是由consumequeue和commitlog配合完成的,commitlog是真正儲存資料的檔案,consumequeue是索引檔案,儲存資料指向到物理檔案的配置。

如上圖所示:

檔案所在的位置

同步刷盤與非同步刷盤

rocketmq 為了提高效能,會盡可能地保證 磁碟的順序寫。訊息在通過 producer 寫入 rocketmq 的時候,有兩種寫磁碟方式,分別是同步刷盤與非同步刷盤。

同步刷盤

非同步刷盤

broker配置檔案中指定刷盤方式

RocketMQ訊息儲存

分布式佇列因為有高可靠性的要求,所以資料要進行持久化儲存。訊息生成者傳送訊息 mq收到訊息,將訊息進行持久化,在儲存中新增一條記錄 返回ack給生產者 mq push訊息給對應的消費者,然後等待消費者返回ack 如果訊息消費者在指定時間內成功返回ack,那麼mq認為訊息消費成功,在儲存中刪除訊息,即...

RocketMQ 訊息儲存

訊息儲存 主要的儲存檔案 1 訊息檔案 commitlog 2 訊息消費佇列檔案 consumequeue 3 hash索引檔案 indexfile 4 檢測點檔案 checkpoint 5 關閉異常檔案 abort 檔案刷盤機制 同步刷寫 訊息追加到記憶體後,立即將記憶體訊息刷寫到磁碟,再對客戶端...

RocketMQ 訊息儲存結構

引用 rmq採用順序寫,隨機讀的設計理念 commitlog順序寫,可以大大提高寫人效率。雖然是隨機讀,但是利用作業系統的pagecache機制,可以批量地從磁 盤讀取,作為cache存到記憶體中,加速後續的讀取速度。rocketmq訊息的儲存是由consumequeue和commitlog配合完成...