欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

实践[后端]多租户架构设计

最编程 2024-06-03 20:30:39
...

什么是多租户

多租户是一种软件架构技术,可以实现多个租户共享系统实例,用户间能够实现数据与行为的隔离

image.png 第一阶段:通过用户和密码就可以校验一个人的身份,登陆到系统种

第二阶段:引入了角色的概念,我们将用户权限赋予给角色,这样我们只需要关注角色的权限即可,用户与角色关联,提高了权限与用户的可维护性

第三阶段:引入了用户组和机构的概念,通过用户组帮助我们对跨组织的角色进行管理,

第四阶段: 引入租户概念,租户是为了解决下层资源管理和计费计量的痛点,我们引入租户屏蔽下层的痛点.

传统的软件开发方式是将软件直接部署到甲方服务器中,数据库和服务器都是针对该用户独立部署的,如内网部署

Saas模式:我们将软件系统部署到云上,不同的组织通过付费租户的形式,来存储数据

多租户以及三种隔离模式

用户数据存储主要分为3种方式: 独立数据库, 共享数据库但隔离数据架构,共享数据库且共享数据结构

独立数据库

  • 独立数据库就是一个租户对应一个数据库,隔离级别最高
  • 能够对系统底层涉及到的计算,存储,网络资源的隔离

image.png

优势

  1. 为不同的租户提供独立数据库,有助于简化模型的扩展设计,满足个性化定制需求
  2. 如果遇到故障时,数据恢复简单
  3. 数据安全性高
  4. 降低故障影响面
  5. 容易统计租户的成本

劣势

  1. 增加了数据库的维护成本
  2. 不利于迭代

共享数据库但隔离数据架构

  • 多个租户或所有租户共享数据库,但每个租户提供一个Schema(表空间)
  • 多租户共享一套基础设施资源,可以保证SaaS软件服务更加高效,敏捷,低成本

image.png

优势

  1. 提供了一定程度的逻辑数据隔离,满足了较高程度的安全性保障
  2. 每个数据库,可支持更多租户数量
  3. 高效管理
  4. 成本较低

劣势

  1. 数据库恢复困难,如对某一租户进行数据恢复,容易干扰到其他租户数据
  2. 跨租户统计数据,应用实现难度大,消耗成本高
  3. 租户相互影响
  4. 单个租户计费困难

共享数据库且共享数据架构

  • 所有的租户共享一个数据库,同一个Schema,但是租户之间的数据隔离通过在数据表中添加TenantId属性实现
  • 所有租户共享一套资源, 每个租户都有独立的资源环境.

所有租户共享同一个数据库,同一个表空间,但租户与租户之间数据采用逻辑隔离,通过在所有的表中引入租户id来保证逻辑隔离

这样可以保证表中最大的租户数量,对于企业来说维护成本较低

image.png

优势

  1. 每个数据库可支持的租户数量最多,维护和购置成本低

劣势

  1. 隔离级别低,容易发生串数据
  2. 数据安全性低,在应用开发时需要做大量安全性开发工作,研发成本高
  3. 需要逐表逐条备份数据和还原数据,数据备份和恢复困难.

多租户隔离方案如何选型

  • 我们从资源共享,数据隔离,应用复杂度,应用成本四方面比较

image.png

多租户隔离模型架构

  • 对SaaS产品来说,租户是最顶层的概念,租户内部拥有组织,用户,产品能力,云资源等模型

image.png 租户可以入住到SaaS平台中,一个租户对应若干子功能, 每个租户拥有多个用户,每个用户需要对其进行角色授权,租户可以购买产品的多个业务模块,并使用已购买的业务模块来满足自身要求

推荐阅读