SaaS多租户系统架构设计

前言:多租户是SaaS(Software-as-a-Service)下的一个概念,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作的实际需求,通过互联网向厂商租用所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得SaaS平台供应商提供的服务。SaaS服务尤其利于一些中小企业,以低成本实现自己的软件需求。


 一、SaaS多租户简介

1.1、SaaS多租户概念

多租户技术是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。它是为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可保障客户的数据隔离。简单来说是一个单独的实例可以为多个组织服务。

1.2、SaaS多租户的优势

  • 开发和运维成本低

  • 按需付费,节约成本

  • 即租即用,软件版本更新快

  • 故障排查更及时

  • 大数据和AI的能力支持更强大

1.3、为什么要搭建多租户系统?

多租户是SaaS领域的特有产物,探究何为多租户需回归到对SaaS的理解上。

SaaS服务是指部署在云上的,客户可以按需购买,并通过网络请求就能获取到的服务;也就是说,在这样的场景下,会有N个客户同时使用同一套SaaS服务。

那么对SaaS服务供应商来说,构建SaaS体系需要完成两部分工作:上层服务+底层多租户系统。

上层服务是供应商对外售卖的软件服务,其可以为客户创造价值、为公司带来营收;而底层多租户系统则是SaaS模式实现的具体方式,公司在对外售卖SaaS服务时,需要考虑如何实现客户之间的数据隔离、服务的权限控制、计费管理等;因此需要引入多租户概念来解决上述问题。

通过多租户系统,公司可以更好的管理客户和上层服务,客户也可以更好的使用软件服务。这也就是多租户系统存在的意义了。

1.4、多租户模型

如图所示,涉及主要模型有以下几类:

(1)租户:指一个企业客户或是个人客户,租户之间数据与行为隔离,上下级租户间通过授权实现数据共享。每个租户只能操作归属或授权给该租户的数据;

(2)组织:如果租户是一个企业客户,通常就会拥有自己的组织架构;

(3)用户:租户下的具体使用者,拥有用户名、密码、邮箱等账号信息的自然人;

(4)角色:用户操作权限的集合;

(5)员工:组织内的某位员工;

(6)解决方案:为了解决客户的某类型业务问题,SaaS供应商一般都将产品和服务组合在一起,为客户提供整体的打包方案;

(7)产品能力:能够帮助客户实现场景解决方案闭环的能力;

(8)资源域:用来运行1个或多个产品应用的一套云资源环境;

(9)云资源:SaaS产品一般都部署在各种云平台上,例如阿里云、腾讯云、华为云等。对这些云平台提供的计算、存储、网络、容器等资源,抽象为云资源。


 二、SaaS多租户的数据隔离设计方案  

2.1、三种多租户数据隔离方案

多租户对于用户来说,最主要的一点就在于数据隔离。不能出现,我登了A用户单位的号,但是看到了B用户单位的数据。因此,多租户的数据库设计方案和代码实现就相当有必要考虑了。

目前开发者们普遍接受的SaaS多租户设计方案,常见的大概就3种:

即为每个租户提供独立的数据库、独立的表空间、按字段区分租户,每种方案都有其各自的适用情况。

  • 一个租户独立一个数据库

一个租户独立使用一个数据库,那就意味着我们的SaaS系统需要连接多个数据库,这种实现方案其实就和分库分表架构设计是一样的,好处就是数据隔离级别高、安全性好,毕竟一个租户单用一个数据库,但是物理硬件成本,维护成本也变高了。

  • 独立的表空间

这种方案的实现方式,就是所有租户共用一个数据库系统,但是每个租户在数据库系统中拥有一个独立的表空间。

  • 按租户id字段隔离租户

这种方案是多租户方案中最简单的数据隔离方法,即在每张表中都添加一个用于区分租户的字段(如tenant_id或org_id啥的)来标识每条数据属于哪个租户,当进行查询的时候每条语句都要添加该字段作为过滤条件,其特点是所有租户的数据全都存放在同一个表中,数据的隔离性是最低的,完全是通过字段来区分的,很容易把数据搞串或者误操作。

2.2、三种数据隔离架构设计的对比如下:

