浅谈RocketMQ的消息存储和读写实现

RocketMQ通过混合型存储结构和ConsumeQueue区分消息,利用OS的PageCache和Mmap内存映射技术优化读写性能。Consumer端先从ConsumeQueue获取消息位置,再从CommitLog读取内容。PageCache的预读和回写策略减少IO,Mmap配合madvise预加载文件,MappedByteBuffer进一步提高读写速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

RocketMQ中消息存储和读取的实现方式

RocketMQ存储架构的优缺点

OS的PageCache机制

Mmap(Memory Mapped Files)内存映射技术 && madvise

MappedByteBuffer类


RocketMQ中消息存储和读取的实现方式

消息生产与消息消费相互分离。

  • Producer端发送消息最终写入的是CommitLog,RocketMQ的CommitLog文件采用混合型存储(所有的Topic下的消息队列共用同一个CommitLog的日志数据文件),并通过建立类似索引文件ConsumeQueue的方式来区分不同Topic下面的不同MessageQueue的消息。同时为消费消息起到一定的缓冲作用
  • Consumer端先从ConsumeQueue即消息逻辑队列中读取持久化消息的起始物理位置偏移量offset、大小size和消息Tag的HashCode值,随后再从CommitLog中进行读取待拉取消费消息的真正实体内容部分;

RocketMQ存储架构的优缺点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WannaRunning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值