首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡夫卡消费者RegExp:过时的消费者

卡夫卡消费者RegExp:过时的消费者
EN

Stack Overflow用户
提问于 2022-07-19 09:51:57
回答 1查看 233关注 0票数 1

我订阅了卡夫卡主题( RegExp )。有5个主题与给定模式相匹配。其中四个有10个分区。最后一个主题有12个分区。所以,一共有52个分区。

我有5个运行实例,每个实例启动10个使用者。因此,总共有50名消费者。我希望负载水平地分布在所有的消费者身上。因此,每个使用者读取一个分区,其中两个除外,因为消费者总数少于整个分区数。

尽管现实情况有点不同。

简而言之,下面是所发生的事情

  1. 有50个消费者订阅了RegExp的多个主题。所有找到的主题共有52个分区。
  2. 每个使用者尝试从每个找到的主题订阅一个分区。还有两个用户订阅了来自单个主题的1个分区,因为后者有12个分区,但没有10个分区。
  3. 12个用户正在工作,而由于无法读取分区,38个用户仍然处于陈旧状态。

有没有办法强迫卡夫卡用户最大限度地读取RegExp订阅的一个分区?在这种情况下,我可以让所有的消费者开始工作。或者有一种不同的方法允许读取多个主题,涉及分区的数量和运行的使用者?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-21 11:39:07

是关于partition.assignment.strategy卡夫卡地产的。默认值是RangeAssignor,这将导致根据主题分配分区。这导致消费者之间的负担不公平地分配。

我们将属性设置为RoundRobinAssignor,它提供了帮助。

不过,在使用不同的partition.assignment.strategy部署新版本时,您应该小心。假设您有5个使用RangeAssignor策略运行的消费者。然后用RoundRobinAssignor策略重新部署一个。在这种情况下,您将得到消费者替换的例外情况。因为一个消费者组中的所有消费者都应该提供相同的partition.assignment.strategy。这个问题被描述为在这个StackOverflow问题中

因此,如果您想要更改partition.assignment.strategy,您有以下几个选项:

  1. 重新部署所有使用者,然后部署新的使用者。
  2. 为新的使用者指定新的group.id

这两种方法各有优缺点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73034796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档