RocketMQ Broker 存储了以下主要文件:
文件名 | 作用 |
---|---|
commitlog | 存储未提交的消息。 |
consumequeue | 存储已提交的消息,供 Consumer 消费。 |
indexfile | 存储消息的索引文件,用于加速消息查询。 |
checkpoint | 存储 Broker 的检查点信息,用于故障恢复。 |
abort | 存储 aborted 消息,即因某些原因被中止的消息。 |
commitlog
commitlog 文件采用顺序写的方式存储消息,每个消息占用一个固定大小的存储空间。commitlog 文件由多个 segment 文件组成,每个 segment 文件的大小为 1GB。当一个 segment 文件写满后,Broker 会创建一个新的 segment 文件继续存储消息。
consumequeue
consumequeue 文件存储已提交的消息,供 Consumer 消费。consumequeue 文件由多个队列组成,每个队列对应一个 topic。每个队列中的消息按照 FIFO(先进先出)的顺序排列。当一个队列中的消息被消费后,Broker 会将该队列中的消息删除。
indexfile
indexfile 文件存储消息的索引信息,包括消息的 offset、消息的 tag、消息的发送时间等。indexfile 文件采用哈希表的形式组织,便于快速查找消息。
checkpoint
checkpoint 文件存储 Broker 的检查点信息,包括当前已提交的消息 offset、当前已刷盘的消息 offset 等。checkpoint 文件用于故障恢复,当 Broker 发生故障时,可以从 checkpoint 文件中恢复 Broker 的状态。
ConsumeQueue: {
topic1_queueId1: offset1,
topic1_queueId2: offset2,
...
}
CommitLog: {
logId1: offset1,
logId2: offset2,
...
}
Flush: {
topic1_queueId1: offset1,
topic1_queueId2: offset2,
...
}
Last Shutdown Timestamp: timestamp
abort
abstore 文件存储 aborted 消息,即因某些原因被中止的消息。aborted 消息不会被发送给 Consumer,但会保留一段时间,以便用户进行故障排查。