大家好,我是狮子座。
谈论今天RocketMQ的三种刷牙机制。
从微信的公共帐户[长大的道路]
实现并实现了整个同步刷子策略。
这是刷牙服务的父类。这是一个抽象类。它没有实施。这只是一个标记课。
同步刷磁盘时,只有消息才真正持续到磁盘上响应ACK。可靠性很高,但是绩效将受到极大影响并适合金融业务。(参考图1)
以下参数确定刷牙策略
flushdiskType:sync_flush
图将磁盘流到磁盘一起刷在一起
收到消息后,经纪人将把消息移交给commitlog,并负责存储。Commitlog首先将最新的MappedFile定位,然后以固定格式添加消息。(请参阅图2)
图2 COMMALLOG构造函数加载过程
是一个构造函数
代表刷牙请求
图3组commitRequest函数
通过锁定将每个写作请求添加到集合中
图4 PutRequest功能
每次提交后,您需要交换read -write请求数据。
我为什么要在笔刷请求中阅读两个列表?这用于阅读和写作分离。产品发送的消息的请求非常大。GroupCommitservice的刷子操作已同步。在滚动期间,仍然会有大量的刷牙请求。阅读和写作清单,请求写作列表,处理刷牙时处理读取列表,刷新磁盘结束了交换列表,循环是往复的,并且两个可以同时进行。
图5 SwapreQuests功能
提交同步请求时,将唤醒线程,然后执行该方法。刷子磁盘的核心是调用映射filequeue方法。冲洗方法需要传递参数。它表示磁盘的最小页面数量。对于同步刷子,不允许丢失该消息。只要编写数据,就必须刷牙,因此页数为0。
图6文档功能
刷子函数。齐平方法将根据刷子的偏移定位相应的绘图文件,然后致电以启动刷子,最后更新刷子磁盘的偏移。
图7冲洗功能
计算是否要刷磁盘。只有新书面的数据超过了指定的页面,以避免频繁刷牙。
刷牙的核心方法自然是绘图文件的方法。它将首先使用计算是否要刷。例如,最小笔刷页面为4,最小笔刷数据为16kb。如果书面数据小于16kb,则将跳过刷子磁盘
图8 isabletoflush功能
类的Group -Commitservice子 - 实施课程的入门函数
图9运行功能
它可以通过commitlog构造函数的构造函数结构图知道
RockEtMQ默认情况下使用异步刷动的策略,因为异步刷磁盘同时考虑了性能和可靠性。
在异步刷中,该消息用pagecache编写以响应ACK,然后PageCache的内容持续到磁盘上,从背景线程中,减少了读取和写作延迟,并改善了性能和吞吐量。服务停机时间为不会丢失,机器会丢失少量消息。
以下参数确定刷牙策略
flushdiskType:async_flush
实现并实现了整个异步刷策略。
它是Commitlog磁盘服务的父类。这是一个抽象类。它没有实施。这只是一个标记课。
对于异步刷,没有要求提交刷子的请求。它不像同步刷盘。只要消息是在Commitlog中写的,就必须执行刷子操作,因为异步刷磁盘是定期执行的。
刷盘时,您只需要调用该方法唤醒线程。因此,我们专注于其方法。
图10异步刷板运行功能
刷子函数。齐平方法将根据刷子的偏移定位相应的绘图文件,然后致电以启动刷子,最后更新刷子磁盘的偏移。
图11冲洗功能
计算是否要刷磁盘。只有新书面的数据超过了指定的页面,以避免频繁刷牙。
刷牙的核心方法自然是绘图文件的方法。它将首先使用计算是否要刷。例如,最小笔刷页面为4,最小笔刷数据为16kb。如果书面数据小于16kb,则将跳过刷子磁盘
图12 isabletoflush功能
异步刷板+缓冲区,该消息写入直接的内存缓冲区中,然后缓冲区的内容从背景线程异步到磁盘不断持续到磁盘上,并且性能是最好的。服务停机时间和机器电源故障将丢失。
实现并实现了整个异步刷策略。
它是Commitlog磁盘服务的父类。这是一个抽象类。它没有实施。这只是一个标记课。
这是最激进的刷子策略,最佳性能,但最不可靠的是。也没有要求说您只需要唤醒线程即可开始工作。
与flushrealtimeservice过程类似,差异仅被替换。首先,将直接内存缓冲区的数据写入FILECHANNEL,然后唤醒FlushrealTimeservice以持续在Filechannel上。
MAPPEFILEQUEUE方法中的关键点。它将根据社区偏移量放置MAPDFILE,然后将其称为“直接内存缓冲区”中的数据。目前,数据并不是真正持续存在的磁盘。
2022文章目录完成
RocketMQ性能改进
RockEtMQ支持提交文件文件的三个持久性策略。
打开缓冲区的用途是什么?类似于内存级别,读取和写入分离,通过直接记忆写入数据,读取数据以获取PageCache,以最大程度地消除Pagecache锁定竞争,避免使用PageCache切换到交换分区,导致服务响应时间发生。
一些不理解或错误的地方,您指出您必须修改和优化!
我们非常欢迎添加与个人微信相关的后端问题。我们将在小组中讨论!下次见!
欢迎来到“喜欢”,“观看”,“前锋”连续三个支持,下次见到?
原始:https://juejin.cn/post/709413237322727438