Kafka的再平衡算法是否跨越主题工作?
假设我有5个主题,每个主题有10个分区,并且有20个消费者应用程序实例在同一消费者组中订阅这5个主题。
Kafka会尝试均匀地在20个实例之间平衡50个分区吗?
还是它只在一个主题内进行平衡,因此前10个实例可能(或很可能)接收所有50个分区,而另外10个实例可能保持空闲?
我知道在早期的Kafka版本中,它不会在主题之间平衡,但目前的版本呢?
Kafka的再平衡算法是否跨越主题工作?
假设我有5个主题,每个主题有10个分区,并且有20个消费者应用程序实例在同一消费者组中订阅这5个主题。
Kafka会尝试均匀地在20个实例之间平衡50个分区吗?
还是它只在一个主题内进行平衡,因此前10个实例可能(或很可能)接收所有50个分区,而另外10个实例可能保持空闲?
我知道在早期的Kafka版本中,它不会在主题之间平衡,但目前的版本呢?
partition.assignment.strategy
。其默认值为class org.apache.kafka.clients.consumer.RangeAssignor
,但您也可以选择RoundRobinAssignor
、StickyAssignor
或者通过扩展抽象类AbstractPartitionAssignor
来构建自己的策略。t1p1, t1p2, t1p3 ... t5p9, t5p10
所有20个消费者将按照此顺序进行分区,最终您将获得:
Consumer1: t1p1, t3p1, t5p1
Consumer2: t1p2, t3p2, t5p2
.
.
.
Consumer 10: t2p10, t4p10