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

文章目录

    • 0.简介
    • 1.多租户概念
      • [1.1 基本概念](#1.1 基本概念)
      • [1.2 单租户 vs 多租户](#1.2 单租户 vs 多租户)
    • 2.实现方案
      • [2.1 独立数据库方案](#2.1 独立数据库方案)
        • [2.1.1 优点](#2.1.1 优点)
        • [2.1.2 缺点](#2.1.2 缺点)
        • [2.1.3 应用场景](#2.1.3 应用场景)
      • [2.2 共享数据库,独立 Schema](#2.2 共享数据库,独立 Schema)
        • [2.2.1 优点](#2.2.1 优点)
        • [2.2.2 缺点](#2.2.2 缺点)
        • [2.2.3 应用场景](#2.2.3 应用场景)
      • [2.3 共享数据库、共享Schema、共享表](#2.3 共享数据库、共享Schema、共享表)
        • [2.3.1 优点](#2.3.1 优点)
        • [2.3.2 缺点](#2.3.2 缺点)
        • [2.3.3 应用场景](#2.3.3 应用场景)

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 应用场景

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

相关推荐
louiX4 小时前
深入理解 Android BLE GATT 回调机制:从“回调地狱”到高可靠 OTA 架构
架构
aircrushin5 小时前
轻量化大模型架构演进
人工智能·架构
倔强的石头_5 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
天蓝色的鱼鱼5 小时前
你的项目真的需要SSR吗?还是只是你的简历需要?
前端·架构
文心快码BaiduComate6 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
JavaTalks8 小时前
高并发保护实战:限流、熔断、降级如何配合落地
后端·架构·设计
兆子龙10 小时前
别再用 useState / data 管 Tabs 的 activeKey 了:和 URL 绑定才香
前端·架构
葫芦的运维日志10 小时前
Higress鉴权限流插件架构深度解析
架构
绝无仅有10 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
绝无仅有10 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构