当前位置: 首页 > news >正文

RocketMQ 消息存储机制-消息刷盘

消息刷盘,就是将消息的内容刷到磁盘上。生产者要将消息发送给broker,对于生产者来说红色圆圈部分都是broker。

生产者发送的消息最终是保存在commitlog上,这样的内容是要保存在磁盘上面。

生产者去发送同步的消息那么要等到broker返回确定的信息,就是发送的消息已经帮你保存好了。

所以什么时候broker给到生产者确定的消息?这个时候有两种逻辑。

如果使用的是同步刷盘的,消息过来之后需要保存在commitlog里面。那么是同步刷盘,消息一定是成功的保存在commitlog文件之后,这个ack才会返回过去。

同步刷盘,生产者会发送消息到broker,broker会使用内存的处理然后把消息保存在磁盘上。保存在磁盘之后返回ack,最后broker返回ack给到生产者。所以这是同步刷盘。

同步刷盘非常可靠,一定是消息保存在磁盘上之后才知道消息有没有保存成功,上面所有过程得走完一遍才算消息发送完毕。下一条消息再发,还得来一遍。可靠性是没问题,但是实时性没有那么高。

异步刷盘,生产者将消息发送给broker,经过java的堆,虚拟内存。在内存里面跑完马上就可以得到ack,这是虚拟的内存,然后马上返回ack。

生产者不需要等到数据到磁盘里面,这个时候会异步的开启另外一条线程,这条线程专门去做刷盘这个事情。这个虚拟内存就是前面说的页缓存。

把数据发送到页缓存里面就ok了,然后另外一个线程去页缓存里面拿到数据在帮你把数据写到磁盘上,这个就叫做异步的刷盘。

不用自己来刷盘,会有另外的线程帮忙来刷盘。

异步可以提高吞吐量,但是可能丢数据,因为突发情况下另外线程在写入的时候可能会出问题。

http://www.dtcms.com/a/351989.html

相关文章:

  • TorchInductor - Autotune
  • 【牛客刷题】链表指定区间反转:两种高效解法详解,轻松掌握面试高频题!
  • 互联网医院品牌定位与差异化策略
  • 地下蚁国 全DLC(Empires of the Undergrowth)免安装中文版 在蚂蚁的世界里建立你的帝国
  • 马斯克的「巨硬」: MacroHard
  • 机器学习模型可解释库的介绍:Shapash (一)
  • TRO冻结卷土重来?Keith律所代理Ronald Kuang版权再维权
  • Spring Bean 生命周期高阶用法:从回调到框架级扩展
  • Android系统学习2——Android.Utils.Log模块讨论
  • Android 系统属性添加篇
  • StandardScaler()进行0,1标准化时fit_transform与transform的区别
  • MIME类型与文件上传漏洞 - 网络安全视角
  • 【Jetson】基于llama.cpp部署gpt-oss-20b(推理与GUI交互)
  • 多地闭店上热搜,中产的白月光无印良品怎么了?
  • 项目管理进阶——项目经理任职资格评定聘任及考核管理办法
  • 支持向量机(SVM)核心概念总结
  • Tensor常见操作
  • vscode使用cmake tool进行项目管理安装
  • Elasticsearch映射:优化搜索性能的关键
  • 【无标题】计数组合学7.21(有界部分大小的平面分拆)
  • JVM模型
  • 微信小程序web-view嵌套H5,小程序与H5通信
  • 不安全的服务器,不支持 FTP over TLS
  • 服务器从0到1微服务所需的环境的安装
  • 数据结构(一):算法的时间复杂度和空间复杂度
  • 双坡阳光房光伏设计,精准实现降本增效
  • 【Python】QT(PySide2、PyQt5):列表数据保存到文件,文件数据加载到列表
  • QT(QTableWidget)
  • Matlab使用——开发上位机APP,通过串口显示来自单片机的电压电流曲线,实现光伏I-V特性监测的设计
  • 盲盒一番赏小程序:打造个性化潮玩购物天堂