我们有一个使用 Streams 库来处理数据的 Java 应用程序。流应用程序不会连接来自多个主题的数据,而是独立处理收到的每条消息。该应用程序配置为处理来自多个主题的数据。问题如下:
主题 A 有 20 个分区
主题 B 有 10 个分区
应用程序在 EKS 中运行,并具有 30 个 pod 以及相同的消费者组。我们注意到(这与文档一致),我们只有 20 个 pod 处理数据。我们使用默认分区分配。前 10 个 pod 处理主题 B 的所有分区和主题 A 的 10 个分区。然后 10 个 pod 处理主题 A 的 10 个分区。最后 10 个 pod 不执行任何操作。
我们需要能够将所有分区拆分到所有可用的 pod 上,因此在这个特定场景中,我们有 30 个 pod,每个 pod 处理 1 个分区。
我们如何在不实现自定义分区分配器的情况下实现这一目标?
使用的库:org.apache.kafka:kafka-streams -> 3.7.1
谢谢你
此问题的解决方案是对一个主题使用一种拓扑。