前言
在设计多租户 SaaS 应用程序时,您必须仔细选择最适合您应用程序需求的租户模型。租户模型确定每个租户的数据如何映射到存储。您选择的租户模式会影响应用程序设计和管理。以后切换到另一个模型有时代价昂贵。
关于可选择的租户模型的讨论如下。
A,怎么选择一个合适的租户模型
一般来说,租赁模式不会影响应用程序的功能,但它可能会影响整体解决方案的其他方面。以下标准用于评估每个模型:
可扩展性(Scalability)
- 租户的数量级
- 每个租户的存储级别
- 整体存储
- 工作负载
租户隔离性(Tenant isolation)
- 数据隔离和性能(是否一个租户的负载会影响到其他租户)
单租户成本(Per-tenant cost)
- 数据库成本
开发复杂度(Development complexity)
- 数据结构的变化
- 查询语句的变化
运维复杂度(Operational complexity)
- 性能监控
- 数据结构 schema 管理
- 租户数据恢复
- 灾备
可定制化程度(Customizability)
- 根据租户的需求自定义架构的容易程度
这个租户的讨论集中在数据层。但考虑一下应用层。应用程序层被视为一个整体实体。如果将应用程序划分为许多小型组件,您的租户模型选择可能会发生变化。对于租户和存储技术或使用的平台,您可以对其他组件进行不同的处理
B,独立的单租户应用 + 独立的单租户数据库
应用层隔离
在这个模型中,对于每一个租户,整个应用程序需要重复安装一次。应用程序的每个实例都是独立实例,因此它不会与任何其他独立实例交互。每个应用程序实例只有一个租户,因此只需要一个数据库。租户拥有自己的数据库。
每个应用程序实例都安装在独立的 Azure 资源组中。资源组可以属于软件供应商或租户拥有的订阅。无论哪种情况,供应商都可以为租户管理软件。每个应用程序实例都配置为连接到其相应的数据库。
每个租户数据库都作为独立数据库进行部署。该模型提供了最大的数据库隔离。但隔离需要为每个数据库分配足够的资源来处理