第4章
RocketMQ消息存储

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

本章重点内容如下。

  • RocketMQ存储概要设计。
  • 消息发送存储流程。
  • 存储文件组织与内存映射机制。
  • RocketMQ存储文件。
  • 消息消费队列、索引文件构建机制。
  • RocketMQ文件恢复机制。
  • RocketMQ刷盘机制。
  • RocketMQ文件删除机制。
  • 同步双写机制。