隔离方案成本支持租户数量优点缺点
独立数据库系统数据隔离级别高,安全性,可以针对单个租户开发个性化需求数据库独立安装,物理成本和维护成本都比较高
独立的表空间较多提供了一定程度的逻辑数据隔离,一个数据库系统可支持多个租户数据库管理比较困难,表繁多,同时数据修复稍复杂
按租户id字段区分维护和购置成本最低,每个数据库能够支持的租户数量最多隔离级别最低,安全性也最低

大部分公司都是采用第三种多租户设计方案:按租户id字段隔离租户 架构设计实现多租户数据隔离的。

2.3、MyBatis-Plus多租户插件优雅实现数据隔离​

该系统只有一个数据库,所有租户共用数据表。在每一个数据表中增加一列租户ID,用以区分租户的数据。增删查改时,一定要带上租户ID,否则就会操作到其他租户的数据。因此,这里的设计一定要重点考虑。

  我们要保证的就是一定不要忘记带上租户ID。一个很好的方案就是通过AOP的方案,隐式的为我们的每一个SQL带上这个租户ID。我个人是更喜欢使用MyBatisPlus来操作数据库的。它提供了插件的机制,我们可以通过拦截它提供的四大组件的某些对象,某些方法,来操作SQL,动态的为我们的SQL拼接上租户ID字段。

  当然,MyBatis-Plus高版本提供了更加方便的拦截器,并且已经将多租户插件放入JAR包,我们只需稍加实现,并将该插件加入到MyBatis的拦截器链中,就可以不用再显式的拼接租户ID字段了,降低了出错的概率。


参考链接:

数云融合丨 一文让你弄懂多租户数据库设计⽅案

SaaS架构:多租户系统架构设计

SaaS模式下,多租户系统数据隔离实现方案

谈谈对多租户SaaS系统的简要理解 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【技巧分享】如何获取子窗体选择了多少记录数?一招搞定!

