【发布时间】:2022-01-12 03:43:58
【问题描述】:
我们正在构建一个将部署到 AWS Kinesis 数据分析 (KDA) 的 flink 应用程序。此应用程序将从 Kafka 消费并写入 S3。 我们的设置如下:
- 我们有一个包含多个主题的 Kafka 引导服务器 (MSK)。
- 我们计划在 KDA 上部署多个 Flink 应用程序。所有这些应用程序都将属于同一个使用者组。
我们想做以下事情:
- 假设我们有 10 个 kafka 主题(
topic 1到topic 10)。 - 假设我们有 5 个 Flink 应用程序(
app 1到app 5)。 - 最初我们会将应用程序分配给主题(例如:
app 1将从topic 1和2消费,app 2将从topic 3和4消费等)。 - 我们会将其存储在配置系统(例如 CRUD 应用程序)中,并且每个 Flink 应用程序在它启动时,应该能够根据其名称查看它应该从哪个主题消费。 (这部分我们可以做到)。
- 假设,例如,通过
topic 4发送的消息数量突然激增。我们将更新配置系统以指向App 4,它从topic 7和topic 8消费,而不是从topic 7和topic 4消费。 - 我们希望 Flink 应用停止从旧主题消费,并从新主题开始消费,而无需重新部署 Flink 应用。我们将有一个轮询器,它可以通知 Flink 应用程序它应该从不同的主题消费。问题是使 Flink 应用停止从旧主题消费并从新主题开始消费,而无需重新部署。
有没有办法做到这一点?就我的研究而言,让 Flink 应用程序读取新主题的唯一方法是重新部署它。但是想检查一下是否有人想出了某种方法。
反过来:如果我们让所有 5 个 Flink 应用程序都监听 10 个主题,这种情况会自动处理吗?我的意思是,如果其中一个主题突然激增,flink 应用程序是否会重新平衡自己,以投入更多的资源来阅读热门主题,因为它们都是同一个消费者组的一部分?
【问题讨论】:
标签: apache-kafka apache-flink amazon-kinesis