RocketMQ 消息存储 CommitLog
消息存储是由ConsumeQueue和CommitLog配合完成
ConsumeQueue:
ConsumeQueue 是逻辑队列, CommitLog 是真正存储消息文件的,存储的是指向物理存储的地址
Topic下的每个 message queue 都有对应的 ConsumeQueue 文件,内容也会被持久化到磁盘
默认地址: store/consumequeue/{topicName}/{queueid}/fileName
什么是CommitLog:
- 消息文件的存储地址
- 生成规则:
shell
每个文件的默认1G =1024 * 1024 * 1024 , commitlog的文件名fileName,名字长 度为20位,左边补零,剩余为起始偏移量;比如00000000000000000000代表了 第—个文件,起始偏移量为0,文件大小为1G=1 073 741 824Byte;当这个文件满 了,第二个文件名字为00000000001073741824,起始偏移量为1073741824, 消
息存储的时候会顺序写入文件,当文件满了则写入下—个文件- 判断消息存储在哪个 CommitLog 上
例如 1073742827 为物理偏移量,则其对应的相对偏移量为 1003 = 1073742827 - 1073741824,并且该偏移量位于第二个 CommitLog。
Broker里面—个Topic
- 里面有多个 MessageQueue
- 每个 MessageQueue 对应—个 ConsumeQueue
- ConsumeQueue 里面记录的是消息在 CommitLog 里面的物理存储地址
剑鸣秋朔