RocketMQ 消息存储

消息存储由 ConsumeQueueCommitLog 配合完成。

CommitLog 是消息的物理存储文件,ConsumeQueue是消息的逻辑队列,类似数据库索引文件,存储物理存储位置,每个 MessageQueue 对应一个 ConsumeQueue 文件,每台机器上的 CommitLog 被本机器所有 ConsumeQueue 共享。

为保证 CommitLog 和 ConsumeQueue 的一致性,CommitLog 中存储了 ConsumeQueue、Message Key、Tag 等信息,即使 ConsumeQueue 丢失,也可以通过 CommitLog 恢复出来。

消息日志文件 CommitLog 采用顺序写、随机度的机制,好处:

  1. 顺序写可以大大提高写入效率。
  2. 虽然是随机读,但可以利用系统的 pagecache 机制,批量从磁盘读取,作为 cache 缓存到内存,加速后续读取。

你可能感兴趣的:(RocketMQ 消息存储)