平衡 Kafka 消费者
Balancing Kafka consumers
假设我在 Kafka 中有 10 个分区用于给定主题。
我的选择是在消费者之间自动负载平衡这 10 个分区?
我已经阅读了这篇文章 post ,但我不确定它是否涵盖了我正在寻找的内容,或者我只是没有得到它。
如果我为每个分区启动一个 worker 和一个 consumer,那么所有工作都将由该 worker 消耗。
但是如果我在别处启动同一个 worker 的另一个实例会怎样?
客户端 libraries/Kafka 是否会以某种方式检测到这一点并重新平衡两个 worker 之间的负载,以便 worker1 上的一些活跃消费者现在处于空闲状态,而 worker2 上的相同消费者变得活跃?
我希望能够按需添加和删除工作人员,并将负载分散到这些工作人员身上,这可能吗?
例如
由此:
对此:
Kafka消费者是消费者群体的一部分。一个组中有一个或多个消费者。每个分区都分配给一个消费者。分区是 Kafka 横向扩展的方式。如果您的消费者多于分区,那么您的一些消费者将会闲置。如果你有比消费者更多的分区,多个分区可能会被分配给一个消费者。
当新的消费者加入时,会发生重新平衡,并为新消费者分配一些先前分配给其他消费者的分区。在您的情况下,如果有 10 个分区全部被一个消费者使用,而另一个消费者加入,则会进行重新平衡,之后,每个消费者(通常)将有五个分区。
值得注意的是,在重新平衡期间,消费者组 "pauses"。当消费者优雅地离开时,或者领导者检测到消费者已经离开时,也会发生类似的事情。
假设我在 Kafka 中有 10 个分区用于给定主题。 我的选择是在消费者之间自动负载平衡这 10 个分区?
我已经阅读了这篇文章 post
如果我为每个分区启动一个 worker 和一个 consumer,那么所有工作都将由该 worker 消耗。
但是如果我在别处启动同一个 worker 的另一个实例会怎样? 客户端 libraries/Kafka 是否会以某种方式检测到这一点并重新平衡两个 worker 之间的负载,以便 worker1 上的一些活跃消费者现在处于空闲状态,而 worker2 上的相同消费者变得活跃?
我希望能够按需添加和删除工作人员,并将负载分散到这些工作人员身上,这可能吗?
例如
由此:
对此:
Kafka消费者是消费者群体的一部分。一个组中有一个或多个消费者。每个分区都分配给一个消费者。分区是 Kafka 横向扩展的方式。如果您的消费者多于分区,那么您的一些消费者将会闲置。如果你有比消费者更多的分区,多个分区可能会被分配给一个消费者。
当新的消费者加入时,会发生重新平衡,并为新消费者分配一些先前分配给其他消费者的分区。在您的情况下,如果有 10 个分区全部被一个消费者使用,而另一个消费者加入,则会进行重新平衡,之后,每个消费者(通常)将有五个分区。
值得注意的是,在重新平衡期间,消费者组 "pauses"。当消费者优雅地离开时,或者领导者检测到消费者已经离开时,也会发生类似的事情。