什么是多租户
多租户是一种软件架构技术,可以实现多个租户共享系统实例,用户间能够实现数据与行为的隔离
第一阶段:通过用户和密码就可以校验一个人的身份,登陆到系统种
第二阶段:引入了角色的概念,我们将用户权限赋予给角色,这样我们只需要关注角色的权限即可,用户与角色关联,提高了权限与用户的可维护性
第三阶段:引入了用户组和机构的概念,通过用户组帮助我们对跨组织的角色进行管理,
第四阶段: 引入租户概念,租户是为了解决下层资源管理和计费计量的痛点,我们引入租户屏蔽下层的痛点.
传统的软件开发方式是将软件直接部署到甲方服务器中,数据库和服务器都是针对该用户独立部署的,如内网部署
Saas模式:我们将软件系统部署到云上,不同的组织通过付费租户的形式,来存储数据
多租户以及三种隔离模式
用户数据存储主要分为3种方式: 独立数据库, 共享数据库但隔离数据架构,共享数据库且共享数据结构
独立数据库
- 独立数据库就是一个租户对应一个数据库,隔离级别最高
- 能够对系统底层涉及到的计算,存储,网络资源的隔离
优势
- 为不同的租户提供独立数据库,有助于简化模型的扩展设计,满足个性化定制需求
- 如果遇到故障时,数据恢复简单
- 数据安全性高
- 降低故障影响面
- 容易统计租户的成本
劣势
- 增加了数据库的维护成本
- 不利于迭代
共享数据库但隔离数据架构
- 多个租户或所有租户共享数据库,但每个租户提供一个Schema(表空间)
- 多租户共享一套基础设施资源,可以保证SaaS软件服务更加高效,敏捷,低成本
优势
- 提供了一定程度的逻辑数据隔离,满足了较高程度的安全性保障
- 每个数据库,可支持更多租户数量
- 高效管理
- 成本较低
劣势
- 数据库恢复困难,如对某一租户进行数据恢复,容易干扰到其他租户数据
- 跨租户统计数据,应用实现难度大,消耗成本高
- 租户相互影响
- 单个租户计费困难
共享数据库且共享数据架构
- 所有的租户共享一个数据库,同一个Schema,但是租户之间的数据隔离通过在数据表中添加TenantId属性实现
- 所有租户共享一套资源, 每个租户都有独立的资源环境.
所有租户共享同一个数据库,同一个表空间,但租户与租户之间数据采用逻辑隔离,通过在所有的表中引入租户id来保证逻辑隔离
这样可以保证表中最大的租户数量,对于企业来说维护成本较低
优势
- 每个数据库可支持的租户数量最多,维护和购置成本低
劣势
- 隔离级别低,容易发生串数据
- 数据安全性低,在应用开发时需要做大量安全性开发工作,研发成本高
- 需要逐表逐条备份数据和还原数据,数据备份和恢复困难.
多租户隔离方案如何选型
- 我们从资源共享,数据隔离,应用复杂度,应用成本四方面比较
多租户隔离模型架构
- 对SaaS产品来说,租户是最顶层的概念,租户内部拥有组织,用户,产品能力,云资源等模型
租户可以入住到SaaS平台中,一个租户对应若干子功能, 每个租户拥有多个用户,每个用户需要对其进行角色授权,租户可以购买产品的多个业务模块,并使用已购买的业务模块来满足自身要求