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

文章目录

    • 0.简介
    • 1.多租户概念
      • 1.1 基本概念
      • 1.2 单租户 vs 多租户
    • 2.实现方案
      • 2.1 独立数据库方案
        • 2.1.1 优点
        • 2.1.2 缺点
        • 2.1.3 应用场景
      • 2.2 共享数据库,独立 Schema
        • 2.2.1 优点
        • 2.2.2 缺点
        • 2.2.3 应用场景
      • 2.3 共享数据库、共享Schema、共享表
        • 2.3.1 优点
        • 2.3.2 缺点
        • 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 应用场景

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SMMU软件指南SMMU编程之寄存器

安全之安全(security)博客目录导读 本博客介绍了SMMUv3的编程接口: • SMMU寄存器 • 流表(Stream table) • CD(Context Descriptor) • 事件队列(Event queue) • 命令队列(…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…

【电力负荷预测实例】采用新英格兰2024年最新电力负荷数据的XGBoost电力负荷预测模型

与小编上篇文章介绍的基于BPNN神经网络的电力负荷预测相比较,两种模型的负荷预测方法各有优势,神经网络能够自动提取特征并处理非线性关系,而XGBoost则具有预测精度高、运行速率快和可解释性强的特点。在实际应用中,可以根据具体需…

数据库数据恢复—ORACLE常见故障有哪些?如何恢复数据?

Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。 Oracle数据库数据恢复方案: 1、检测存放数据库的服务器/存储设备是否存…

ArcGIS MultiPatch数据转换Obj数据

文章目录 ArcGIS MultiPatch数据转换Obj数据1 效果2 技术路线2.1 Multipatch To Collada2.2 Collada To Obj3 代码实现4 附录4.1 环境4.2 一些坑ArcGIS MultiPatch数据转换Obj数据 1 效果 2 技术路线 MultiPatch --MultipatchToCollada–> Collada --Assimp–> Obj 2.…

简单vue3前端打包部署到服务器,动态配置http请求头后端ip方法教程

vue3若依框架前端打包部署到服务器,需要部署到多个服务器上,每次打包会很麻烦,今天教大家一个动态配置请求头api的方法,部署后能动态获取(修改)对应服务器的请求ip 介绍两种方法,如有需要可以直接尝试步骤一&#xff…

vue3-count-to实现数字动态增长效果

vue3-count-to 是一个用于 Vue 3的数字计数动画库,常用于在页面上实现数字的动态增长效果,类似于从某个起始值渐变到目标值的效果。它可以用来显示各种数字、统计数据或展示动画效果。 1 安装 vue3-count-to 首先,你需要安装 vue3-count-to …

android AIDL ipc binder转换

一. 概述 众所周知AIDL并不是所有的数据类型都可以传输。 可以传输的类型包括: 1.原生类型 2.String 3. CharSequence 4. List 5.Map 6. Binder 7. Parcelable 容器类 parcelable传输的时候会分解成成员,数组item的方式,传输完成后再进行…

CityEngine实践——常用cga文件解析系列(2)

上回书说到了: 3、RULES/COMPONENTS/MASSING/SUBURBAN_BLOCK DETACHED_HOUSES.CGA ROWHOUSES.CGA SEMI_DETACHED_HOUSES.CGA 4、RULES/COMPONENTS/MASSING/URBAN_BLOCK MONOBLOCK.CGA PERIMETER_8_SHAPE.CGA PERIMETER_MULTIPART.CGA 这个cga挺有意思&#xff0c…

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…

ESP32外设学习部分--SPI篇

SPI学习 前言 我个人以为开始学习一个新的单片机最好的方法就是先把他各个外设给跑一遍,整体了解一下他的功能,由此记录一下我学习ESP32外设的过程,防止以后忘记。 SPI 配置步骤 SPI总线初始化 spi_bus_config_t buscfg {.miso_io_num …

禅道Bug的一次迁移

一、场景 平时工作记录在公司禅道上的问题想备份一份到本地,但是又没有公司禅道的数据库信息,有时候出测试报告想批量调整数据方便截图很困难,同时也为了学习禅道数据流转过程,所以有了把缺陷保存到本地一份的想法。 实际上禅道支…

Redis - 消息队列 Stream

一、概述 消息队列 定义 消息队列模型:一种分布式系统中的消息传递方案,由消息队列、生产者和消费者组成消息队列:负责存储和管理消息的中间件,也称为消息代理(Message Broker)生产者:负责 产…

C语言数组和字符串笔记

C语言数组和字符串笔记 1. 数组及其相关概念 1.1 为什么需要使用数组? 数组是一个有序的、类型相同的数据集合。这些数据被称为数组的元素。每个数组都有一个名字,数组名代表数组的起始地址。数组的元素通过索引或下标访问,索引从0开始。 …

双目摄像头标定方法

打开matlab 找到这个标定 将双目左右目拍的图像上传(左右目最好不少于20张) 等待即可 此时已经完成标定,左下角为反投影误差,右边为外参可视化 把这些误差大的删除即可。 点击导出 此时回到主页面,即可看到成功导出 Ca…

数据结构开始——时间复杂度和空间复杂度知识点笔记总结

好了,经过了漫长的时间学习c语言语法知识,现在我们到了数据结构的学习。 首先,我们得思考一下 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素…

什么是MMD Maximum Mean Discrepancy 最大均值差异?

9多次在迁移学习看到了,居然还是Bernhard Schlkopf大佬的论文,仔细看看。 一.什么是MMD? 1. MMD要做什么? 判断两个样本(族)是不是来自于同一分布 2.怎么做?(直观上)…

电梯内电动车识别数据集,可准确识别电梯内是否有电动车 支持YOLO,COCO,VOC三种格式的标注 7111张图片

电梯内电动车识别数据集,可识别电梯内是否有电动车 支持YOLO,COCO,VOC三种格式的标注 7111张图片 7111总图像数 数据集分割 训练组 74% 5291图片 有效集 16% 1168图片 测试集 9% 652…

Collection接口

目录 一. Collection基本介绍 二. Collection中的方法及其使用 1. 添加元素 (1) 添加单个元素 (2) 添加另一集合中的所有元素 2. 删除元素 (1) 删除单个元素 (2) 删除某个集合中包含在其他集合中的元素 (3) 保留两个集合中的交集部分, 删除其他元素. 3. 遍历元素 (1) …