在SAAS、IAAS、PAAS这三个不同层面,实现多租户的技术是不一样的:

SAAS 软件的使用权,主要是依照账户的容量(如何约定是个值得考虑的问题),譬如用户(租户)拥有使用账号;
PAAS 软件开发平台资源(如开发支撑系统工具、应用存储空间、运行容器、平台服务等等);如某租户拥有1G应用存储空间,应用容器(数量不限、总内存上限4G),2个缓存服务;
IAAS 硬件基础设施(如CPU、内存、存储、IP、网络设备等等),如某租户拥有2颗CPU、8GB内存、80GB硬盘、10个IP等;

多租户的概念包含三层用户集成:
数据中心层
基础架构层
应用程序层


多租户基础架构和应用程序需要用事务来验证每个客户提交的请求。此过程有助于验证和授权用户可以访问的事务资源类型。

从应用程序层提取认证和授权服务有助于提高多租户事务的可伸缩性、可维护性和重用性。大多数添加到基础架构的应用程序服务都需要授权,而专门用于授权的独立子网、云或应用服务器集群可以满足可伸缩性、可维护性和重用性需求。授权服务也是一样,因为可以在云中或子网中根据事务增长来重用和调整此架构。

构建多租户服务

构建多租户服务的要求包括:

  • 定义基于 RESTful 或 WSDL 的服务。
  • 定义响应时间和性能目标。
  • 确定可伸缩性和高可用性需求。
  • 定义每个事务需要的服务。
  • 根据事务客户确定服务的负载量。
  • 为服务创建部署和网络拓扑。
  • 为实现配置和安装而创建部署自动化脚本。
  • 为实现开发而创建 Unified Modeling Language (UML) 序列图。

构建多租户应用服务器

构建多租户应用服务器的要求包括:

  • 确定要实现的应用服务器。
  • 定义响应时间和性能目标。
  • 确定可伸缩性和高可用性需求。
  • 定义服务和应用程序部署拓扑。
  • 根据事务客户确定服务的负载量。
  • 为服务创建部署和网络拓扑。
  • 为实现配置和安装而创建部署自动化脚本。
  • 为实现开发而创建 UML 序列图。

构建多租户事务

构建多租户事务的要求包括:

  • 确定要实现的事务协议。
  • 定义响应时间和性能目标。
  • 确定可伸缩性和高可用性需求。
  • 定义服务和应用程序部署拓扑。
  • 根据事务客户确定服务的负载量。
  • 为服务创建部署和网络拓扑。
  • 为是吸纳配置和安装而创建部署自动化脚本。
  • 为实现开发而创建 UML 序列图。

构建多租户数据库

构建多租户数据库的要求包括:

  • 确定要实现的数据库模型。
  • 定义响应时间和性能目标。
  • 确定可伸缩性和高可用性需求。
  • 确定事务客户的负载量。
  • 为服务创建部署和网络拓扑。
  • 为实现配置和安装而创建部署自动化脚本。
  • 为实现开发而创建 UML 序列图。


SAAS多租户在数据存储上存在三种主要的方案,分别是:
1.独立数据库
这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。
优点:
为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;
如果出现故障,恢复数据比较简单。
缺点:
增大了数据库的安装数量,随之带来维护成本和购置成本的增加。
这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。
2.共享数据库,隔离数据架构
这是第二种方案,即多个或所有租户共享Database,但一个Tenant一个Schema。
优点:
为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。
缺点:
  如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;
  如果需要跨租户统计数据,存在一定困难。
3.共享数据库、共享数据架构
这是第三种方案,即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。
优点:
三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
缺点:
隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;
  数据备份和恢复最困难,需要逐表逐条备份和还原。
  如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