第 4 章 RocketMQ 消息存储

从存储模型来看,目前 MQ 中间件分为需要持久化和不需要持久化两种,大多数 MQ 都支持持久化存储,比如 ActiveMQ、RabbitMQ、Kafka、RocketMQ,ZeroMQ 则不需要支持持久化存储。然而业务系统大多需要 MQ 具有持久存储的能力,以增加系统的高可用性。从存储方式和效率来看,文件系统高于KV存储,KV存储又高于关系型数据库,直接操作文件系统肯定是最快的,但可靠性是最低的,而关系型数据库的性能和可靠性与文件系统恰恰相反。本章主要分析 RocketMQ 的消息存储机制。

本章重点内容如下。

  • RocketMQ存储概要设计。

  • 消息发送存储流程。

  • 存储文件组织与内存映射机制。

  • RocketMQ存储文件。

  • 消息消费队列、索引文件构建机制。

  • RocketMQ文件恢复机制。

  • RocketMQ刷盘机制。

  • RocketMQ文件删除机制。

  • 同步双写机制。