mybatis 多租户saas_彻底理解微商城多租户Saas架构设计

原文链接:https://blog.csdn.net/haponchang/article/details/104246317,感谢作者提供这么好的总结!

1.具体的SaaS架构必须

1.先仔细选择最适合应用程序需求的租户模型,

2.需要根据租户模型来选定最终的架构,即应用程序设计和管理、每个租户的数据如何映射到存储等等。

避免因租户模型的切换而付出昂贵的代价。

租户模型  --》 应用程序设计 + 数据设计方案

2.影响租户模型的相关因素包括:

2.1可扩展性(Scalability)

  • 租户的数量级
  • 每个租户的存储级别
  • 整体存储
  • 工作负载

2.2租户隔离性(Tenant isolation)

  • 数据隔离和性能(是否一个租户的负载会影响到其他租户)

2.3单租户成本(Per-tenant cost)

  • 数据库成本

2.4 开发复杂度(Development complexity)

  • 数据结构的变化
  • 查询语句的变化

2.5运维复杂度(Operational complexity)

  • 性能监控
  • 数据结构schema管理
  • 租户数据恢复
  • 灾备

2.4可定制化程度(Customizability)

根据租户的需求自定义架构的容易程度 这个租户的讨论集中在数据层。但考虑一下应用层。应用程序层被视为一个整体实体。如果将应用程序划分为许多小型组件,您的租户模型选择可能会发生变化。对于租户和存储技术或使用的平台,您可以对其他组件进行不同的处理。

3 常见的架构模式有以下几种:

3.1独立服务+独立数据库

aff2379f7b9a0b805916bf8294f25e5c.png

这个模型中,应用层和数据层都是隔离的。

应用程序的每个实例都是独立实例。

租户拥有自己独立的数据库,每个应用程序实例只需要一个数据库。

对租户的管理独立于系统之外,对于每一个租户,整个应用程序需要重复安装一次。供应商都可以为租户管理软件。每个应用程序实例都配置为连接到其相应的数据库。

优点:为不同的租户提供独立的应用实例和数据库,有助于简化数据模型和业务模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复系统或数据均比较简单,系统间也不会相互影响。

问题:数据库层面,每个租户数据库都作为独立数据库进行部署。该模型提供了最大的数据库隔离。但隔离需要为每个数据库分配足够的资源来处理其高峰负载。这里重要的是, 弹性池不能用于部署在不同资源组或不同订阅中的数据库。这种限制使得这种独立的单租户应用程序模型成为从整体数据库成本角度来看最昂贵的解决方案;应用层面,每个租户若存在个性化定制,则需要对项目进行横向扩展,扩展时务必需要保证与主干版本的兼容性问题。运维层面,应用和数据库的安装数量会随租户的数量线性递增,随之带来维护成本和购置成本的增加。

3.2一套服务+独立数据库

3a0efdd937d7e2de58a98b224957b503.png

这个模型中,应用层是共享的,数据层都是隔离的

应用程序仅部署一套,所有租户实例共享。

租户仍拥有自己独立的数据库,应用程序需对接多个租户的数据库。

对租户的管理由配置中心(Config Server)管理,配置中心提供了配置,监视和管理共享所需的功能,供应商使用这些工具为租户管理软件。对于每一个租户,整个应用程序仅需要安装一次,应用程序实际请求结合配置中心请求相应的数据库。

优点:为不同的租户提供独立数据库,有助于简化数据模型扩展设计,满足不同租户的独特需求;如果出现故障,数据恢复均比较简单,也可以自动将单个租户恢复到较早的时间点。因为恢复只需要恢复存储租户的一个单租户数据库。这种恢复对其他租户没有影响,这证实了管理运营处于每个租户的细粒度级别。应用层面的维护成本和购置成本有所减少。

问题:数据库层面,同模型一;应用层面,每个租户若存在个性化定制,则需要对项目进行横向扩展,扩展时务必需要保证与主干版本的兼容性问题。运维层面,数据库的运维问题同模式一,应用层面的运维在版本控制的问题上难度有所增加。

3.3 一套服务+一套数据库(不同schema)

e93c8b270a12e655187c95728ced5409.png

这个模型中,应用层是共享的,数据库共享,但数据是隔离的。

应用程序和数据库仅部署一套,所有租户共享。

多个或所有租户共享Database,也就是说共同使用一个数据库,但是每个租户一个Schema(也可叫做一个user),使用表进行数据隔离数据库。底层库比如是:DB2、ORACLE等,一个数据库下可以有多个SCHEMA。

应用程序需对接多个租户的数据库。

对租户的管理由配置中心(Config Server)管理,同模式二。

