我们有一个多租户应用程序,其中为每个租户维护消息队列。我们实现了一个flink作业来处理来自消息队列的流数据。基本上,每个消息队列都是flink作业中的一个源。这是推荐的方法吗?或者可以根据租户的数量多次运行同一个作业(使用一个源)?我们期望每个租户将产生不同数量的数据。多任务方法是否具有可伸缩性优势?
方法一:单一工作多来源2。运行相同作业的副本,每个作业有一个源
我认为这些方法适合storm、spark或任何其他流媒体平台。
谢谢您
我们有一个多租户应用程序,其中为每个租户维护消息队列。我们实现了一个flink作业来处理来自消息队列的流数据。基本上,每个消息队列都是flink作业中的一个源。这是推荐的方法吗?或者可以根据租户的数量多次运行同一个作业(使用一个源)?我们期望每个租户将产生不同数量的数据。多任务方法是否具有可伸缩性优势?
方法一:单一工作多来源2。运行相同作业的副本,每个作业有一个源
我认为这些方法适合storm、spark或任何其他流媒体平台。
谢谢您
1条答案
按热度按时间ilmyapht1#
性能方面的方法1)具有最大的潜力。不同来源的资源得到更好的利用。但由于其来源不同,查询本身的优化潜力有限。
然而,如果我们真的讨论多租户,我会选择第二种方法。您可以为应用程序分配更多的细粒度权限(例如,哪个kafka主题可以使用,哪个s3 bucket可以写入)。由于大多数应用程序开发人员都倾向于开发符合gdpr的工作流(即使当前的国家可能不会受到影响),所以为了安全起见,我会走这条路。这种方法还有一个优点,即如果添加/删除某个租户,则不需要为每个人重新启动作业。