Hi,大家好久不见。 我这个更新速度是不是太慢了呀,因为,最近又又又在忙,请大家谅解啦。 现在更新文章、视频都要花好久去考虑,好不容易有个灵感了,一搜索,结果发现之前都已经分享过了(委屈脸&…

游戏角色——龙皇后制作曝光,大师级作品,值得膜拜

Hello~大家好 今天给大家带来一篇游戏角色的制作的教程图文 本图文来自印度3D艺术家Sougato 龙皇后的灵感 首先,我非常喜欢日本的武士文化,非常尊重这个武士家族。很多艺术家创造了令人惊叹的2D概念,我整天都在Artstation或Pinterest上挖掘这些概念,显然Guweiz是…

XP母盘制作详细介绍

XP母盘制作详细介绍 减小字体 增大字体 作者:佚名 来源:本站整理 发布时间:2008-1-24 11:50:00 网吧母盘制作分为5部分请大家阅读: (做系统之前把游戏都在老系统更新了以防有碎片垃圾) 个人建议系统放置在…

【RPG Maker MZ】独立游戏制作日志③

目录 此次的进度 详细内容 根据游戏流程创建同一场景的多个副本以便于管理 交涉 设定影响交涉结果的条件: 设定可选的选项: 设定后续选项以及回路 判定交涉结果: 结尾 此次的进度 OK,时间过的很快,这次的内容拓…

游戏制作RPGDreamer-仙剑奇侠传视觉小说

上一个打飞机游戏制作视频的播放数据实在惨淡,每次看数据之前都要给自己做做心理建设,免得老脸挂不住。 有个死党说现在流行复古、怀旧,建议做个老游戏,看能不能攒点人气。像我这种四十来岁的人最大的怀旧点就是仙剑奇侠传&#x…

【美化§守护生命绿xp电脑主题下载§】

【美化守护生命绿xp电脑主题下载】 守护生命绿电脑桌面壁纸下载《鼠标右键另存为本地》 守护生命绿电脑桌面主界面效果图 守护生命绿电脑桌面开始菜单效果图最新电脑操作系统下载 守护生命绿电脑桌面图标效果图 守护生命绿电脑鼠标效果图 守护生命绿主题介绍: 守护生命绿电脑桌…

【美化§彩虹心灵xp电脑主题下载§】

【美化彩虹心灵xp电脑主题下载】 彩虹心灵电脑桌面壁纸下载《鼠标右键另存为本地》 彩虹心灵电脑桌面主界面效果图ghost win7系统下载 彩虹心灵电脑桌面开始菜单效果图 彩虹心灵电脑桌面图标效果图 彩虹心灵电脑鼠标效果图 彩虹心灵主题介绍: 彩虹心灵电脑桌面主题&#xff1a…

【springboot】springboot定时任务:

文章目录 一、文档:二、案例: 一、文档: 【cron表达式在线生成器】https://cron.qqe2.com/ 二、案例: EnableScheduling //开启任务调度package com.sky.task;import com.sky.entity.Orders; import com.sky.mapper.OrderMapper; …

大头贴制作大师 v6.9.5 简体中文绿色特别版

软件大小: 11 mb 软件语言: 简体中文 软件类别: 绿色软件 运行环境: win2003, winxp, win2000, nt, winme 授权方式: 免费软件 软件等级: 更新时间: 2009-12-21 14:24:11 立即下载 相关说明 一键复制 收藏该软件 软件介绍: 《大头贴制作大师》是一款制专业大头贴的制…

RPG Maker XP游戏制作方法(六)

(5)接下来就是大家最为关注的时间的插入了。 选择事件层按钮 看到上边的几个白色的格子了么?那就是加好的事件 打错,是事件的插入 在你想要增加事件的地方左键双击格子,会弹出事件对话框 这里以增加一个对话NPC为例 1…

下周开幕,给深圳的电子工程师准备的展会!

我和电子圈老江认识很久了,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我。后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群。 老江…

下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了

我和电子圈老江认识了很久,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我。后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群。 老江…

毕业五年总结(转载的别人帖子,挺励志)

以下都是转载: 每年都是国庆浪完后才能静下心来写写总结收收心,感觉知行都没啥人看了,但还是写一下资深学渣五年总结,记录一下, 应该也是我知行上最后一个总结帖了吧,以后总结就写evernote自己看着玩了 归…

渗透测试工具ZAP入门教程(2)-HUD教程

平视显示器 HUD是一种全新的与ZAP进行交互的方式。 它将安全信息叠加到你正在测试的应用程序上,并允许你访问关键的ZAP功能。 对于刚接触安全的人来说,它更易于理解,但同时也允许经验丰富的渗透测试人员将重点放在他们正在测试的应用程序上。…

ESP8266固件烧录

文章目录 硬件电路烧录工具完整固件资料+烧录工具硬件电路 烧写模式: GPIO0:0 此时通过REST复位引脚复位,8266进入烧写模式。 烧写通过串口烧写,波特率设置115200 运行模式: GPIO0:1 此时通过REST复位引脚复位,8266进入烧写模式。 烧录工具 烧写工具下载链接:https:…

Tableau可视化入门实践-2

目录 折线图1.导入excel文件数据2.建立折线图并添加标签 双轴折线图 折线图 1.导入excel文件数据 2.建立折线图并添加标签 双轴折线图 行标签拖进两个度量建立上下两个折线图 在第二个折线图纵轴,右键选择“双轴”

华为OD七日集训第2期 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第2期五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、递归回溯第5天、二分查找第6天、深度优先搜索dfs算法第7天、动态规划 六、集训总结1、《代码…

Redis数据类型全总结【万字总结】

文章目录 前言一、String1、内部实现2、应用场景缓存对象常规计数分布式锁共享 Session 信息 3、常用指令 二、List1、内部实现2、应用场景消息队列List 作为消息队列有什么缺陷 3、常用指令 三、Hash1、内部实现2、应用场景缓存对象购物车 3、常用指令 四、Set1、内部实现2、应…

Axure 尺寸测量插件使用方法

Axure 尺寸测量插件 Axure 尺寸测量插件使用方法 在使用是只需要将元件[Axure尺寸测量]拖拽到页面中即可。 本插件支持本地预览、服务预览、以及Axure内预览。 元件下载地址:链接:https://pan.baidu.com/s/1gWA2ilsPg0IHS3JWnzMiYA