第 4 章 RocketMQ 消息存储
从存储模型来看,目前 MQ 中间件分为需要持久化和不需要持久化两种,大多数 MQ 都支持持久化存储,比如 ActiveMQ、RabbitMQ、Kafka、RocketMQ,ZeroMQ 则不需要支持持久化存储。然而业务系统大多需要 MQ 具有持久存储的能力,以增加系统的高可用性。从存储方式和效率来看,文件系统高于KV存储,KV存储又高于关系型数据库,直接操作文件系统肯定是最快的,但可靠性是最低的,而关系型数据库的性能和可靠性与文件系统恰恰相反。本章主要分析 RocketMQ 的消息存储机制。
本章重点内容如下。
-
RocketMQ存储概要设计。
-
消息发送存储流程。
-
存储文件组织与内存映射机制。
-
RocketMQ存储文件。
-
消息消费队列、索引文件构建机制。
-
RocketMQ文件恢复机制。
-
RocketMQ刷盘机制。
-
RocketMQ文件删除机制。
-
同步双写机制。