我订阅了卡夫卡主题( RegExp )。有5个主题与给定模式相匹配。其中四个有10个分区。最后一个主题有12个分区。所以,一共有52个分区。
我有5个运行实例,每个实例启动10个使用者。因此,总共有50名消费者。我希望负载水平地分布在所有的消费者身上。因此,每个使用者读取一个分区,其中两个除外,因为消费者总数少于整个分区数。
尽管现实情况有点不同。


简而言之,下面是所发生的事情
有没有办法强迫卡夫卡用户最大限度地读取RegExp订阅的一个分区?在这种情况下,我可以让所有的消费者开始工作。或者有一种不同的方法允许读取多个主题,涉及分区的数量和运行的使用者?
发布于 2022-07-21 11:39:07
是关于partition.assignment.strategy卡夫卡地产的。默认值是RangeAssignor,这将导致根据主题分配分区。这导致消费者之间的负担不公平地分配。
我们将属性设置为RoundRobinAssignor,它提供了帮助。

不过,在使用不同的partition.assignment.strategy部署新版本时,您应该小心。假设您有5个使用RangeAssignor策略运行的消费者。然后用RoundRobinAssignor策略重新部署一个。在这种情况下,您将得到消费者替换的例外情况。因为一个消费者组中的所有消费者都应该提供相同的partition.assignment.strategy。这个问题被描述为在这个StackOverflow问题中
因此,如果您想要更改partition.assignment.strategy,您有以下几个选项:
group.id。这两种方法各有优缺点。
https://stackoverflow.com/questions/73034796
复制相似问题