详解多租户架构下的资源隔离模式

0.简介

随着Saas(软件即服务)的兴起,对于不同使用方资源如何隔离就是一个必须面对的问题,由此多租户概念开始被人所熟知,本文将从多租户的概念和三种实现方式来对其进行详细描述。

1.多租户概念

1.1 基本概念

多租户,就是单个软件实例可以为多个不同用户组提供服务的软件架构。在传统的应用中,资源仅仅去服务于一个租户,所有数据都是自己私有的;而扩展到SaaS场景,其在云端将分散计算资源,存储资源都整合到一起,让租户来共享这些资源,用户在享受低成本的同时,尽可能做到资源的隔离。所有对于多租户的设计方案,其实就是是要在数据的共享、安全隔离和性能间取得平衡。

1.2 单租户 vs 多租户

单租户架构下,对于每个租户都会有自己独立的系统实例,这样可以做到数据的独立和资源的隔离,但代价是成本的提升、系统维护和升级的复杂度的提升 ;而多租户架构下,多个租户共享资源,其可以显著的降低成本和维护升级的复杂性,但需要额外的隔离机制去保证资源的隔离和安全性。
在这里插入图片描述

2.实现方案

在多租户架构的设计中,数据库层的实现策略决定了系统的性能、隔离性和扩展性,其主流的三种主要的方案,分别是:1.独立数据库 2.共享数据库,独立 Schema 3.共享数据库,共享 Schema,共享数据表

2.1 独立数据库方案

这种方案是每个用户一个独立的数据库,其相比于传统的部署模式,只是将所有的实例使用租户来统一管理,其在三种方案中有着最好的隔离性,但也带来了更高的管理成本和复杂性,其详细示意图和优缺点如下:

在这里插入图片描述

2.1.1 优点

1)数据隔离性好,安全级别高;

2)容易定制,可以根据不同租户需求方便的进行调整。

3)数据恢复简单,只影响自己的服务。

2.1.2 缺点

1)成本高,资源利用率低。

2)跨租户统计数据困难。

3)管理复杂性高,每个租户一套,不方便统一管理。

2.1.3 应用场景

适用于定价高,租户不多,安全级别要求高的租户。

2.2 共享数据库,独立 Schema

这种方案是一种逻辑隔离方案,多个租户共享一个数据库实例,每个租户有自己的schema,也可以理解为一个命名空间,这是一种在数据隔离性和资源利用率上折中的方案,其示意图如下,可以看到,其和第一种相比,所有租户都在一个数据实例上。

在这里插入图片描述

2.2.1 优点

1)数据隔离性较好,虽然是同一个数据库实例,但其拥有自己的schema,数据相对独立

2)成本较低,共享数据库实例。

2.2.2 缺点

1)需要增加Schema的处理。

2)跨租户统计困难。

3)需要同时管理多个Schema,有一定管理复杂度。

2.2.3 应用场景

适用于数据规模中等,预算有限,租户数量中等的项目。

2.3 共享数据库、共享Schema、共享表

这种方式是一种全部共享的方式,所有租户共享一个数据库实例,同一个Schema,甚至是同一个表,每个表里有租户id来记录来自于那个租户,属于字段级别的逻辑隔离,其有着最高的资源利用率,但在安全性和隔离性上属于最低,其示意图及优缺点如下:

在这里插入图片描述

2.3.1 优点

1)成本低,资源利用率高。

2)跨租户容易统计。

3)理解最为简单。

2.3.2 缺点

1)安全性最差,隔离级别最低;需要配备严格的访问控制和验证机制。

2)对单个租户无法进行定制和扩展。

2.3.3 应用场景

适用于低成本,租户数量多,租户数据量小,对安全性和隔离级别要求低的产品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值