《kafka核心源码解读》学习笔记 Day 02

日志究竟是如何加载日志段的?

日志是日志段的容器,里面定义了很多管理日志段 的操作。总体上,该文件定义了 10 个类和对象

1、LogAppendInfo

保存了一组待写入消息的各种元数据信息。比如,这组消息中第一条消息的位移值是多少、最后一条消息的位移值是多少;再比如,这组消息中最大的消息时间戳又是多少。

2、Log

Log 源码中最核心的代码

3、RollParams

定义用于控制日志段是否切分(Roll)的数据结构。

4、LogMetricNames

定义了 Log 对象的监控指标。

5、LogOffsetSnapshot

封装分区所有位移元数据的容器类。

6、LogReadInfo

封装读取日志返回的数据及其元数据。

7、CompletedTxn

记录已完成事务的元数据,主要用于构建事务索引。

除了.log、.index、.timeindex 和.txnindex 文件,还有其他几种文件类型。

.snapshot 是 Kafka 为幂等型或事务型 Producer 所做的快照文件。鉴于我们现在还处于阅读源码的初级阶段,事务或幂等部分的源码我就不详细展开讲了。

.deleted 是删除日志段操作创建的文件。目前删除日志段文件是异步操作,Broker 端把日志段文件从.log 后缀修改为.deleted 后缀。如果你看到一大堆.deleted 后缀的文件名,别慌,这是 Kafka 在执行日志段文件删除。

.cleaned 和.swap 都是 Compaction 操作的产物,等我们讲到 Cleaner 的时候再说。

-delete 则是应用于文件夹的。当你删除一个主题的时候,主题的分区文件夹会被加上这个后缀。

-future 是用于变更主题分区文件夹地址的,属于比较高阶的用法。

Log类的初始化逻辑

1、创建日志分区路径

2、初始化Leader Epoch Cache

2.1 Leader Epoch 检查点文件

2.2 生成Leader Epoch Cache 对象

3、加载所有日志段对象

4、更新nextOffsetMetadata和logStartOffset

5、更新Leader Epoch Cache,清除无效数据

相关推荐
andrsted21 分钟前
练题簿在线免费刷题:Excel、CSV 批量导题与章节整理,把现成表格变成日常题库
学习·微信小程序·小程序·刷题·在线刷题
yi01124 分钟前
DAY27: LeetCode 110. 平衡二叉树 | 在递归中判断是否平衡
人工智能·笔记·python·算法·leetcode·二叉树·递归
ab1237681 小时前
MQTT笔记
java·笔记·mqtt·学习
承渊政道1 小时前
Linux网络学习【TCP Socket编程实战:connect的断线重连与客户端访问Linux验证】
linux·网络·学习·ubuntu·tcp·socket编程
qq_408606861 小时前
确界的倒数性质证明
学习·算法
sunoo-2291 小时前
嵌入式Linux驱动学习笔记(第3-6天):从misc封装、platform总线到设备树、中断与单总线外设实战
linux·arm开发·驱动开发·笔记·单片机·学习
一木 之林1 小时前
Agent智能体学习总结:从一次调用到模型自主规划、工具调用与 ReAct 循环的项目实战-6/6
前端·人工智能·学习·react.js
自不量力的A同学1 小时前
MooTool Next 1.3.0 发布
笔记
来包番茄沙司2 小时前
【网盘资源分享】2026新版尚硅谷AI Agent智能体极速版|全套课程资料+面经
人工智能·学习
每天题库2 小时前
塔式起重机安装拆卸工考试题库 真题模拟考前押题精准覆盖
学习·安全·考试·题库·考证