kafka入门(六):日志分段(LogSegment)

日志分段(LogSegment)

Kafka的一个 主题可以分为多个分区。
一个分区可以有一至多个副本,每个副本对应一个日志文件。
每个日志文件对应一个至多个日志分段(LogSegment)。
每个日志分段还可以细分为索引文件、日志存储文件和快照文件。

每个 LogSegment 对应于磁盘上的一个日志文件和两个索引文件,以及其他可能的文件(比如以 .txnindex 为后缀的事务索引文件)。索引文件包括:偏移量索引文件(以 .index 为文件后缀) 和 时间戳索引文件 (以 .timeindex 为文件后缀),

每个 LogSegment 都有一个 基准偏移量 baseOffset, 用来表示当前 LogSegment 中第一条消息的 offset, 用来表示当前 LogSegment 中第一条消息的 offset。

在这里插入图片描述

日志分段(LogSegment)的索引文件:

偏移量索引文件,用来建立消息偏移量( offset ) 到物理地址之间的映射关系,方便快速定位消息所在的物理文件位置 。

时间戳索引文件,则根据指定的时间戳 ( timestamp) 来查找对应的偏移量信息。

Kafka中 的索引文件以稀疏索引的方式构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引项。

偏移量索引文件

偏移量索引项,每个索引项占用 8个字节,分为两个部分。

(1) relativeOffset: 相对偏移量,表示消息相对于 baseOffset 的偏移量,占用 4个字节。当前索引文件的文件名即为 baseOffset 的值。

(2) position: 物理地址,也就是消息在日志分段文件中对应的物理位置 ,占用 4个字节。

时间戳索引文件

时间戳索引项,每个索引项占用 12 个字段,分为两个部分。

(1) timestamp: 当前日志分段的最大时间戳。

(2) relativeOffset: 时间戳所对应的消息的相对偏移量。

时间戳索引文件中包含若干个时间戳索引项,每个追加的时间戳索引项中的 timestamp 必须大于之前追加的索引项的 timestamp。

资料来源

《深入理解Kafka:核心设计与实践原理》

相关推荐

  1. kafka入门(九):kafka分区分配策略

    2024-01-10 10:48:03       50 阅读
  2. kafka入门(九):kafka分区分配策略

    2024-01-10 10:48:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 10:48:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 10:48:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 10:48:03       82 阅读
  4. Python语言-面向对象

    2024-01-10 10:48:03       91 阅读

热门阅读

  1. ping为什么不能加http

    2024-01-10 10:48:03       68 阅读
  2. 回文判断-蓝桥

    2024-01-10 10:48:03       66 阅读
  3. 编程笔记 html5&css&js 032 HTML Canvas

    2024-01-10 10:48:03       59 阅读
  4. MYSQL的SWITCH语句和循环语句

    2024-01-10 10:48:03       46 阅读
  5. QT组件学习(2)

    2024-01-10 10:48:03       57 阅读
  6. Golang企业面试题

    2024-01-10 10:48:03       49 阅读
  7. Docker 使用DockerFile构建Nodejs服务镜像

    2024-01-10 10:48:03       60 阅读
  8. Arduino驱动ISD1820音频录放模块(声音传感器)

    2024-01-10 10:48:03       56 阅读
  9. 互动直播 之 隐藏音频连麦者头像

    2024-01-10 10:48:03       55 阅读