下图为Gartner的多租户参考架构
在私有云和公用云环境对多租户的理解上是有不同的概念的。在公用云环境往往我们谈的是saas的多租户,租户往往为使用业务系统的一个企业或组织,而在私有云环境,paas平台提供的应用往往为平台级应用,平台级应用面对的租户是业务系统本身。
在多租户和云结合的情况下,iaas基础资源层的共享已经会变化为最基本的要求。那么在iaas层之上来谈主要则包括两个方面的内容,即应用是一套还是多套?数据库是一套还是多套?最彻底的多租户即上图中的第6种share everything的模式,在这种模式下数据库和应用都未一套,但是在paas平台下满足水平弹性扩展的需要。
多租户我们首先考虑隔离,在多租户下的隔离包括了几个方面的内容,一个是系统本身元数据和基础主数据的隔离(用户,角色,权限,数据字典,流程模板),一个是系统运行过程中产生的动态数据的隔离,一个是业务系统底层所涉及到的计算资源和存储资源的隔离。
在应用一套,数据库多套或多schema分离情况,我们比较容易实现计算资源和存储资源的单独分配,但是在完全share everthing的情况下,对于计算和存储资源的隔离则需要我们的paas应用本身去考虑。比如我们会引入实际的中间件容器的概念,可以将计算资源或存储资源分配给中间件容器,各种资源的使用严格区分。
在私有云下的多租户,往往隔离又不是绝对的,在能够完全隔离的情况下又需要支撑跨租户或组织的数据共享,可以看到如果存在这种需求,在share everthing的情况下是比较容易满足的。
多租户除了隔离外,另外一个重点就是能够为各个租户按需要实时的提供各种计算资源和存储资源,而且有清楚定义的数据采集和计费模型。由于资源池是共享的,我们必须要能够准确的采集到各个租户对实际资源的使用情况,以方便进行多租户的计费。
在公用云下的多租户,如果采用完全共享的模式,还必须考虑数据库的可扩展性,多租户架构服务提供独立数据库、扩展表和大表(保留字段)三种多租户架构,开发者可以通过API创建和管理多租户架构。独立数据库模式为每个租户分配一个独立的数据库;扩展表模式将租户的数据保存在扩展表(竖表)中,通过表记录扩展租户的配置信息;大表模式采用大表(横表)保存租户信息,租户的个性化信息保存在大表的保留字段中。
对于共享数据库模式,其多租户架构实现的核心是所有数据库表都需要增加租户ID字段对数据进行多租户隔离,以保障某一个租户登录系统只能够看到自己租户下的相关信息。如果是一个完整的多租户应用,还需要考虑第二层按用户,组织,角色群组等进行第二级的数据隔离,以满足业务系统的使用需求。
![企业级PAAS平台-多租户 企业级PAAS平台-多租户](https://i-blog.csdnimg.cn/blog_migrate/1ee474e30672ca71d05ea2f30e074a90.jpeg)
在私有云和公用云环境对多租户的理解上是有不同的概念的。在公用云环境往往我们谈的是saas的多租户,租户往往为使用业务系统的一个企业或组织,而在私有云环境,paas平台提供的应用往往为平台级应用,平台级应用面对的租户是业务系统本身。
在多租户和云结合的情况下,iaas基础资源层的共享已经会变化为最基本的要求。那么在iaas层之上来谈主要则包括两个方面的内容,即应用是一套还是多套?数据库是一套还是多套?最彻底的多租户即上图中的第6种share everything的模式,在这种模式下数据库和应用都未一套,但是在paas平台下满足水平弹性扩展的需要。
多租户我们首先考虑隔离,在多租户下的隔离包括了几个方面的内容,一个是系统本身元数据和基础主数据的隔离(用户,角色,权限,数据字典,流程模板),一个是系统运行过程中产生的动态数据的隔离,一个是业务系统底层所涉及到的计算资源和存储资源的隔离。
在应用一套,数据库多套或多schema分离情况,我们比较容易实现计算资源和存储资源的单独分配,但是在完全share everthing的情况下,对于计算和存储资源的隔离则需要我们的paas应用本身去考虑。比如我们会引入实际的中间件容器的概念,可以将计算资源或存储资源分配给中间件容器,各种资源的使用严格区分。
在私有云下的多租户,往往隔离又不是绝对的,在能够完全隔离的情况下又需要支撑跨租户或组织的数据共享,可以看到如果存在这种需求,在share everthing的情况下是比较容易满足的。
多租户除了隔离外,另外一个重点就是能够为各个租户按需要实时的提供各种计算资源和存储资源,而且有清楚定义的数据采集和计费模型。由于资源池是共享的,我们必须要能够准确的采集到各个租户对实际资源的使用情况,以方便进行多租户的计费。
![企业级PAAS平台-多租户 企业级PAAS平台-多租户](https://i-blog.csdnimg.cn/blog_migrate/f2d8491300dcec2e3dabfbc2a5df2beb.jpeg)
在公用云下的多租户,如果采用完全共享的模式,还必须考虑数据库的可扩展性,多租户架构服务提供独立数据库、扩展表和大表(保留字段)三种多租户架构,开发者可以通过API创建和管理多租户架构。独立数据库模式为每个租户分配一个独立的数据库;扩展表模式将租户的数据保存在扩展表(竖表)中,通过表记录扩展租户的配置信息;大表模式采用大表(横表)保存租户信息,租户的个性化信息保存在大表的保留字段中。
对于共享数据库模式,其多租户架构实现的核心是所有数据库表都需要增加租户ID字段对数据进行多租户隔离,以保障某一个租户登录系统只能够看到自己租户下的相关信息。如果是一个完整的多租户应用,还需要考虑第二层按用户,组织,角色群组等进行第二级的数据隔离,以满足业务系统的使用需求。