RocketMQ - RocketMQ是如何实现同步刷盘以及异步刷盘两种策略的?-程序员宅基地

技术标签: java-rocketmq  java  rocketmq  RocketMQ - 你的消息队列技术引路人  

我们已经了解到数据写入到Broker之后的存储流程,包括数据直接写入CommitLog,而且直接进入的是MappedFile映射的一块内存,不是直接进入磁盘,同时有一个后台线程会把CommitLog里更新的数据给写入到ConsumeQueue和IndexFile里去。写入CommitLog的数据进入到MappedFile映射的一块内存里之后,后续会执行刷盘策略。

比如是同步刷盘还是异步刷盘,如果是同步刷盘,那么此时就会直接把内存里的数据写入磁盘文件,如果是异步刷盘,那么就是过一段时间之后,再把数据刷入磁盘文件里去。

那么今天我们来看看底层到底是如何执行不同的刷盘策略的。

往CommitLog里写数据的时候,是调用的CommitLog类的putMessage()这个方法,其实在这个方法的末尾有两行代码。

CompletableFuture<PutMessageStatus> flushResultFuture = submitFlushRequest(result, msg)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangbaggio/article/details/136459871

智能推荐

java判断jsonarray是否为数组_java-测试它是JSONObject还是JSONArray-程序员宅基地

文章浏览阅读3.9k次。java-测试它是JSONObject还是JSONArray我有一个json流,可以像这样:{"intervention":{"id":"3","subject":"dddd","details":"dddd","beginDate":"2012-03-08T00:00:00+01:00","endDate":"2012-03-18T00:00:00+01:00","campus":{"id":"...

【HttpClient详解】HttpClient的几种基本用法实例_java 打印 httpentity-程序员宅基地

文章浏览阅读764次。package cn.zifangsky.httpclient;import java.io.File;import java.util.ArrayList;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFo_java 打印 httpentity

自己制作crowd counting数据集_crowd counting p2pnet数据集制作-程序员宅基地

文章浏览阅读2.1k次,点赞14次,收藏35次。Crowd counting的数据集包括两部分:图像部分和标签部分标签部分主要包括每个人头的坐标点:(x, y);常见的标签格式例如:ShanghaiTech数据集中的格式,用mat文件存储每个人头的坐标点,一张图像对应一个mat文件;当我们自己制作数据集时,需要经历以下几个步骤:1)拍摄图像或者视频;视频需要切分成帧;2)在图像上进行标点,标点的同时会记录下坐标点;3)根据这些坐标点生成每张图像对应的.mat文件;4)在训练时,将mat文件中的坐标转换为density ._crowd counting p2pnet数据集制作

职业生涯规划与管理实操(zt)-程序员宅基地

文章浏览阅读199次。职业生涯的规划与管理是作为职业人士所面临的首要问题,它是对个人职业发展的远景规划和资源配置。然而绝大多数人忽视或者仅仅在表面上关注这一问题,他们希望在工作中一切都得到满足,于是总是“这山望着那山高”,多次“追求发展机会”的结果却..._职业生涯是一个人职业、工作待遇、职位的变动及工作理想实现的整个过程。它具

vue数组创建与遍历组件模块-程序员宅基地

文章浏览阅读1.8w次。例子:<template> <div class="docker"> <div v-for="(item, index) in dockerList" :class="{'docker__item': true, 'docker__item--active': index === 0}" class="docker__item " :key="item.icon" > <div cla

个人知识管理经验-程序员宅基地

文章浏览阅读187次。我自己原则,采用最轻的模式,选择最少的工具。知识积累需要时间来沉淀,只要找准一套方法,深入尝试必然有结果。勿把时间和精力全部耗在了选择和尝试工具上,切忌。如何获得上次与朋友探讨到IT从业者获取知识主要有三条路:网络、杂志、专业书,并且这三类人群的交集不大。我自从业以来,对专业知识的获取几乎全部来自网络。我买的第一本软件操作专业书是《Dreamweaver 3.0》,最后一本也是。因为我..._如何将个人知识管理做到极致

随便推点

prometheus数据结构和压缩原理讲解_prometheus 数据结构-程序员宅基地

文章浏览阅读3.8k次。Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT)。接下来让我们看看他的原理。Prometheus内部主要分为三大块,Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据,Storage是负责将采样数据写磁盘,PromQL是Prometheus提供的查询..._prometheus 数据结构

ORACLE锁表如何批量解锁?如何查找锁表原因?_oracle批量解锁表语句-程序员宅基地

文章浏览阅读1.1k次。ORACLE锁表如何批量解锁?如何查找锁表原因?_oracle批量解锁表语句

【mybatis-plus】mybatisplus entity XXX Not Found TableInfoCache.错误-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏2次。ctiverRecord的特点是通过一系列的配置,实体类也具有操作CRUD的功能使用Mybatisplus activerecord功能,需要进行如下配置:1. 实体类A继承com.baomidou.mybatisplus.extension.activerecord.Model2.实体类重写Model的方法//重写这个方法,return当前类的主键 @Overrid..._not found tableinfocache.

限时,字节Java程序性能优化宝典大全,这才叫真正的性能优化_java 程序性能优化宝典-程序员宅基地

文章浏览阅读96次。让你的Java程序更快、更稳定程序的性能受代码质量的直接影响。那么该如何让代码在级别上提升系统性能呢?其实性能提升永远没有捷径,需要分析、优化、实验、监控,需要一点点积累和深入。随着你对项目和性能优化理解不断深入,会发现提升性能的手段变得越来越丰富,性能数据自然也会跟着上去。一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美。那么今天LZ挖出一份有关Java程序性能优化的文档,可以让你的Java程序更快、更稳定,主要是涵盖了一些Ja.._java 程序性能优化宝典

坑之gradle引入lombok和mapstruct依赖不能编译注解的问题_gradle mapstruct-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏3次。一、问题描述1、在gradle中引入lombok和mapstruct依赖compile group: 'org.mapstruct',name: 'mapstruct-jdk8', version: '1.3.1.Final'compile group: 'org.projectlombok',name: 'lombok', version: '1.18.12'2、出现的问题编译的时候@Data注解无法生成get和set方法,导致编译一直无法通过。二、问题解决1、首先看看lombok插件有_gradle mapstruct

推荐系统实践_基于 mongodb 推荐系统-程序员宅基地

文章浏览阅读1.1k次。1、了解推荐系统相关知识http://baike.baidu.com/link?url=k-FW73rnBC-xBHik2gL7pS1_-1JjJfFG1MocfB8gnfza5hFo5H9HKHVytEZhuVOiHTvmK7a6llFDY2oAmCjiy_2、推荐引擎知识1)探索推荐引擎内部的秘密,第1 部分: 推荐引擎初探2)探索推荐引擎内部的_基于 mongodb 推荐系统

推荐文章

热门文章

相关标签