【问题标题】:How to get last consumed offset for a consumer group?如何获取消费者组的最后消费偏移量?
【发布时间】:2016-12-06 11:06:02
【问题描述】:

我在一个消费者组中有两个消费者,他们分配了相同的 kafka 主题分区。我希望从消费者 B 中获取消费者 A 的最后读取偏移量。任何想法,如何实现?

【问题讨论】:

  • 您是否要让多个消费者从一个分区并行消费?
  • @LucianoAfranllie 类似,但我可以让消费者并行阅读,但我希望只跟踪 kafka 中另一个消费者的最后读取偏移量

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


【解决方案1】:

永远不会将单个分区分配给同一组中的两个消费者实例。

您可以使用下面的脚本来知道最后消耗的偏移量

sh kafka-consumer-groups.sh --bootstrap-server localhost:9092 --new-consumer --group groupname --describe

【讨论】:

  • 为什么不分配,记住我说的是已分配而不是订阅。
  • 如果你手动分配一个分区,那么它的行为就像一个简单的消费者(低级消费者)。注意你的语言。
  • 听起来并不傲慢,但现在你认为我应该如何继续实施这个问题?
  • 你会在单个/多个 JVM 中运行消费者吗?您打算将读取偏移量存储在 Kafka / 其他数据存储的什么位置?
  • 消费者将在多个JVM中运行,并且偏移量仅存储在kafka中。
【解决方案2】:

Kafka store offsets by (consumer-group-id, topic, partition) 所以首先要注意的是,从 Kafka 的角度来看,没有像“消费者 A 的最后读取偏移量”这样的东西。您可以通过 Kafka 消费者 API 获得的所有信息都是针对给定的(组、主题、分区)。消费者 API 中有两个可能有用的方法。

commited():获取给定分区的最后提交偏移量(无论提交是由这个进程还是其他进程发生的)。

position(): 获取下一条将被提取的记录的偏移量(如果存在具有该偏移量的记录)。

如果这不是您所需要的,那么您将不得不自己实现一些东西。假设您已经知道如何从消费者 A 读取最后一个偏移量,那么消费者 A 应该将该值存储在消费者 B 可用的某个位置。该位置可能是

  • 卡夫卡本身。例如,消费者 A 可以将上次读取偏移量发布到 像 ConsumerA-p0 和 Consumer B 这样的知名主题可以订阅 这个话题。
  • 动物园管理员。再次,在众所周知的道路上达成一致。
  • 外部数据库。
  • 如果两个消费者共享相同的操作系统,则可以使用更多基本选项:IPC、文件系统中的文件、内存中受锁保护的变量等。

【讨论】:

  • 我同意你的观点,理论上它看起来是合理的,但我想知道 kafka 本身是否提供了某些功能来达到目的
  • 在我的回答中添加了更多细节。我认为这些都是您拥有的所有选项。
  • +1 当您想从客户端代码(java、C# 等)中查找偏移量详细信息以编程方式编写一些故障转移或特定逻辑时很有帮助。
【解决方案3】:

kafka->bin 使用以下命令将您的组 ID 更改为 groupId

sh kafka-consumer-groups.sh --bootstrap-server localhost:29092 --group groupId --describe

你会得到如下输出:

TOPIC  PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
topic1 0          0               35              35              -               -               -
topic2 0          1600            1600            0               -               -               -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2016-03-11
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2019-05-01
    相关资源
    最近更新 更多