卡夫卡增加新的消费者并没有重新平衡负载(Kafka adding new consumers doe

2019-10-22 09:56发布

我有2个经纪人3个分区的话题。 (卡夫卡版本:0.8.1)

消息是使用不同的用户的GUID(这样的:FC42B34DD7658503E040970A2C437358)散装添加作为分区键。 (约10K消息)

虽然装载的消息,我有一个运行的消费者(consumer1),它开始处理邮件的罚款。
然后,我开始另一个消费者(consumer2)具有相同的消费群ID。

我注意到的是,consumer1停止处理邮件,并consumer2开始处理所有的消息。

当我停止consumer2,然后consumer1接管并恢复消息处理。

我期待这两个消费者应分配负载。

任何线索,其中可能是问题? 谢谢。

Answer 1:

我不知道你的消费者发生了什么不正是你的动物园管理员集群上的一些检查,但我可以怀疑一个可能的情况是你的生产商可能不会均匀地分配消息的分区。

一个分区是由一个单一的消费群体单一的消费者所拥有。 所有者消费者称为partition owner ,所有消息都在一个分区完全是由它的分区所有者消耗。 (有关详情,请参阅消费者卡夫卡0.8.1文档。

让我们说有三个分区A,B,C和两个消费者1和2,和生产者只发送短信给分区B.

当仅存在消费者1,分区B的所有消息都被消费者1中消耗。

当你介绍消费2,现在的分区B被消费者重新平衡算法分配到消费者2。 由于您的生产者发送消息只对分区B,现在消费者2变成消耗消息的唯一消费者。

在您停止消费2,分区B被分配到消费者1一遍,所有的消息都被消耗1中消耗。

上述场景是我能想到的。 检查你的执行制片人是否有分配问题。



文章来源: Kafka adding new consumers does not rebalance the load