【问题标题】:Apache flink: Dynamically change the consumer topicApache flink:动态改变消费者主题
【发布时间】:2022-01-12 03:43:58
【问题描述】:

我们正在构建一个将部署到 AWS Kinesis 数据分析 (KDA) 的 flink 应用程序。此应用程序将从 Kafka 消费并写入 S3。 我们的设置如下:

  1. 我们有一个包含多个主题的 Kafka 引导服务器 (MSK)。
  2. 我们计划在 KDA 上部署多个 Flink 应用程序。所有这些应用程序都将属于同一个使用者组。

我们想做以下事情:

  1. 假设我们有 10 个 kafka 主题(topic 1topic 10)。
  2. 假设我们有 5 个 Flink 应用程序(app 1app 5)。
  3. 最初我们会将应用程序分配给主题(例如:app 1 将从 topic 12 消费,app 2 将从 topic 34 消费等)。
  4. 我们会将其存储在配置系统(例如 CRUD 应用程序)中,并且每个 Flink 应用程序在它启动时,应该能够根据其名称查看它应该从哪个主题消费。 (这部分我们可以做到)。
  5. 假设,例如,通过topic 4 发送的消息数量突然激增。我们将更新配置系统以指向App 4,它从topic 7topic 8 消费,而不是从topic 7topic 4 消费。
  6. 我们希望 Flink 应用停止从旧主题消费,并从新主题开始消费,而无需重新部署 Flink 应用。我们将有一个轮询器,它可以通知 Flink 应用程序它应该从不同的主题消费。问题是使 Flink 应用停止从旧主题消费并从新主题开始消费,而无需重新部署。

有没有办法做到这一点?就我的研究而言,让 Flink 应用程序读取新主题的唯一方法是重新部署它。但是想检查一下是否有人想出了某种方法。

反过来:如果我们让所有 5 个 Flink 应用程序都监听 10 个主题,这种情况会自动处理吗?我的意思是,如果其中一个主题突然激增,flink 应用程序是否会重新平衡自己,以投入更多的资源来阅读热门主题,因为它们都是同一个消费者组的一部分?

【问题讨论】:

    标签: apache-kafka apache-flink amazon-kinesis


    【解决方案1】:

    Flink 的 Kafka 消费者不支持从一个主题停止消费(无需重启),但它支持动态主题和分区发现。详情请见https://nightlies.apache.org/flink/flink-docs-stable/docs/connectors/datastream/kafka/#dynamic-partition-discovery

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-18
      • 2018-12-31
      • 2019-06-25
      • 1970-01-01
      • 2016-07-09
      • 2021-07-06
      • 2017-01-28
      • 2017-09-18
      相关资源
      最近更新 更多