我们有一个多租户应用程序,我们为每个租户维护消息队列。我们已经实现了一个 Flink 作业来处理来自消息队列的流数据。基本上每个消息队列都是 Flink 作业中的一个源。这是推荐的方法吗?或者是否可以根据租户数多次运行同一作业(使用一个源(?我们预计每个租户将生成不同卷的数据。多作业方法是否有任何可扩展性优势?
方法 1:具有多个来源的单个作业 2. 运行相同作业的副本,每个作业都有一个源
我认为这些方法适用于Storm,Spark或任何其他流媒体平台。
谢谢
性能方面的方法 1( 具有最大的潜力。资源可以更好地用于不同的来源。由于它是不同的来源,查询本身的优化潜力是有限的。
但是,如果我们真的谈论多租户,我会采用第二种方法。您可以为应用程序分配更多细粒度权限(例如,可以使用哪个 Kafka 主题,写入哪个 S3 存储桶(。由于大多数应用程序开发人员倾向于开发符合GDPR的工作流程(即使当前国家/地区可能不受影响(,因此为了安全起见,我会走这条路。此方法还具有以下优点:如果添加/删除某个租户,则无需重启每个人的作业。