Maz*_*ine 5 apache-kafka kubernetes kafka-consumer-api strimzi
我使用 Kafka Strimzi 运算符在 Kubernetes 上运行 Kafka。我通过使用以下内容配置我的消费者来使用增量粘性重新平衡策略:
ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG,
org.apache.kafka.clients.consumer.CooperativeStickyAssignor.class.getName()
Run Code Online (Sandbox Code Playgroud)
每次我扩展消费者组中的消费者时,该组中的所有现有消费者都会生成以下异常
线程“main”中出现异常 org.apache.kafka.common.errors.RebalanceInProgressException:由于使用者正在进行自动分区分配的重新平衡,因此无法完成偏移提交。您可以尝试通过调用 poll() 来完成重新平衡,然后重试该操作
知道导致此异常的原因和/或如何解决它吗?
谢谢。
小智 10
每当消费者组的元数据信息发生变化时,消费者重新平衡就会发生。
在一个组中添加更多的消费者(用你的话来说是扩展)就是这样的变化之一,并会触发重新平衡。在此更改期间,每个消费者将被重新分配分区,因此在重新分配完成之前不知道要提交哪些偏移量。现在,StickyAssignor确实会尝试确保尽可能保留先前的分配,但仍会触发重新平衡,甚至分区的分配将优先于保留先前的分配。(参考-Kafka文档)
休息一下,异常的消息是不言自明的,即在进行重新平衡时,某些操作是被禁止的。
如何避免此类情况的发生?
这是一个棘手的问题,因为 Kafka 需要重新平衡才能有效工作。您可以使用一些做法来避免不必要的影响:
max.poll.interval.ms这样就减少了遇到这些异常的可能性。max.poll.records或max.partition.fetch.bytesgroup.initial.rebalance.delay.ms空的消费者组(首次部署或销毁所有内容并再次重新部署)这些技术只能帮助您减少不必要的行为或异常,但不会完全阻止重新平衡。
| 归档时间: |
|
| 查看次数: |
4824 次 |
| 最近记录: |