将新使用者添加到正在运行的使用者组时会发生什么?

Avi*_*ale 2 apache-kafka confluent

假设一个3个分区的kafka主题被3个消费者组成的消费者组消费。在云环境中,如果有新的消费者扩大规模,现在该组中有4个消费者。在这种情况下会发生什么?

  • Kafka是否创建另一个分区,以便新使用者可以访问它

要么

  • 新消费者是否闲置并且不消费任何东西?

Gua*_*Zuo 5

Kafka是否创建另一个分区,以便新用户可以访问它?

不,Kafka不会为新使用者创建另一个分区。我建议您阅读kafka文档以了解kafka的体系结构。

实际上,Consumer只是客户,而kafka主题位于kafka经纪人(可以称为服务器)上。因此,您应该知道添加消费者只是添加一个客户。对于服务器,只需添加一个连接即可。实际上,Kafka主题的分区设置是在创建主题时指定的,您也可以在此之后更改此配置。请参阅此http://kafka.apache.org/documentation/#operations以了解如何创建主题和进行修改。

新消费者是否闲置并且不消费任何东西?

是。当消费者在消费者组中添加或删除时,它将触发消费者重新平衡操作。

消费者重新平衡算法允许组中的所有消费者就哪个消费者正在消费哪个分区达成共识。每次重新添加或删除同一组内的代理节点和其他使用者时,都会触发使用者重新平衡。对于给定的主题和给定的消费者组,经纪人分区在组内的消费者之间平均分配。分区始终由单个使用者使用。这种设计简化了实现。如果我们允许一个分区由多个使用者同时使用,则该分区上将存在争用,并且需要某种锁定。如果使用者数量超过分区数量,则某些使用者根本不会获得任何数据。在重新平衡期间,

请注意:分区始终由单个使用者使用。&& 如果使用方数量大于分区数量,则某些使用方根本不会获得任何数据。 第一个单词有一个先决条件:在同一个消费群体中。如果两个使用者属于不同的组,则可以使用相同的分区。您可以参考此http://kafka.apache.org/documentation/#impl_brokerregistration以获取有关重新平衡算法的更多信息。

该算法非常简单,它首先计算比率=分区计数/消费者计数。然后通过分区的brokerID将分区按顺序分配给使用者。它用于减少每个代理的连接数。

因此,在您的问题中,它根本不会改变。我认为在kafka服务器代码中,必须有一个判断:

if partition_count <= consumer_count
    just return, do not do the rebalancing.
Run Code Online (Sandbox Code Playgroud)