如何为 spring 云数据流实现多租户数据库

How to implement a multi-tenant database for spring cloud data flow

我们想为 SCDF 实施多租户解决方案,每个租户可能有独特的任务定义等。理想情况下,我们只需要一个 SCDF 服务器(而不是为每个租户设置一个 SCDF 服务器) ,如图:

这是否可能或者是实现租户之间数据隔离以具有单独的数据流服务器实例的唯一方法?

今天你在这里尝试的是不可能的。您必须为每个租户配置 SCDF。在 Kubernetes 或 Cloud Foundry 等云平台中,推荐使用,因为可以分别通过 "namespace" 和 "org/space" 隔离对租户进行访问控制。在此基础上,平台通过 RBAC 分配为租户中的每个用户提供更强大的分离。

关于我们今天为什么这样做的更多背景知识。 SCDF 和 Task/Job 存储库在 Dashboard 和其他客户端工具与同一数据源交互以提供一致的 UX 以集中监控和管理数据管道的意义上是耦合的。随着最近对 Tasks 的多平台后端支持,您仍然需要在当前设计中使用通用数据源。

综上所述,我们正在研究改进以允许用户拥有一个带有以标识符为前缀的模式的数据库 [参见:spring-cloud/spring-cloud-dataflow#2048]。有了它,就可以通过特定于标识符的 task/job 执行进行过滤,并同样将它们作为 单个 SCDF 实例中的独立操作单元进行跟踪。

但是,它可能无法针对云部署进行扩展。每个租户隔离边界,例如,Kubernetes 中的 "namespace" 需要有足够的资源 (cpu/memory/disk) 来处理 task/batch 应用程序的 "multiple" 个租户部署。如果不自动缩放资源容量,就会出现部署失败。

也许您可以帮助更详细地描述您的要求,这样我们就可以了解为什么这仍然有用。还请分享您将如何设计底层部署平台中的资源分配 - 欢迎在 #2048.

中发表评论