【问题标题】:How does Kafka store offsets for each topic?Kafka 如何存储每个主题的偏移量?
【发布时间】:2018-01-23 00:32:01
【问题描述】:

在轮询 Kafka 时,我使用 subscribe() 函数订阅了多个主题。现在,我想设置我想从每个主题中读取的偏移量,而不是在每个主题之后重新订阅 seek()poll()在轮询数据之前在每个主题名称上迭代调用seek() 会达到结果吗? 偏移量是如何准确存储在 Kafka 中的?

每个主题有一个分区,只有一个消费者可以读取所有主题。

【问题讨论】:

    标签: java apache-kafka kafka-consumer-api


    【解决方案1】:

    Kafka 如何存储每个主题的偏移量?

    Kafka 已将偏移存储从 zookeeper 转移到 kafka brokers。原因如下:

    Zookeeper 不是服务高写入负载(例如偏移更新)的好方法,因为 Zookeeper 将每次写入路由到每个节点,因此无法分区或以其他方式扩展写入。我们一直都知道这一点,但是因为我们已经依赖 zk,所以选择这种实现作为一种“方便的婚姻”。

    Kafka 将偏移量提交存储在主题中,当消费者提交偏移量时,kafka 将提交偏移量消息发布到“commit-log”主题并保留将组/主题/分区映射到最新偏移量的内存结构用于快速检索。更多设计信息可以在这个page about offset management找到。

    现在,我想设置我想从每个主题读取的偏移量,而不是在每个主题的 seek() 和 poll() 之后重新订阅。

    有一个关于 kafka 管理工具的新功能来重置偏移量。

    kafka-consumer-group.sh --bootstrap-server 127.0.0.1:9092 --group
          your-consumer-group **--reset-offsets** --to-offset 1 --all-topics --execute
    

    more options you can use

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2021-01-18
      • 2016-03-05
      • 2017-04-29
      • 2016-05-27
      • 1970-01-01
      相关资源
      最近更新 更多