【问题标题】:Kafka consumer - how does rebalance work if one consumer failsKafka 消费者 - 如果一个消费者失败,再平衡如何工作
【发布时间】:2022-02-13 23:26:16
【问题描述】:

我正在使用 AWS Kafka MSK,并且我有一个包含 2 个分区的主题。 我还有 2 个消费者属于同一个消费者组。

我想知道在以下情况下会发生这种情况:

消费者 A - 接收消息 1 - 100
消费者 B - 接收消息 101 - 200

消费者 A 失败
消费者 B 成功

消息 1 - 100 会发生什么?

自动 Kafka 重新平衡是否会设置消费者 B 读取消息 1 - 100? 还是将启动的新消费者而不是消费者 A 将读取消息?

提前致谢。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    偏移范围适用于分区,而不是主题。

    除非满足以下条件之一,否则对于新的消费者应用程序来说,这种情况是不可能的

    • 分配给消费者 B 的分区的偏移量 0-100 由于保留而被删除
    • 您的代码调用 seek 方法来跳过这些偏移量

    另一方面,如果消费者组已经存在并且没有消费分配给消费者A的分区记录(例如,它之前失败过),并且确实提交了另一个分区的偏移量100。在这种情况下,也许会发生同样的事情;消费者组可能无法读取“第一个”分区的偏移量 0。

    当任何消费者实例失败时,该组将重新平衡。根据您处理错误/失败的方式,可能会为之前健康的实例分配两个分区,然后再次使用“第一个”分区失败(因为它将与之前死亡的代码相同)。或者,以不同的方式编写代码,您将忽略消费者异常,并可选择在死信队列中标记错误的偏移量。当记录或忽略时,您将为原始使用者提交偏移量并跳过这些记录。

    【讨论】:

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