如何使用多个工作人员(相同数量的分区)扩展同一主题的 kafka 消费者应用程序
How to scale kafka consumer applications on the same topic with more than one worker (the same number of partitions)
我想了解如何扩展一个应用程序(多个实例)使用来自 Kafka 的关于同一主题的消息。
我的疑问是,如果我有一个包含 4 个分区的 A 主题,并且我创建了一个属性为 concurrency = 4 和 groupId = "FixedGroup" 的 @KafkaListener,那么 spring 将创建 4 个工人,并且将选择这 4 个工人通过 kafka 来消费消息,每个分区一个工作人员,如果我扩展同一应用程序的新实例(规模),这 4 个工作人员已经被分配为每个分区工作,并且在同一组中这样的新应用程序由于前一个(因为它只是一个自动缩放)将处于空闲状态并且自动缩放不会通过水平缩放提高消息处理性能,水平缩放应该如何在同一个 [=13] 的应用程序之间分配消息处理=]?
will not improve the message processing performance
正确;同一组中只有一个消费者可以从分区中消费。
您至少需要与消费者一样多的分区。
一般来说,您应该过度配置分区。对于较少数量的消费者,分区将被分配,因此每个消费者都被分配了多个分区。
除了添加更多分区外没有实际的解决方案。
我想了解如何扩展一个应用程序(多个实例)使用来自 Kafka 的关于同一主题的消息。 我的疑问是,如果我有一个包含 4 个分区的 A 主题,并且我创建了一个属性为 concurrency = 4 和 groupId = "FixedGroup" 的 @KafkaListener,那么 spring 将创建 4 个工人,并且将选择这 4 个工人通过 kafka 来消费消息,每个分区一个工作人员,如果我扩展同一应用程序的新实例(规模),这 4 个工作人员已经被分配为每个分区工作,并且在同一组中这样的新应用程序由于前一个(因为它只是一个自动缩放)将处于空闲状态并且自动缩放不会通过水平缩放提高消息处理性能,水平缩放应该如何在同一个 [=13] 的应用程序之间分配消息处理=]?
will not improve the message processing performance
正确;同一组中只有一个消费者可以从分区中消费。
您至少需要与消费者一样多的分区。
一般来说,您应该过度配置分区。对于较少数量的消费者,分区将被分配,因此每个消费者都被分配了多个分区。
除了添加更多分区外没有实际的解决方案。