【问题标题】:How the Kafka Topic Offsets worksKafka 主题偏移如何工作
【发布时间】:2019-01-10 23:09:36
【问题描述】:

我有一个关于主题偏移如何在 Kafka 中工作的问题,它们是否在 Kafka 中存储了类似 B-Tree 的结构?

我要求它的具体原因,假设我有一个在 Topic 中有 1000 万条记录的 Topic,这意味着如果没有发生压缩或它被关闭,那么现在如果我使用 consumer.seek(5000000),这将意味着 1000 万个偏移量,它会像 LinkList 一样工作,我的意思是,它将转到 0 偏移量并尝试从那里跳到第 5000000 个偏移量,或者它确实具有类似索引的结构将准确地告诉日志中的第 5000000 条记录在哪里?

谢谢解答?

【问题讨论】:

标签: apache-kafka


【解决方案1】:

Kafka 记录按顺序存储在日志中。确切的格式在documentation 中有详细描述。

Kafka 通常期望读取是顺序的,因为消费者按顺序获取记录。然而,当需要随机访问时(通过查找或从特定位置重新启动),Kafka 使用索引文件根据其偏移量快速查找记录。

Kafka 日志由多个段组成。每个段都有一个索引和一个关联的时间索引文件,该文件将偏移量和时间戳映射到文件位置。可以使用index.interval.bytes 配置将条目添加到索引的频率。使用这些文件,Kafka 能够立即寻找附近的位置并避免重新读取所有消息。

在非正常关闭后,您可能已经注意到 Kafka 正在重建索引几分钟。正是这些索引用于归档正在重建的位置查找。

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 2018-01-23
    • 2016-05-27
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多