日志目录
日志索引
日志存储

文件目录布局

​ Kafka 中的消息是以主题为基本单位进行归类的,各个主题在逻辑上相互独立。每个主题又可以分为一个或多个分区,分区的数量可以在主题创建的时候指定,也可以在之后修改。每条消息在发送的时候会根据分区规则被迫加到指定的分区中,分区中的每条消息都会被分配一个唯一的序列号,也就是通常所说的偏移量(offset )

总的来说就是:

​ 一个主题(topic)对应多个分区(partition)、一个分区对应多个副本(replica)、一个副本对应一个日志(log)、一个日志由多个日志分段(segment)组成。

​ log在物理上以文件夹的形式存在,segment对应磁盘上的一个日志文件和两个索引文件(.index、.timeindex),以及其它可能的文件(.delete、.cleaned、.swap、.snapshot、.txnindex、.leader-epoch-checkpoint)。

日志文件关系图
在这里插入图片描述
​ Log 中追加消息时是顺序写入的,只有最后一个 LogSegment 才能执行写入操作,在此之前所有的 LogSegment 都不能写入数据。我们将最后 LogSegment 称为"activeSegment",表示当前活跃的日志分段。随着消息的不断写入,当 activeSegment 满足定的条件时,就需要创建新的 activeSegment ,之后追加的消息将写入新的activeSegment。

​ 每 LogSegment 都有一个基准偏移量(64位)baseOffset ,用来表示当前 LogSegment中第一条消息的 offset。日志文件和两个索引文件都是根据基准偏移量( baseOffset )命名的,名称固定为 20 位数字。

创建一个主题topic-demo,查看它分区0下的日志结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l80Gsc2S-1647875093114)(/Users/maxuedong/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/2860850965/QQ/Temp.db/B0F27226-2200-42E1-82F3-07EE3C7426E2.png)]

kafka存储log的根目录下还有5个默认的检查点文件

cleaner-offset-checkpoint
log-start-offset-checkpoint
meta.properties
recovery-point-offset-checkpoint
replication-offset-checkpoint
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