详细介绍了RocketMQ的消息刷盘策略,以及RocketMQ的消息双写机制。

文章目录

  • 1 RocketMQ的消息刷盘
  • 2 RocketMQ的消息双写

1 RocketMQ的消息刷盘

同步刷盘:如上图所示,只有在消息真正持久化至磁盘后RocketMQ的Broker端才会真正返回给Producer端一个成功的ACK响应。同步刷盘对MQ消息可靠性来说是一种不错的保障,但是性能上会有较大影响,一般适用于金融业务应用该模式较多。

异步刷盘:能够充分利用OS的PageCache的优势,只要消息写入PageCache即可将成功的ACK返回给Producer端。消息刷盘采用后台异步线程提交的方式进行,降低了读写延迟,提高了MQ的性能和吞吐量。

一般异步刷盘只有在Broker意外宕机的时候会丢失部分数据,因为即使Broker服务崩溃,只要系统没有崩溃,最终系统内核也会自动将pageCache的数据刷盘,可以通过设置 Broker 配置文件的参数 FlushDiskType 来调整刷盘策略ASYNC_FLUSH 或者 SYNC_FLUSH。

2 RocketMQ的消息双写

RocketMQ的消息双写主要是指的Borker主从模式下,主节点返回ack消息给客户端的时候是否需要等待消息从主节点同步到从节点。

消息需要从主节点同步(复制)到从节点上,有同步和异步两种复制方式。另外,RocketMQ 是不支持自动主从切换,当主节点挂掉之后,生产者就不能再给这个主节点生产消息了,需要人工干预,但是消费者还可以自动切换到从节点进行消费。

同步复制:也叫 同步双写,只有消息同步双写到主从结点上时才返回写入成功。如果Master出故障,Slave上有全部的备份数据,容易恢复,且消费者仍可以从Slave消费,消息不丢失。

异步复制:也叫异步双写,消息写入主节点之后就直接返回写入成功,此时系统拥有较低的延迟和较高的吞吐量,但如果Master出了故障,有些数据因为没有被复制到Slave,而丢失少量消息。

需要注意,异步双写的“消息丢失”和异步刷盘的“消息丢失”是不一样。采用异步复制的方式,在主节点挂掉的时间只会产生主从节点短暂的消息不一致的情况,降低了可用性,而当主节点重启之后,从节点那部分未来得及复制的消息还会继续复制过去,消息最终会被消费。

同步复制和异步复制可以通过Broker配置文件里的brokerRole参数进行设置,可以被设置成ASYNC_MASTER、SYNC_MASTER、SLAVE三个值中的一个。

相关文章:

RocketMQ

如有需要交流,或者文章有误,请直接留言。另外希望点赞、收藏、关注,我将不间断更新各种Java学习博客!

RocketMQ的消息刷盘和消息双写相关推荐

  1. RocketMQ源码(十)—Broker 消息刷盘服务GroupCommitService、FlushRealTimeService、CommitRealTimeService源码深度解析

    深入的介绍了broker的消息刷盘服务源码解析,以及高性能的刷盘机制. 学习RocketMQ的时候,我们知道RocketMQ的刷盘策略有两个,同步或者是异步: 1. 同步刷盘:如上图所示,只有消息真正 ...

  2. RocketMQ源码(12)—Broker 消息刷盘服务GroupCommitService、FlushRealTimeService、CommitRealTimeService源码深度解析【一万字】

    基于RocketMQ release-4.9.3,深入的介绍了Broker 的消息刷盘源码解析,以及高性能的刷盘机制. 学习RocketMQ的时候,我们知道RocketMQ的刷盘策略有两个,同步或者异 ...

  3. RocketMQ消息刷盘

    RocketMQ消息刷盘 流程图 1.源码分析 RocketMQ 存储与读写是基于 JDK NIO 的内存映射机制( MappedByteBuffer )的,消息存储时首先将消息追加到内存,再根据配 ...

  4. RocketMQ消息存储、刷盘、负载均衡

    消息存储 消息存储是RocketMQ中最为复杂和最为重要的一部分. 消息存储总体架构 消息存储架构图: minOffset:当前队列的最小消息偏移量,如果消费时指定从最早消费,就是从该偏移量消费. m ...

  5. RocketMQ消息存储之刷盘机制(原理篇)

    一.前言 RocketMQ的刷盘机制是一种确保消息可靠性的机制,简单来说就是Broker收到消息后,将消息存储到磁盘上.这样可以解决几个问题: 存储空间问题.内存空间有限,存入磁盘可以维护更多消息. ...

  6. MySQL数据和日志的刷盘机制以及双一配置

    详细介绍了MySQL数据和日志的刷盘机制以及双一配置,双一配置可以保证Mysql日志数据不丢失. 文章目录 1 内存数据的刷盘机制 2 MySQL数据的刷盘 2.1 刷盘数据来源 2.2 脏页以及刷盘 ...

  7. java什么是消息刷盘_Rocket重试机制,消息模式,刷盘方式

    一.Consumer 批量消费(推模式) 可以通过 consumer.setConsumeMessageBatchMaxSize(10);//每次拉取10条 这里需要分为2种情况 Consumer端先 ...

  8. java什么是消息刷盘_RocketMQ刷盘策略

    我们都知道RocketMQ的消息是持久化到文件的,具体的消息的刷盘策略是什么,是发送一条消息就直接持久化到文件中吗?作为一款高性能的消息中间件这样做肯定不行,至少性能上不允许这样操作,那么具体策略是啥 ...

  9. 【RocketMQ】消息的刷盘机制

    刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略: public class CommitLog { ...

最新文章

  1. OpenStack部署
  2. 使用es6中import和export报错
  3. 使用 Spring Boot CLI 运行第一个Spring boot程序
  4. wps启用编辑按钮在哪里_WPS 新功能上线,官宣首发!人人都会用的图片设计
  5. 大厂开发“大牛”,你距离他们有多远?
  6. 浅谈GRADS气象绘图软件的使用
  7. 如何使新浪播放器自动播放_七夕小子_新浪博客
  8. 3ds Max小白入门小案例|旋转楼梯
  9. 专业商标制作,免费logo在线设计
  10. 省市区级联SQL文件(MySQL)
  11. 动态规划题目——背包
  12. linux shell脚本 字符串、整数、小数判断
  13. dialogfragment 数据交互_交互的学习与应用指南 | 人人都是产品经理
  14. EventLog Analyzer应用程序日志管理
  15. Oracle数据库--从入门到装逼
  16. DataSource health check failed
  17. MSP430串口波特率寄存器的配置
  18. python中函数不包括参数函数二阶导数公式_请问参数方程确定的函数的二阶导数公式的详细推导过程?...
  19. 云计算虚拟化环境下的安全防护
  20. 省市级联;附有最新最全的省市区数据包

热门文章

  1. electron收到消息发出声音
  2. 宁波银行科技部2019春招
  3. 正版微软Office如何选
  4. 从浅到深使用pm2来彻底掌握微服务运维精髓
  5. 服装创业未来的出路在哪里?
  6. 单机安装多个mysql_单机环境下安装多个MySQL服务器
  7. 使用PhotoShop编辑图像元数据
  8. 2023年将会是AI爆发年,我用AI帮我设计公众号的LOGO
  9. 中国程序员开源的自动“抢茅台”脚本火爆全网!
  10. android关闭触摸提示音,Android取消和开启View或则ViewGroup点击带有提示音