rockemq的高级特性

本文探讨了消息中间件在存储消息时的策略,如RocketMQ将消息存储在文件系统,而ActiveMQ使用数据库。提到了消息发送的零拷贝技术以提高效率,并详细阐述了同步和异步刷盘机制及其适用场景。同时,解释了RocketMQ的高可用性机制,包括NameServer的无状态设计和消息服务器的主从配置,确保在故障时的消息处理连续性。

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

消息的存储
1.消息生产者发送消息到MQ
2.MQ收到消息,将消息进行持久化,存储该消息
(避免broker宕机造成生产者不断重发消息而造成消费者的重复消费)
3.MQ返回ACK给生产者
4.MQ push消息给对应的消费者
5.消息消费者返回ACK给MQ
6.MQ删除消息
rocketmq直接将消息存在文件系统上面,而activemq是存在数据库中
在这里插入图片描述

消息服务器会先向文件磁盘当中预先申请连续的一片空间,进行消息的顺序存取,提高消息的提取速度。

消息的发送:
linux系统发送数据的方式为零拷贝
数据传输由传统高的4次复制简化成3次复制,减少1次复制 的过程,不过要预留存储空间,用于保存数据。

消息的存储结构
消息数据存储区域:
topic,queueid,message
消费逻辑队列
minoffset
maxoffset
consumeroffse
在这里插入图片描述
刷盘机制:
同步刷盘:只有在磁盘存储好消息的时候才会返回在这里插入图片描述
异步刷盘:
在这里插入图片描述
同步刷盘:安全性高,效率低,进度慢(适用于对数据安全要求较高的业务)
异步刷盘:安全性低,效率高,速度快(适用于对数据处理速度要求较高的业务)在这里插入图片描述
高可用性
nameserver:无状态+全服务器注册
消息服务器:2m-2s
消息生产:生产者将相同的topic绑定到多个group组保障master挂掉之后,其他master仍然可以正常进行消息接受
消息消费
rocketmq自身会根据master的压力确认是否由master承担消息读取的功能,当master繁忙的时候,自动切换slave承担数据读取的工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值