apache kafka-仅使用特定分区的使用者之间的负载平衡

mutmk8jj  于 2021-06-08  发布在  Kafka
关注(0)|答案(3)|浏览(305)

我知道在apachekafka中,我可以编写producer和partitioner,使typea的消息转到partitiona,typeb的消息转到partitionb。我还可以使用assign()编写一个consumer/consumergroupa,这样consumer/consumergroupa只从partitiona消费,consumer/consumergroupb只从partitionb消费。
但我真正想了解的是,这到底是不是一种好的做法。因为,据我所知,这将严重限制我的负载平衡能力,同时增加复杂性。原因是,如果我的消息类型a增加了,我想创建另一个分区来处理负载,比如分区A2,并且我创建了更多的使用者,将新的和旧的使用者添加到一个使用者组中,并确保它们共同处理新的和旧的分区中的项目,我能做到吗?

esbemjvw

esbemjvw1#

感谢ppatierno&mrnakumar的帮助,虽然我的typea活动都是独立的,不需要时间安排,但我必须自己处理再平衡的事实确实让人沮丧。

kmynzznz

kmynzznz2#

您可以使用subscribe api向使用者组添加更多使用者示例。使用assignapi,你必须自己处理重新平衡。另外,如果应用程序依赖于分区策略(基于事件顺序),则可能不希望更改分区。例如,假设您有一个分区用于用户登录/注销操作。现在,如果您将分区更改为有2个分区(一个用于登录和注销),您的应用程序可以在该特定用户的登录事件之前看到注销事件。当然,您需要了解什么是typea,以及是否可以将typea事件发送到两个不同的分区。

wgeznvg7

wgeznvg73#

使用assign不会限制您的负载平衡能力,但只要在新使用者出现或出现故障时将重新分配分区的所有问题交给您即可。这是你用订阅的方式免费得到的东西。关于您的具体问题,当您添加一个分区2时,您肯定可以添加另一个使用assign分配给该分区的使用者。

相关问题