RocketMQ 消息存储

消息存储由 ConsumeQueueCommitLog 配合完成。

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

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

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

  1. 顺序写可以大大提高写入效率。
  2. 虽然是随机读,但可以利用系统的 pagecache 机制,批量从磁盘读取,作为 cache 缓存到内存,加速后续读取。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容