【RocketMQ每日一问】RocketMQ中哪些信息存储在文件中(有哪些文件)?

发布时间:2024年01月19日

RocketMQ Broker 存储了以下主要文件:

  • commitlog/:存储未提交的消息。
  • consumequeue/:存储已提交的消息,供 Consumer 消费。
  • indexfile/:存储消息的索引文件,用于加速消息查询。
  • checkpoint:存储 Broker 的检查点信息,用于故障恢复。
  • abort:存储 aborted 消息,即因某些原因被中止的消息。
文件名作用
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,但会保留一段时间,以便用户进行故障排查。

文章来源:https://blog.csdn.net/jianjun_fei/article/details/135657528
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。