Apache flink:动态更改消费者主题
Apache flink: Dynamically change the consumer topic
我们正在构建一个将部署到 AWS Kinesis 数据分析 (KDA) 的 flink 应用程序。此应用程序将从 Kafka 消费并写入 S3。
我们的设置如下:
- 我们有一个包含多个主题的 Kafka bootstrap 服务器 (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个topic,会自动处理这种情况吗?我的意思是,如果其中一个话题突然激增,flink 应用程序是否会重新平衡自己以投入更多资源来阅读热门话题,因为它们都是同一消费者群体的一部分?
Flink 的 Kafka 消费者不支持从主题停止消费(无需重启),但它支持动态主题和分区发现。有关详细信息,请参阅 https://nightlies.apache.org/flink/flink-docs-stable/docs/connectors/datastream/kafka/#dynamic-partition-discovery。
我们正在构建一个将部署到 AWS Kinesis 数据分析 (KDA) 的 flink 应用程序。此应用程序将从 Kafka 消费并写入 S3。 我们的设置如下:
- 我们有一个包含多个主题的 Kafka bootstrap 服务器 (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个topic,会自动处理这种情况吗?我的意思是,如果其中一个话题突然激增,flink 应用程序是否会重新平衡自己以投入更多资源来阅读热门话题,因为它们都是同一消费者群体的一部分?
Flink 的 Kafka 消费者不支持从主题停止消费(无需重启),但它支持动态主题和分区发现。有关详细信息,请参阅 https://nightlies.apache.org/flink/flink-docs-stable/docs/connectors/datastream/kafka/#dynamic-partition-discovery。