【问题标题】:Kafka Consumer Rebalancing and Its ImpactKafka消费者再平衡及其影响
【发布时间】:2019-08-08 09:16:33
【问题描述】:

我是 Kafka 的新手,我正在尝试在 Java 和 Go(使用 Confluent/Kafka-Go)中设计一个包装库,以便 Kafka 在内部使用。对于我的用例,CommitSync 是一个关键步骤,我们应该在正确提交旧的之后进行只读操作。重复处理不是什么大问题,我们的客户端服务足够幂等。但数据丢失是个大问题,不应该发生。

我最初将创建 X 个消费者,并将继续从他们那里进行轮询。因此,我想更多地了解这里可能发生的负面情况、它们的影响以及如何正确处理它们。

我想了解更多:

1) 消费者处理过程中的网络问题: 当网络短暂中断并恢复时会发生什么? Kafka 消费者是否会自动处理此问题并在网络恢复时激活,还是我们必须重新初始化它们?如果他们活着回来,他们会从离开的地方恢复工作吗? 例如:消费者 X 从分区 Y 读取 50 条记录。现在在内部消费者偏移量移动到 +50。但在提交网络问题发生之前,它又回来了。现在,消费者将获得关于上次投票所读取内容的元数据。它可以继续提交+50的偏移量吗?

2) 消费者群体的再平衡。它们对现有消费者进程的影响——现有的工作消费者实例是否会在重新平衡期间暂停和恢复工作,还是我们必须重新初始化它们?再平衡可以发生多长时间?如果消费者在重新平衡后恢复活跃,它是否有关于它上次读取的元数据?

3) 当消费者在再平衡期间加入时会发生什么。理想情况下,这又是一个再平衡方案。现在会发生什么?现有的将被丢弃并开始新的,还是将等待现有的重新平衡完成?

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    当网络短暂中断并恢复时会发生什么? Kafka 消费者是否会自动处理此问题并在网络恢复时激活,还是我们必须重新初始化它们?

    消费者将尝试重新连接。如果消费者组协调器没有收到心跳或代理没有响应代理,则组重新平衡。

    如果他们活着回来,他们会从离开的地方继续工作吗?

    从上次提交的偏移量开始,是的。

    现有的工作消费者实例是否会在重新平衡期间暂停和恢复工作

    它将暂停和恢复。无需采取任何行动。

    重新平衡可以持续多长时间?

    因许多因素而异,并且在某些条件下可能无限期发生。

    如果消费者在重新平衡后活着回来,它是否有关于它上次读取的元数据?

    最后提交的偏移量存储在代理上,而不是消费者。

    现有的将被丢弃,新的开始还是等待现有的重新平衡完成?

    所有重新平衡必须在任何投票继续之前完成。

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多