假设一个有3个分区的kafka主题被一个由3个消费者组成的消费者组消费。在云环境中,如果一个新的消费者扩大规模,现在该组中有4个消费者。在这种情况下会发生什么?Kafka是否创建了另一个分区,以便新使用者可以访问它或新消费者是否无所事事,什么都不消费?
pu82cl6c1#
Kafka是否创建了另一个分区,以便新使用者可以访问它?不,Kafka不会为新用户创建另一个分区。我建议你阅读Kafka文献,了解Kafka的建筑。事实上,消费者只是客户机,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.
1条答案
按热度按时间pu82cl6c1#
Kafka是否创建了另一个分区,以便新使用者可以访问它?
不,Kafka不会为新用户创建另一个分区。我建议你阅读Kafka文献,了解Kafka的建筑。
事实上,消费者只是客户机,kafka主题位于kafka代理中,可以称之为服务器。所以你应该明白,添加一个消费者就是添加一个客户机。对于服务器,只需再添加一个连接即可。实际上,kafka主题的分区设置是在创建主题时指定的,之后您也可以更改此配置。参考此http://kafka.apache.org/documentation/#operations 查看如何创建主题和修改。
新消费者是否无所事事,什么都不消费?
对。当消费者从消费群体中添加或删除时,它将触发消费者再平衡操作。
消费者再平衡算法允许组中的所有消费者就哪个消费者在消费哪个分区达成共识。每次添加或删除代理节点和同一组中的其他使用者时,都会触发使用者重新平衡。对于给定的主题和给定的使用者组,代理分区在组内的使用者之间平均分配。分区总是由单个使用者使用。这种设计简化了实现。如果我们允许一个分区被多个使用者同时使用,那么分区上会有争用,并且需要某种类型的锁定。如果使用者比分区多,则有些使用者根本无法获得任何数据。在重新平衡过程中,我们尝试将分区分配给使用者,这样可以减少每个使用者必须连接到的代理节点的数量。
请注意:分区总是由单个使用者使用如果使用者比分区多,则有些使用者根本无法获得任何数据。而第一个词有一个前提:在同一个消费群体中。如果两个使用者属于不同的组,则可以使用相同的分区。你可以参考这个http://kafka.apache.org/documentation/#impl_brokerregistration 了解更多关于再平衡算法的信息。
算法非常简单,它首先计算一个比率=分区计数/消费者计数。然后通过分区的brokerid将分区有序地分配给使用者。它用于减少每个代理的连接数。
所以在你的问题中,这一点都不会改变。我认为在Kafka服务器代码中,必须有一个法官: