kafka是否在示例或线程之间平衡分区?

rdlzhqv9  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(278)

假设我有一个多线程的kafkastreams应用程序。它正在运行,并且所有的分区都被分配了,因此没有线程被分配超过一个分区。
现在这个应用程序的cpu大大提高了,我的autoscaler启动了另一个示例。我的新示例会被分配任何分区吗?或者Kafka会说,“我把这些分区尽可能地分散开来,感谢新的示例,但我只会在现有的示例崩溃时才使用它”?
假设答案是肯定的,Kafka不会重新平衡,那么有什么解决方案可以让Kafka在不同的情况下保持平衡呢

f45qwnt8

f45qwnt81#

假设您的cpu增加是因为主题的吞吐量增加了,而不是因为主题的分区增加了。
在这种情况下,分区均匀地分布在同一使用者组的多个示例上。一般来说, consumer threads * instance count <= partitions .
如果您的可用线程总数超过分区,那么您就超额订阅了。如果您的分区较少,那么一些线程将使用来自多个分区的循环方式。
如果主题分区确实增加了,那么您的线程将以超过1:1的Map分配,并从多个分区消耗。添加其他示例可以重新平衡使用者组并分散负载。

相关问题