优点:为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。

问题:数据库层面,如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据;应用层面,配置中心需要对租户信息进行完整且合理的分配和维护。

3.4 一套服务+一套数据库(相同schema)

0c6c52197af7907d0553162355cce855.png

模型与模型三的差别在于共享数据库,共享 Schema,共享数据表。也就是说共同使用一个数据库一个表使用字段进行数据隔离。如表中增加TenantID多租户的数据字段。这是共享程度最高、隔离级别最低的模式。

简单来讲,即每插入一条数据时都需要有一个客户的标识。这样才能在同一张表中区分出不同客户的数据,这也是我们系统目前用到的(tenant_id)。

优点:方案的维护和购置成本低,允许每个数据库支持的租户数量最多。

问题:隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原。

3.5网关+前台+中台+数据存储

e296d4398f92e415b5304f100e4e0428.png

模式五与之前的模式的最大区别是,在原有的web Service进行细化拆分,优化成 网关+前台+中台+数据存储的模式。

网关用于接收租户的请求,并发送给前台。

前台的数量与租户一致,每一个租户对应一个前台服务,方便针对租户进行个性化定制。

中台负责提供处理所有的业务请求,中台不关心租户是谁,将重心关注在业务的处理上。配置中心用于配置租户的接口权限、流程定制等相关配置信息。结合业务逻辑返回给前台特定租户的相关信息。

数据库模式参考模式四。

优点:有利于定制不同租户的个性化需求。例如:交互界面不同、工作流不同等等。服务只需要根据用户需求在前台做相应的横向扩展即可; 不同租户间服务相互独立,互不影响。

问题:模块划分需要做好划分,重点注重业务之间的低耦合;调用链路变长,需要做一定的优化处理;模块纵向拆分后,后期研发和运维难度均会有所增加;

好文收集不易,请转发或在看,谢谢!

ad3f4afb7947ecf3ab3994c8620ab831.png

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

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

相关文章

MPU和MCU的区别和选择

当为你的下一个设计方案选择正确的核心处理器件时,你应该考虑哪些因素呢?本文将对MPU和MCU做些对比分析,并以此对器件的选择给出一些指导性建议和意见。 本文引用地址:http://www.eepw.com.cn/article/164617.htm 每当在为新设计选择正确合理…

html表单(一)

在网上找的各种关于表单元素的解释都有些bug,最后还是去官网上看的文档再结合各个问答网站的内容作出如下总结,先给出官网表单元素这章的链接:http://www.w3.org/TR/2014/REC-html5-20141028/forms.html#forms 待续转载于:https://www.cnblo…

Python模块——subprocess

subprocess模块 通过Python去执行一条系统命令或脚本。 三种执行命令的方法 subprocess.run(*popenargs, inputNone, timeoutNone, checkFalse, **kwargs) #官方推荐 subprocess.call(*popenargs, timeoutNone, **kwargs) #跟上面实现的内容差不多,另一种写法 sub…

bulter机器人_科普!九款使用率最高的物流机器人大盘点!

原标题:科普!九款使用率最高的物流机器人大盘点!说起快递的速度,中国可谓是跑在全球前列,因为强大的人力资源以及完善的供应链结构,导致整个运作过程很流畅快速。但是,如果在特殊的节点&#xf…

异步传参

