我有一个包含16个分区的主题。
我还有24个消费者线程(每个进程每个进程8个)订阅了同一个主题。此配置可确保为消费者分配提供足够的1:1分区空间。并且一些备用消费者接管以防过程死亡
但是在kafka重启(许多人中的一个)期间,我不知何故最终处于一个16个分区的状态,其中只分配了12个消费者线程。
6 partitions to 4 consumers on Box 1
5 partitions to 4 consumers on Box 2
5 partitions to 4 consumers on Box 3
我相信每个盒子上至少有一些其他消费者仍然活跃
因此,很少有消费者超负荷导致更大的滞后。
我最初认为这是由于kafka重新平衡,但似乎并非如此。我使用默认的RangeAssigner。我不相信RoundRobinAssigner会有任何改变,因为我只有一个主题。 (如果我对循环分配器有误,请随意纠正我)
如何确保消费者分配的分区始终一致?
如果您有任何见解,我们将不胜感激。