rocketMq - commitLog
概述
这篇博文主要是想讲清楚rocketMq中commitLog的存储格式和存储过程的,在整理文章的过程中发现有篇来自CSDN的文章的有一张图片画的非常完整,就套用过来了,不过在博文的末尾把参考文章的地址列出来了。
commitLog存储数据格式
commtLog的存储其实是分多层的,commitLog -> mappedFileQueue -> mappedFile,其中真正存储数据的是mappedFile。
commitLog在mappedFile当中存储消息的格式是【msg + msg + msg + ......+msg+blank】。也就是当最后的位置放不下消息的时候就填充空白。
commitLog数据存储过程
commitLog内部的数据结构,核心的在于MappedFileQueue这个对象,以及每个MappedFile的大小(1G=20124*1024*1024)。
commitLog保存消息的过程如下
1、在mappedFileQueue里面选择最近的mappedFile文件,如果没有mappedFile文件或者mappedFile数据已经满的情况下就新建一个mappedFile文件。
2、选择mappedFile文件之后,开始计算消息体大小并保存至mappedFile文件当中,在整个保存过程中先用临时的byteBuffer(msgStoreItemMemory)保存,如果mappedFile文件能够保存下最新的消息体就保存消息至mappedFile文件,否则就保存一个结束符。
mappedFile文件生成逻辑
mappedFile的文件生成其实有一定的规则,首先mappedFile文件的命名是以1024*1024*1024=1073741824进行递增,也就是说第一个文件名字为000000001073741824,第二个名字是以00000000002147483648进行命令,以次递增。体现在代码中就是以上一个文件的便宜量加上1073741824即可。
在创建过程如果文件不存在我们就创建新文件,这里的创建也分两种类型,一种就是同时创建两个mappedFile文件,这个创建过程是异步的,在allocateMappedFileService内部其实有个线程在不停run执行文件创建过程;一种是同步创建文件过程。
在内部还涉及一些预热之类的逻辑,暂时没仔细看。
参考
RocketMQ消息存储流程图及数据结构图
rocketMq - commitLog相关推荐
- RocketMQ CommitLog And Index
2019独角兽企业重金招聘Python工程师标准>>> 1. Commit Log 2. Index 2.1. IndexHeader // IndexHeader.javapubl ...
- RocketMQ简介
RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等. RocketMQ优点 1 RocketMQ去除对zk的依赖 2 Rock ...
- rocketmq集群安装部署过程(4.0.0版本)、安装中的常见问题举例
本篇博文参考:http://www.cnblogs.com/quchunhui/p/7126868.html,然后按照自己的环境进行重新编写 准备工作: 下载rocketmq-all-4.0.0-in ...
- RocketMQ集群部署
RocketMQ是一款非常优秀的消息中间件,运用的场景也是非常丰富,且在各大公司运用中也非常广泛.但是它是如何进行部署的呢,以及它的高可用是如何实现的呢.那么就由我来为大家讲解一哈RocketMQ是如 ...
- RocektMQ 消息存储机制原理
RocektMQ 消息存储机制 RocketMQ 作为一款优秀的分布式消息中间件,可以为业务方提供高性能低延迟的稳定可靠的消息服务.其核心优势是可靠的消费存储.消息发送的高性能和低延迟.强大的消息堆积 ...
- RocketMQ源码分析(十二)之CommitLog同步与异步刷盘
文章目录 版本 简介 FlushCommitLogService 同步刷盘 GroupCommitService 异步刷盘 CommitRealTimeService FlushRealTimeSer ...
- RocketMQ给broker发送消息确定Commitlog的写入的位置
问题 有一个疑问,当client给broker发送消息的时候,怎么知道在commitlog的第几个字节开始写呢? 文件格式概述 commitlog消息单元存储结构 commitlog中存储的是客户端发 ...
- 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:28cm不含头(来自:知乎) 原文链接: https://www.zhihu.com/qu ...
- 深入剖析 RocketMQ 源码 - 消息存储模块
作者:vivo互联网服务器团队-Zhang Zhenglin 一.简介 RocketMQ 是阿里巴巴开源的分布式消息中间件,它借鉴了 Kafka 实现,支持消息订阅与发布.顺序消息.事务消息.定时消息 ...
最新文章
- 148. Sort List
- 【Python学习系列二十四】scikit-learn库逻辑回归实现唯品会用户购买行为预测
- 机房冷热通道系统整体解决方案
- 用zookeeper来实现分布式锁
- JAVA泛型--待续
- 11张图步步演进:你一定能看懂的【分布式系统】容错架构设计!
- Elasticsearch 技术分析(七): Elasticsearch 的性能优化
- ubuntu gnome vnc
- 文本整理器 v3.0 官方
- 电脑需要u盘启动的解决办法--蓝屏修复
- python元组元素的提取_Python 元组
- 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
- 机房动力环境监测系统
- 看表空间大小,查询表空间名的表空间文件存放位置,矿展表空间,查看表空间名称...
- Excel 按照某一列不同内容插入分页符号
- 西数硬盘砍头流程说明
- 关于java学习的一些东西
- 红帽云邮:外贸邮件营销
- 0xCCCCCCCCC的内存不能访问的原因
- 小程序毕业设计 基于微信菜谱小程序毕业设计开题报告参考