如何根据 offset 找到对应的 Message?

这篇具有很好参考价值的文章主要介绍了如何根据 offset 找到对应的 Message?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过 Offset 从存储层中获取 Message 大致分为两步:

  1. 第一步,根据 Offset 找到所属的 Segment 文件
  2. 第二步,从 Segment 中获取对应 Offset 的消息数据

第一步可以直接根据 Segment 的文件名进行查找(上面已经介绍了 Segment 的文件面就是它包含的数据的起始 Offset )。

第二步则需要一些

索引信息

来快速定位目标数据在 Segment 中的位置,否则就要读取整个 Segment 文件了,这里需要的索引信息就是上面的 index 文件存储的内容。

索引文件中包含多个索引条目,

每个条目表示数据文件中一条 Message 的索引

。索引包含两个部分(均为4个字节的数字),分别为相对 offset 和 position, 如下内容所示:

[root@hlinkui bin]$ ./kafka-run-class.sh  kafka.tools.DumpLogSegments --files \
../kafkaLog/lyz-0/00000000000000000000.index  --print-data-log

offset: 9 position: 13713
offset: 15 position: 27799
offset: 21 position: 43149
offset: 27 position: 58432

index

文件中存储的是

Offset

Position

(Offset 对应的消息在 log 文件中的偏移量)的对应关系,这样当有 Offset 时可以快速定位到 Position 读取

BatchRecord

,然后再从

BatchRecord

中获取某一条消息。

比如上述

Offset21

会被定位到

27

这个

BatchRecord

,然后再从这个

BatchRecord

中取出第二个

Record

(27 这个BatchRecord包含了 27 、28 两个 Record)。

Kafka 并不会为每个 Record 都保存一个索引,而是根据 log.index.interval.bytes 等配置 构建稀疏索引信息

Kafka 中还维护了 timeindex,保存了 Timestamp 和 Offset 的关系,在一些场景需要根据 timestamp 来定位消息。timeindex 中的一个( timestampX,offsetY )元素的含义是所有创建时间大于 timestampX 的消息的 Offset 都大于 offsetY文章来源地址https://www.toymoban.com/news/detail-439976.html

到了这里,关于如何根据 offset 找到对应的 Message?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Mac】Mac 通过路径找到对应的文件夹

    【Mac】Mac 通过路径找到对应的文件夹

    mac 的快捷键 复制文件夹或文件全路径 命令:command + Option + C 跳转文件夹或文件 命令:command + shift + G 其他待补充

    2024年02月15日
    浏览(13)
  • Kafka之offset位移

    offset :在 Apache Kafka 中,offset 是一个用来唯一标识消息在分区中位置的数字。每个分区中的消息都会被分配一个唯一的 offset 值,用来表示该消息在该分区中的位置。消费者可以通过记录自己消费的最后一个 offset 值来跟踪自己消费消息的进度,确保不会漏掉消息或者重复消

    2024年04月10日
    浏览(11)
  • kafka—offset偏移量

    offset定义 :消费者再消费的过程中通过offset来记录消费数据的具体位置 offset存放的位置 :从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic(系统主题)中,名为__consumer_offsets,即offset维护在系统主题中 说明:__consumer_offsets 主题里面采用 key 和 value 的方式存储数

    2024年02月05日
    浏览(10)
  • Arcgis通过矢量建筑面找到POI对应的标准地址

    Arcgis通过矢量建筑面找到POI对应的标准地址

    有时候我们需要找到POI对应的标准地址,也许有很多的方法, 比如通过POI的地址数据和标准地址做匹配,用sql语句就能实现; 但是POI数据中也存在很多没有地址数据的,这时候只能通过空间关联来匹配对应的标准地址了,而空间关联也有不一样的方法,一个是通过空间连接

    2024年02月03日
    浏览(9)
  • Kafka中offset的相关操作

    offset用于记录消息消费的进度,主要有以下几种, Current offset,用于记录消费者已经接收到(不一定有完成消费)的消息序号,保证同一个消息不会被重复消费,可以我们通过kafka-consumer-groups.sh查询,这也是我们测试或者实际环境需要调整的offset Committed offset,用于记录消费者已

    2024年02月12日
    浏览(14)
  • Kafka【应用 01】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)

    Kafka【应用 01】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)

    官方自称 Offset Explorer 是 Kafka 的终极 UI 工具 😄 我们看一下 官网 的介绍: Offset Explorer (formerly Kafka Tool) is a GUI application for managing and using Apache Kafka ® clusters. It provides an intuitive UI that allows one to quickly view objects within a Kafka cluster as well as the messages stored in the topics of the cluster.

    2024年02月12日
    浏览(14)
  • Offset Explorer中添加Kafka连接

    Offset Explorer中添加Kafka连接

    Kafka连接 1. Host中填IP,Port中填端口号,点击test测试链接,点击Add添加链接;  2. 若第一种方法添加链接不成功,点击Advanced,在bootstrap server中填入ip:port即可链接成功。  

    2024年02月16日
    浏览(11)
  • Hive limit 和 offset 的用法

    如果数据量大需要限制数量,只看部分数据,那么 LIMIT 和 OFFSET 子句就非常用有。LIMIT 可以减少要返回的行数,而 OFFSET 将指定从何处开始计算行数。 本文例子中使用的数据是筛选指定字段中的数据内容。 2. limit N 只取前 N 条记录 3. Limit N, M 跳过 N 行,选取 M 行数据 4. Limit

    2024年02月16日
    浏览(10)
  • kafka实战-消费者offset重置问题

    背景:当app启动时,会调用 “启动上报接口” 上报启动数据,该数据包含且不限于手机型号、应用版本、app类型、启动时间等,一站式接入平台系统会记录该数据。 生产者:“启动上报接口”会根据启动数据发送一条kafka消息,topic“xxx” 消费者:“启动处理模块”会监控

    2023年04月11日
    浏览(9)
  • BI技巧丨利用OFFSET计算同环比

    BI技巧丨利用OFFSET计算同环比

    微软最近更新了很多开窗函数,其内部参数对比以往的DAX函数来说,多了很多,这就导致学习的时间成本直线上升。 而且对于新增函数的应用场景,很多小伙伴也是一知半解的,本期我们就来聊一聊关于最近新增的开窗函数——OFFSET函数。 OFFSET函数基础语法 参数介绍: de

    2024年02月14日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包