Apache Flink - 运行 多租户应用程序多次执行相同的作业

Apache Flink - Run same job multiple times for multi-tenant applications

我们有一个多租户应用程序,我们为每个租户维护消息队列。我们已经实现了一个 Flink 作业来处理来自消息队列的流数据。基本上每个消息队列都是 Flink 作业中的一个源。这是推荐的方法吗?或者可以根据租户数量多次 运行 同一份工作(同一个来源)吗?我们预计每个租户将产生不同数量的数据。多作业方法是否具有任何可扩展性优势?

方法 1:具有多个来源的单一作业 2. 运行 相同工作的副本,每个都有一个来源

我认为这些方法适用于 Storm、Spark 或任何其他流媒体平台。

谢谢

性能方面的方法 1) 具有最大的潜力。资源更好地用于不同的来源。由于来源不同,查询本身的优化潜力有限。

但是,如果我们真的谈论多租户,我会选择第二种方法。您可以为应用程序分配更细粒度的权限(例如,可以使用哪个 Kafka 主题,写入哪个 S3 存储桶)。由于大多数应用程序开发人员倾向于开发符合 GDPR 的工作流程(即使当前国家/地区可能不受影响),为了安全起见,我会走这条路。这种方法还有一个好处,如果您 add/remove 某个租户,则不需要为每个人重新启动作业。