SaaS 和微服务的数据库模式

Database pattern for SaaS and Microservices

我正处于构建 SaaS 解决方案的最初阶段。要求是:

  1. 所有客户必须使用相同版本的应用程序。
  2. 来自不同客户的数据必须隔离。

所以,我认为我应该选择微服务和每个租户数据库。我现在正在尝试找出如何设计数据库。

我的第一个想法是,如果我有 10 个服务和 15 个租户,那么我就有 150 个数据库,因为每个服务都应该有自己的数据库,每个租户也应该有自己的数据库。

这是一种有效的方法还是我应该采用另一种设计?另外,我应该如何将连接从服务路由到正确的租户数据库?

是的:这是完全正确的方法。

使用 URL 中的子域将流量路由到正确的门户服务,如下所示:https://tenantN.domain.tld

您可能也想到了这一点,但要设置访问控制,以便为一个租户进行身份验证的人无法通过猜测 FQDN 或恶意人员使用暴力生成 FQDN 来访问另一个租户的服务。