当前位置: 首页 > news >正文

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:核心设计与实践原理》

http://www.lryc.cn/news/281692.html

相关文章:

  • Python 与 PySpark数据分析实战指南:解锁数据洞见
  • docker使用nginx部署vue刷新页面404
  • openGauss学习笔记-198 openGauss 数据库运维-常见故障定位案例-分析查询效率异常降低的问题
  • 使用Map.clear()、List.clear()方法,清空时注意!
  • 如何配置Pycharm服务器并结合内网穿透工具实现远程开发
  • c++中的以及链表的基础使用
  • vue v-for循环拖拽排序,实现数组选中的数据拖拽后对应的子数据也进行重新排序
  • google cloud storage批量文件下载
  • easyexcel 3.0.x 版本实现指定列 锁定以及指定列隐藏
  • whistle代理+mock轻松解决“页面端“测试接口没数据难题
  • HNU-计算机网络-实验5(自选)-安全相关编程实验
  • Ubuntu搭建OpenCV环境(C++)
  • R语言【paleobioDB】——pbdb_orig_ext():绘制随着时间变化而出现的新类群
  • Vue模板的理解和使用
  • mysql group_concat函数使用
  • 并发编程之三大特性及JMM内存模型
  • centos系统设置runlevel为5
  • 关于群晖ARPL界面能出现ip但是使用Synology Assistant搜索不到ip问题 及解决方法
  • mysql Linux系统云服务器配置远程访问
  • 使用WAF防御网络上的隐蔽威胁之SQL注入攻击
  • 【书生·浦语】大模型实战营——第五次课程作业
  • Unity | 渡鸦避难所-7 | 攻击碰撞检测
  • Linux Mii management/mdio子系统分析之一 总体概述
  • C语言:自定义类型——联合和枚举
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户投票实现
  • 如何实现一个两栏布局,右侧自适应?三栏布局中间自适应?
  • 004 Golang-channel-practice 左右括号匹配
  • MS2351M/MS2351D:RF 检测器/控制器
  • vue中使用js-doc
  • Hive知识点