2019独角兽企业重金招聘Python工程师标准>>> AJAX样板 $.ajax ({ type:"post", url:"要传递参数的地址", data:{id:id}, success:function(val) { …

PHP实现单击“添加”按钮增加一行表单项,并将所有内容插入到数据库中

PHP实现单击“添加”按钮增加一行表单项&#xff0c;并将所有内容插入到数据库中 效果图: htmljquery: <html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script language"javascript&qu…

Leetcode按Tag刷题

按照Leetcode的Tag来刷题&#xff0c;从easy到hard刷题 关于如何让Leetcode按难易程度排序&#xff0c;可按以下步骤&#xff1a; 1. 进入Leetcode后&#xff0c;点击code 2.点击code后&#xff0c;可查看所有题目&#xff0c;可看到右下角有Tag标志&#xff0c;选择想要刷的T…

JMeter学习(三十一)Access Log Sampler

前提&#xff1a; 在tomcat\conf\server.xml默认情况下&#xff0c;会有一段代码&#xff1a; <Valve className"org.apache.catalina.valves.AccessLogValve" directory"logs" pattern"%h %l %u %t &quot;%r&quot; %s %b" prefix&qu…

布谷鸟沙盒分析静态文件_“案例沙盒方法”喜提国际商学院协会(AACSB)2019年启发式创新奖...

国际商学院协会(AACSB)于2019年4月14日至16日在英国爱丁堡召开年会&#xff0c;会上公布了2019年Innovation that Inspire的(启发式创新奖)获奖学校及项目。大会共收到800余个项目报名&#xff0c;最终21个项目获此殊荣。新南威尔士大学商学院以创新品牌UNSW Sandbox Method (案…

淘宝npm镜像使用方法(转)

1.临时使用 npm --registry https://registry.npm.taobao.org install express 2.持久使用 npm config set registry https://registry.npm.taobao.org 配置后可通过下面方式来验证是否成功 npm config get registry或 npm info express3.通过cnpm使用 npm install -g cnpm --r…

Console.Write(程序猿?开发?写代码?编程?移动、网页、桌面开发?Oh,我连菜鸟都不是!);...

You make choices and dont look back. 虽然不是学计算机出身&#xff0c;但我对于写代码充满了好奇&#xff0c;尽管这种兴趣还不像烈酒那样浓烈&#xff0c;也不能像打鸡血似的刺激自己每个神经元而浑身激情&#xff0c;而熊猫眼的熬夜。但现在也一如既往的坚持&#xff0c;坚…

基本动态规划问题

小东所在公司要发年终奖&#xff0c;而小东恰好获得了最高福利&#xff0c;他要在公司年会上参与一个抽奖游戏&#xff0c;游戏在一个6 * 6的棋盘上进行&#xff0c;上面放着36个价值不等的礼物&#xff0c;每个小的棋盘上面放置着一个礼物&#xff0c;他需要从左上角开始游戏&…

还有前景吗_喷码机行业还有前景吗 2021喷码机市场份额有多大

喷码机按照其实现的方式不同又分为&#xff0c;压电喷墨技术、压阀式喷墨技术、和热发泡喷墨技术(Thermal Inkjet Technolog)&#xff0c;简称TIJ。根据以上原理可以将喷码机分为&#xff1a;小字符喷码机&#xff0c;大字符喷码机&#xff0c;高清晰喷码机。喷码机是运用带电的…

scrapy之内蒙古自治区环境保护厅

主程序&#xff1a; # -*- coding: utf-8 -*- import re, scrapy from urllib.parse import urljoin from nmgepb.items import NmgepbItemclass BasicNmgepbSpider(scrapy.Spider):name basic_nmgepballowed_domains [nmgepb.gov.cn]start_urls [http://nmgepb.gov.cn/]def…

supervisor 守护多个进程_进程管理工具之Supervisor

相关介绍Supervisor是用Python 开发的一个client/server服务&#xff0c;是 Linux /Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程&#xff0c;当一个进程意外被杀死&#xff0c;s…

MySQL运算符优先级顺序

待续。。。转载于:https://www.cnblogs.com/yuyue2014/p/4451035.html

yaahp层次分析法步骤_综合评价方法之层次分析法,选择再也难不倒你!

在日常生活中&#xff0c;我们常常面临着各种各样的选择。比如你想去北京、上海、广州旅游&#xff0c;但是由于种种原因&#xff0c;你只能选择一个地点去旅游&#xff0c;那么哪一种选择是最优的呢&#xff1f;有没有较为科学的方法帮助我们更好地选择呢&#xff1f;今天&…

TCP/IP TELNET SSH

快速导航 远程登录示例 关于远程登录&#xff1f; 嵌入&#xff1f; 用来控制远程服务器上运行的应用程序字符&#xff1f; 转义&#xff1f; 操作方式&#xff1f; 关于SSH&#xff1f; 远程登录示例 关于远程登录&#xff1f; 网络虚拟终端(Network Virtual Terminal,NVT)通过…

CentOs中iptables配置允许mysql远程访问

在CentOS系统中防火墙默认是阻止3306端口的&#xff0c;我们要是想访问mysql数据库&#xff0c;我们需要这个端口&#xff0c;命令如下&#xff1a; 1 /sbin/iptables -I INPUT -p tcp --dport 3036 -j ACCEPT 我们需要保存我们的操作&#xff0c;命令如下&#xff1a; 1 /etc…

莫兰迪紫rgb_莫兰迪rgb参数_译述北京 | RGB的前世今生

译述北京 | RGB的前世今生作为服饰三大要素之一的颜色 也常是女孩们着眼关注的话题不论是和谐统一还是创意满分的色彩搭配总是能让平平无奇的衣服具有吸引力 让人耳目一新从“泫雅风”的五彩斑斓到莫兰迪色系的低饱和度以及和bm风相辅相成的田园小清新色色彩在女孩们的《时尚经…