当前位置: 首页 > 知识库问答 >
问题:

消费者再平衡在Kafka是如何运作的?

荆哲
2023-03-14

当一个新的消费者/borker被添加或下降时,Kafka会触发一个再平衡操作。Kafka是在重新平衡封锁行动。Kafka的消费者是不是在一个再平衡操作正在进行的时候就被封锁了?

共有1个答案

呼延钱明
2023-03-14

那就看你说的“阻塞”是什么意思了。如果您的意思是“触发再平衡时现有连接是否关闭”,那么答案是肯定的。目前的Kafka再平衡算法不幸是不完善的。

以下是消费者再平衡过程中发生的情况。

假设我们有一个包含10个分区(0-9)的主题,一个使用者(让它命名为consumer1)使用它。当出现第二个使用者(consumer2)时,两个使用者的重新平衡任务都会触发(consumer1获取一个事件,consumer2执行初始重新平衡)。现在consumer1关闭了所有现有的连接(甚至是即将重新打开的连接),并释放了Zookeeper中所有10个分区的分区所有权。

同时,consumer2也运行分区分配算法,并尝试在Zookeeper中索取他的分区。只有当consumer1释放了这些分区上的所有权时,声明才会成功。当声明成功时,Consumer2开始提取,或者如果它未能在给定的重试次数内声明分区,则会出现Rebalance failed after n retries异常。

正如您所注意到的,consumer1没有关闭连接并释放其不再拥有的分区的所有权,而是不必要地关闭他的所有连接,并以较低数量的分区重新启动。与添加分区的情况相同(当我们通过通配符过滤器消费时,出现了新的主题)--所有连接都被关闭,然后再次打开,而不是仅仅打开新的连接。

所以我希望这回答了你的问题--当再平衡开始时,取舍就会停止。

 类似资料:
  • 有人能告诉我Kafka消费者的再平衡算法是什么吗?我想了解分区计数和消费者线程是如何影响这一点的。 非常感谢。

  • 我有一个Kafka流应用程序,它从几个主题中获取数据,并将数据加入另一个主题。 Kafka配置: 注意:我在运行Kafka Brokers的机器上运行Kafka Streams应用程序。 每小时消耗/产生数百万条记录。每当我让Kafka经纪人倒下时,都会进入再平衡阶段,再平衡大约需要30分钟,有时甚至更长时间。 有人知道如何解决Kafka消费者的再平衡问题吗?而且,很多时候,它在重新平衡时抛出异常

  • 我们正在运行一个3 broker Kafka 0.10.0.1集群。我们有一个java应用程序,它产生了许多消费线程,从不同的主题消费。对于每一个主题,我们都指定了不同的消费者群体。 很多时候,我看到每当这个应用程序重新启动时,一个或多个CG需要超过5分钟来接收分区分配。在此之前,这个话题的消费者不会消费任何东西。如果我去Kafka broker并运行Consumer-Groups.sh并描述特定

  • 在消费者重新平衡期间如何确保消息排序。假设最初我们有四个分区:p1、p2、p3、p4和两个消费者c1和c2(在同一组中)。因此每个消费者得到两个分区,例如c1 : p1,p2和c2 : p3,p4。 现在添加了新的消费者,比如c3和c4,重新平衡发生,这样每个消费者都有一个分区,比如c1: p1、c2: p2、c3: p3、c4: p4。 在此期间,消费者c1可能正在处理来自分区p2的消息(在重新

  • 当一个组中只有一个消费者,并且认为消费者无法在session.time.out内进行轮询时,将触发重新平衡,但是在这种情况下,组中只有一个消费者,现在假设session.time.out是30秒和消费者民意调查后50秒组协调员将识别消费者后50秒,并允许它提交偏移或协调员将断开消费者和没有偏移得到提交,并将重新平衡消费者与新的消费者标识?如果上次提交的偏移量是345678,在下一次轮询中,它处理了

  • kafka机器作为hortonworks包的一部分安装,版本为0.1X 我们运行应用程序,使用主题中的数据 在最后几天,我们看到我们的应用程序--失败了,我们开始寻找根本原因 在集群中,我们看到以下行为 从侧集群是健康的,所有的主题都是平衡的,所有的kafka经纪人都正确地向zooManager签名 一段时间后(几个小时),我们再次运行以下内容,但没有错误- 我们得到以下正确的结果 所以我们想了解