1、生产者发送消息给mq
2、mq将消息持久化存储到存储系统
3、mq发送ack给生产者
4、mq将消息推送给消费者
5、消费者发送ack给mq
6、mq将消息从存储系统中删除
存储介质
1、关系型数据库DB
2、文件系统
文件系统如何保证读写速度
1、写需要顺序写
2、读需要零拷贝,Java中通过MappedByteBuffer实现零拷贝(一次只能映射1.5G-2G文件至用户态的虚拟内存,所以RocketMq默认设置单个CommitLog日志数据文件为1G的原因)
零拷贝绕过了将数据拷贝到用户态的步骤,直接将数据拷贝到网络驱动内核
rocketMq存储结构