RocketMQ5.0源码解析-CommitLog图文详解

CommitLog在RocketMQ中充当一个存储的抽象,所有的存储操作都是通过CommitLog对外暴露。底层包含了很多其他组件来支持刷盘的模式可以通过配置文件的字段来配置,SYNC_FLUSH表示同步刷盘、ASYNC_FLUSH表示异步刷盘刷盘的服务主要是由三个服务:FlushRealTimeService、GroupCommitService、CommitRealTimeService来实现刷盘,以及FlushDiskWatcher来处理一些特殊的刷盘情况。这些服务本质上都是线程。
摘要由CSDN通过智能技术生成

RocketMQ4.x和RocketMQ5.0在CommitLog的设计上面基本上没有太多调整,还是沿用了之前的设计。下面来对CommitLog的设计思想和源码进行分析。

RocketMQ版本5.0.0

1. CommitLog示意图

CommitLog是对RocketMQ的存储的抽象,示意图如下:

CommitLog 主要由几部分组成:

  • MappedFileQueue: 主要用来操作相关数据存储文件。将一系列的MappedFile抽象成一个队列。
  • FlushManager: 数据落地磁盘的管理,主要分为两类:实时数据刷盘(FlushRealTimeService),以及异步刷盘(GroupCommitService)
  • FlushDiskWatcher: 刷盘观察者,处理队列中的刷盘请求,对于规定时间内没有刷盘成功的进行处理。

Tips: 多目录存储参照RIP-7

CommitLog 底层主要是通过FileChannel来实现。其中还有一些RocketMQ的自身优化,例如: TransientStorePool。

2. MappedFileQueue

MappedFileQueue 是对数据存储文件的一个抽象,将多个数据文件抽象成为一个文件队列。通过这个文件队列对文件进行操作操作。同时保存一些 CommitLog 的属性。来看一下MappedFileQueue中的几个重要的属性:

  • storePath: 数据文件存储的位置
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值