Kafka之日志存储详解

目录

1. 存储介质的速度常识

  1.1 各个存储介质的速度层级图

1.2 速度层级描述

2. kafka日志文件目录结构

2.1 kafka日志文件目录描述

2.2 每个主题分区下的文件目录结构

3. 具体日志文件详解

3.1 ".index"文件 

3.2 ”.timeindex“文件

3.3 ".log" 文件

3.4 其他文件

4.回顾与总结


1. 存储介质的速度常识

  1.1 各个存储介质的速度层级图

1.2 速度层级描述

        一个由6块7200r/min的RAID-5阵列组成的磁盘簇的线性(顺序)写入速度可以达到600MB/s,而随机写入速度只有100kb/s,两者性能相差6000倍。

2. kafka日志文件目录结构

2.1 kafka日志文件目录描述

    首先我们需要了解的是Kafka的日志文件目录是日志根目录加上主题和分区来命名的,如以下格式:<topic>-<partition>。

   举个例子,假设由一个主题名为”topic-log“,此主题有4个分区,那么在实际物理存储上表现为”topic-log-0“”topic-log-1“”topic-log-2“”topic-log-3“,如下图所示:

2.2 每个主题分区下的文件目录结构

     如下图所示:

3. 具体日志文件详解

3.1 ".index"文件 

        索引文件,以稀疏索引(sparse index)的方法构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引项。每当写入一定量(由broker端参数log.index.interval.bytes指定,默认值为4096,即为:4kb)的消息时,偏移量索引文件和时间戳索引文件分别增加一个偏移量索引项和时间戳索引项,增大或减小log.index.interval.bytes的值,对应地可以增加或缩小索引项的密度。
       稀疏索引通过MappedByteBuffer将索引文件映射到内存中,以加快索引的查询速度。偏移量索引文件中的偏移量是单调递增的,查询指定偏移量时,使用二分查找法来快速定位偏移量的位置,如果指定的偏移量不在索引文件中,则会返回小于指定偏移量的最大偏移量。时间戳索引文件中的时间戳也保持严格的单调递增,查询指定时间戳时,也根据二分查找法来查找不大于该时间戳的最大偏移量,至于要找到对应的物理文件位置还需要根据偏移量索引文件来进行再次定位。稀疏索引的方式是在磁盘空间、内存空间、查找时间等多方面之间的一个折中。

3.2 ”.timeindex“文件

      基于时间戳与 offset组成的索引文件,与

3.3 ".log" 文件

    真正保存消息数据的日志文件

3.4 其他文件

   clear-offset-checkpoint: 记录已清理未清理的部分

   log-start-offset-checkpoint: 对应logStartOffset,用来标识日志的起始偏移量。各个副本在变动LEO和HW的过程中,logStartOffset也可能随之而动

   meta.properties:  记录分区的元数据。

  recovery-point-offset-checkpoint和replication-offset-checkpoint这两个文件分别对应了LEO和HW。

Kafka会有一个定时任务负责将所有分区的LEO刷写到恢复点文件recovery-point-offset-checkpoint中,定时周期由broker参数log.flush.offset. checkpoint.interval.ms来配置,默认值为60000。还有一个定时任务负责将所有分区的HW刷写到复制点文件replication-offset-checkpoint中,定时周期由broker端参数replica.high.watermark.checkpoint.interval.ms来配置,默认值为5000。

4.回顾与总结

   kafka的日志存储保证的消息的可靠性,日志文件的存储方式及读写方式让kafka更加的高性能。

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yongge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值