当前位置: 首页 > news >正文

RocketMQ消息是如何储存的?

前言

之前有写过关于kafka的存储结构的文章。RocketMQ大部分是借鉴了Kafka的设计原理,但是副本集群机制和存储结构有些差异。看完本篇文章可以看看这篇。消息中间件之kafka
RocketMQ 的消息存储机制是其高吞吐、高可用和高可靠性的关键。以下将介绍 RocketMQ 消息存储的核心机制

1. 存储架构

RocketMQ 的消息存储主要由以下部分组成:

  • CommitLog: 所有消息都顺序写入 CommitLog 文件,保证高吞吐。
  • ConsumeQueue: 每个消息队列(Topic+Queue)对应一个 ConsumeQueue,存储消息在 CommitLog 中的偏移量,方便快速检索。
  • IndexFile: 提供基于消息 Key 或时间范围的查询功能。

2. CommitLog

  • 顺序写入: 所有消息按顺序追加到 CommitLog 文件,提升写入性能。
  • 文件大小固定: 每个 CommitLog 文件默认 1GB,写满后创建新文件。
  • 异步刷盘: 支持同步和异步刷盘,异步刷盘通过批量写入提升性能,同步刷盘则保证数据不丢失。

3. ConsumeQueue

  • 消息索引: 存储消息在 CommitLog 中的物理偏移量、大小和 Tag 哈希值,方便快速定位消息。
  • 文件分段: 每个 ConsumeQueue 文件默认存储 30万条索引,文件大小固定。
  • 异步构建: ConsumeQueue 通过异步方式从 CommitLog 构建,不影响主写入流程。

4. IndexFile

  • 索引服务: 提供基于消息 Key 或时间范围的查询,文件大小固定(默认 400MB)。

  • 哈希索引: 通过哈希索引快速定位消息位置。

  • 在这里插入图片描述

5. 消息存储流程

  1. 消息写入: 生产者发送消息,Broker 将其顺序写入 CommitLog。
  2. 构建索引: 异步构建 ConsumeQueue 和 IndexFile。
  3. 消息读取: 消费者通过 ConsumeQueue 找到消息在 CommitLog 中的位置,读取消息。

6. 刷盘机制

  • 同步刷盘: 消息写入 CommitLog 后立即刷盘,保证数据不丢失,但性能较低。
  • 异步刷盘: 消息写入 CommitLog 后先存入 PageCache,由操作系统异步刷盘,性能较高,但可能丢失部分数据。

7. 文件清理

  • 过期清理: 定期清理过期消息(默认 72 小时)。
  • 文件删除: 根据磁盘使用情况删除旧的 CommitLog 文件。

8. 高可用性

  • 主从复制: Broker 支持主从架构,主节点将消息同步到从节点,主节点故障时从节点可继续提供服务。
  • 数据冗余: 通过多副本机制保证数据不丢失。

9. 性能优化

  • 零拷贝: 通过 mmapsendfile 技术减少数据拷贝,提升性能。
  • 批量写入: 支持批量消息写入,减少 IO 操作。

总结

RocketMQ 通过 CommitLog 顺序写入、ConsumeQueue 索引、IndexFile 查询等机制实现高效的消息存储和检索,并通过同步/异步刷盘、主从复制等技术保证高可用性和可靠性。

相关文章:

  • 事务--实操演示
  • notepad++右键菜单不见了
  • Docker 私有仓库 Harbor 详解
  • Rust Slice(切片)类型
  • uniapp邪门事件
  • 【技术洞察】2024科技绘卷:浪潮、突破、未来
  • 算法刷题-哈希表的总结
  • CTF-RE: 基础模块-循环移位
  • scroll、offset、client三大家族和getBoundingClientRect方法
  • python concurrent.futures
  • 基于YOLO11深度学习的果园苹果检测与计数系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • 【Spring生命周期】Bean元信息配置阶段
  • Python Selenium自动化操作详解:从入门到实战
  • JavaScript中的函数基础知识
  • win10本地部署deepseek-r1步骤
  • 用户的声音 | 文档结构化信息提取方案测评:LLM、开源模型部署与云端API,谁是合适选择?
  • 在 Vue 项目中,为什么要在列表组件中写 key,其作用是什么?
  • 什么是幂等性?
  • 【SpringMVC】Controller的多种方式接收请求参数
  • DeepSeek模型快速部署教程-搭建自己的DeepSeek
  • 中国证监会:帮助受关税政策影响较大的上市公司纾困解难
  • 体坛联播|国米淘汰巴萨晋级欧冠决赛,申花击败梅州避免连败
  • 全军军级以上单位新任纪委书记监委主任培训班结业
  • 退休11年后,71岁四川厅官杨家卷被查
  • 女租客欠租后失联,房东开门后无处下脚:40平公寓变垃圾场
  • “五一”从昆明机场出境1.4万人次,较去年增长7.7%