Kafka 中基于 Segment 和 Offset 查找消息的过程

[复制链接]
发表于 2025-11-2 10:23:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Kafka 中基于 Segment 和 Offset 查找消息的过程

假设我们有一个 Kafka Topic,其 Partition 分别为多个 Segment 文件。每个 Segment 文件包罗 .log、.index 和 .timeindex 文件。如今我们须要查找 Offset 为 368801 的消息。
假设条件


      
  • Partition:partition-0  
  • Segment 文件:
    segment-1:起始 Offset 0,竣事 Offset 368795
    segment-2:起始 Offset 368796,竣事 Offset 737591
    segment-3:起始 Offset 737592,竣事 Offset 1106387  
  • 目的 Offset:368801
步调详解

1、找到目的 Offset 所在的 Segment 文件


      
  • 二分查找确定 Segment 文件:
    起始 Offset 范围:[0, 368795](segment-1),[368796, 737591](segment-2),[737592, 1106387](segment-3)。
    目的 Offset 368801 落在 [368796, 737591] 范围内,因此目的 Segment 文件是 segment-2。
2、在 Segment 文件中查找具体的 Message


      
  • 打开 .index 文件:
    打开 368796.index 文件,该文件纪录了部分 Offset 及其对应的物理位置(即在 .log 文件中的偏移量)。  
  • 盘算相对 Offset:
    目的 Offset 368801
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表