1. CommitLog示意图
CommitLog是对RocketMQ的存储的抽象,示意图如下:

CommitLog 主要由几部分组成:
- MappedFileQueue: 主要用来操作相关数据存储文件。将一系列的MappedFile抽象成一个队列。
- FlushManager: 数据落地磁盘的管理,主要分为两类:实时数据刷盘(FlushRealTimeService),以及异步刷盘(GroupCommitService)
- FlushDiskWatcher: 刷盘观察者,处理队列中的刷盘请求,对于规定时间内没有刷盘成功的进行处理。
Tips: 多目录存储参照RIP-7
CommitLog 底层主要是通过FileChannel来实现。其中还有一些RocketMQ的自身优化,例如: TransientStorePool。
2. MappedFileQueue
MappedFileQueue 是对数据存储文件的一个抽象,将多个数据文件抽象成为一个文件队列。通过这个文件队列对文件

本文详细介绍了RocketMQ的CommitLog存储机制,包括MappedFileQueue、CommitLog消息处理流程、刷盘解析等。CommitLog通过MappedFileQueue管理数据文件,利用FlushManager进行数据落地,并采用GroupCommitService和FlushRealTimeService处理同步和异步刷盘。RocketMQ在消息校验、HA处理等方面也有精细的设计。
最低0.47元/天 解锁文章
1161

被折叠的 条评论
为什么被折叠?



