当前位置:   article > 正文

Kafka高性能之日志文件目录布局_kafka 启动日志目录

kafka 启动日志目录

Kafka中的消息是以主题为基本单位进行,各个主题在逻辑上相互独立,每个主题又可以分为一个或多个分区。每条消息在发送的时候会根据分区规则被追加到指定的分区中,分区中的每条消息都会被分配唯一的序列号,即偏移量(Offset),如下图

如果分区规则设置得合理,消息可以均匀地分布到不同的分区中,从而可以实现水平扩展。在不考虑多副本的情况, 一个分区对应一个日志(Log),为防止Log过大,Kafka引入了日志分段(LogSegment)的概念,将Log切分为多个LogSegment,相当于一个巨型文件被平均分配为多个相对较小的文件,方便消息的维护与清理。Log在物理上只以文件夹的形式存储,而每个LogSegment对应磁盘上的一个日志文件和两个索引文件,以及可能的其它文件(比如以“.txnindex”为后缀的事务索引文件)。

举个例子,一个名为“log-test”的主题,有3个分区,则在物理上分为3个文件夹存储:

  1. drwxr-xr-x 2 root root 4096 Jan 9 21:38 log-test-0
  2. drwxr-xr-x 2 root root 4096 Jan 9 21:41 log-test-1
  3. drwxr-xr-x 2 root root 4096 Jan 9 21:41 log-test-2

向Log中追加消息时是顺序写入的,只有最一个LogSegment才能执行写入操作,在之前所有的LogSegment都不能被写入数据。在消息不断写入的同时,Kafka会根据一定条件生成新的LogSegment,之后追加的消息将写入新的LogSegment。

为了便于消息的检索,每个LogSement中的日志文件(以“.log”为文件后缀)都有对应的两个索引文件:偏移量索引文件(以“.index”为文件后缀)和时间戳索引文件(以“.timeindex"为文件后缀)。每个LogSegment都有一个基准偏移量baseOffset,用来表示当前LogSegment中第一条消息的offset。偏移量是一个64位的长整型数,日志文件和两个索引文件都是根据基准偏移量(baseOffset)命名的,名称固定为20位数据,没有达到的则用0填充,如

  1. -rw-r--r-- 1 root root 10485760 Jan 9 21:38 00000000000000000000.index
  2. -rw-r--r-- 1 root root 143 Jan 9 21:41 00000000000000000000.log
  3. -rw-r--r-- 1 root root 10485756 Jan 9 21:38 00000000000000000000.timeindex
  4. -rw-r--r-- 1 root root 10485760 Jan 9 21:38 00000000000000000144.index
  5. -rw-r--r-- 1 root root 143 Jan 9 21:41 00000000000000000144.log
  6. -rw-r--r-- 1 root root 10485756 Jan 9 21:38 00000000000000000144.timeindex
  7. -rw-r--r-- 1 root root 10485760 Jan 9 21:38 00000000000000000480.index
  8. -rw-r--r-- 1 root root 143 Jan 9 21:41 00000000000000000480.log
  9. -rw-r--r-- 1 root root 10485756 Jan 9 21:38 00000000000000000480.timeindex

示例中第2个LogSegment对应的基准位移是144,也说明了该LogSegment中的第一条消息的偏移量为143,同时可以反映出第一个LogSegment中共有144条消息(偏移量从0至143的消息

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/933060
推荐阅读
相关标签
  

闽ICP备14008679号