您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

多租户系统技术优越性及架构选型

时间:2021-06-29 09:57:51  来源:  作者:梦幻神域
  1. 应用系统架构种类及优缺点分析

 

软件体系结构是构建计算机软件实践的基础。 软件架构是一个系统的草图。它描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

 

随着社会及软件设计的发展,不同时期对软件架构的要求也不一样,软件架构的发展,从最开始的单体应用架构,到垂直应用架构,再到分布式架构,再到面向服务的SOA架构,再到目前比较流行的微服务架构,每种架构都在自己的时代发挥了重要的作用.

 

单体架构是早期的应用软件架构,以前的SSH或者SSM架构模式就属于这种架构,架构采用分层的架构模式,可分为数据库访问层,业务逻辑层,控制层,前台到后台在一个项目里完成,这种架构简单,开发成本低,部署在一个节点上就可以,维护也比较方便,但缺点也比较明显,全部功能集成在一个项目中,这样对于大型项目来讲不易开发和维护,模块之间耦合紧密,单点容错能力很低,并且无法针对不同的模块进行针对性优化和水平扩展,一个模块出现问题,会导致整个系统无法使用.

多租户系统技术优越性及架构选型

 

多租户系统技术优越性及架构选型

 

单体应用架构

 

随着项目运行发展,用户访问量逐渐增大,单体架构的应用只能通过软负载均衡等手段,结合单纯增加节点的方式来应对,但系统中并不是所有的模块都会有比较大的访问量,这时单体架构的劣势就会展现出来,这时我们把系统模块拆分,对访问量较大的模块,增加节点,进行水平扩展即可这就是垂直应用架构,垂直应用架构很好的适应了当时时代发展的需要,实现了流量分担,解决了并发问题,并且可以针对不同模块进行优化和水平扩展,一个模块出了问题不会影响到其他系统,从而也提高了系统容错能力,但垂直应用架构的系统,各模块间相互独立,无法相互调用,这会导致重复的开发任务.模块间物业相互调用的情况是避免不了的.

多租户系统技术优越性及架构选型

 

多租户系统技术优越性及架构选型

 

垂直应用架构

 

分布式架构,由垂直应用架构演变而来,当垂直应用架构中,模块越来越多,重复的业务代码会越来越多,这时把重复部分代码抽取出来,做成统一的业务层来提供独立服务,这就形成了分布式架构,分布式架构分为表现层和服务层两个部分,表现层仅处理页面交互,服务层提供业务逻辑支撑,各个服务模块之间可以相互调用,提高了代码的复用性,但随着业务模块增多,系统间耦合度会逐渐变高,模块间调用关系错综复杂,系统会变的越来越难以维护.

 

多租户系统技术优越性及架构选型

 


多租户系统技术优越性及架构选型

 

 

分布式架构

 

由于分布式架构下,模块服务越来越多,模块小而多的问题越来越突出,模块间调用混乱复杂,这个时候就需要增加一个调度中心,对模块服务间的调用进行实时管理,此时SOA Service OrientedArchitecture,面向服务的架构出现了,该架构通过添加服务治理中间层,来实时管理模块服务之间的相互调用.目前服务治理中间件有阿里的DUBBO,早期时有人用WebService或ESB企业服务总线,底层通讯协议使用SOAP协议(Http+XML)来实现传输.SOA架构使用服务治理层解决了服务之间调用关系错综复杂的问题,但服务间依赖关系较多,某个环节出错可能会导致服务雪崩,并且模块服务间关系复杂,运维成本增加,测试部署困难.

多租户系统技术优越性及架构选型

 

多租户系统技术优越性及架构选型

 


多租户系统技术优越性及架构选型

 

SOA架构

 

微服务架构从SOA架构演变而来,比SOA架构模式,粒度控制更加精细,微服务架构倡导将应用模块,设计成一个个独立,可配置,的子服务,每个服务可以独立部署,互不影响,服务间通讯采用Http协议,并使用restful风格的API形式进行通讯,数据交换采用轻量级Json格式通讯,借助Http实现了系统跨语言,跨平台的交互,微服务架构,通过对服务的原子化拆分,独立打包,部署,升级,保证了每个微服务清晰的任务划分,利于扩展.并且现在已经有成熟的微服务全家桶式的框架,比如SpringCloud以及最新的Spring Cloud Alibaba.

 

多租户系统技术优越性及架构选型

 

多租户系统技术优越性及架构选型

 

微服务架构

 

  1. 分布式系统多租户的优缺点分析

 

多租户技术又称多重租赁技术,是一种软件架构,它探讨的是实现如何在多用户环境箱,实现共用相同的系统或程序组件,并确保各个用户之间的数据独立性和隔离性.在多租户应用系统架构中,使用多租户应用系统的客户称之为租户,对租户而言在系统中建置的各种数据,以及用户本身客制化的应用程序环境等都是属于租户范围的,也就是说,虽然多个租户同时在使用一套程序软件,但每个租户都有自己的一套客制化软件环境,因此租户数据的隔离,隐私,安全是多租户技术的关键.

 

多租户的软件架构,系统维护成本低,系统升级时只需更新一次,维护人员不需要对每个用户都进行更新,节省了大量的运维成本,同时因为一个软件实例被多个组织共享,降低了整体的资源消耗,减低了应用运行成本和相应管理开支,同时降低了在云计算环境下,导致的敏感数据容易泄露,数据访问无详细记录,操作无详细记录的风险,提高了数据的安全性.另外由于统一部署所以管理起来也会更方便,当然多租户的软件架构同样也有系统复杂性高的问题,由于多租户系统融合了所有租户的需求,所以需要更强的专业技术来持续开发升级维护,才能保证系统的持续稳定运行.

 

  1. 多租户系统模型及实现方式分析

 

在现有多租户的技术实现中主要有三种模型.

 

第一种是独立数据库隔离模型,即为每个租户维护一个单独的数据库,该数据库独占一台服务器设备,这种方案的用户隔离级别最高,安全性最好,独立数据库是一个租户独享一台数据库服务器,它提供了最高强度的隔离,租户的数据彼此,在物理层面上不可见,数据的备份恢复都很灵活.但相应的硬件成本也高,数据库安装数量多,随之会带来运维和购置成本的增加.

 

第二种是共享数据库服务器,独立数据库实例模型,这种方式所有租户共享一个数据库服务器,但每个租户使用该数据库服务器上的一个数据库实例,将每个租户分别关联到这台数据库服务器的不同数据库实例上,租户之间的数据,彼此在逻辑上是不可见的,这在一定程度上实现了数据的逻辑隔离,并不是完全隔离,但若该数据库服务器出现问题,所有租户的数据库都会受到影响.

 

第三种是共享数据库服务器,共享数据库实例,共享数据库表模型,

 

这种方式实现的多租户系统,所有租户的数据放到同一台数据库服务器的,同一个数据库实例中,每个租户通过表中的TenantId来区分不同的租户数据,这种模型共享程度最高,隔离级别最低,租户间数据彼此逻辑不可见,这是成本最低的一种实现方式,另外还有一种相似的实现方式,也是通过共享数据库服务器共享数据库表,但数据的隔离不是通过TenantId而是通过软件系统自身的权限配置,来实现的租户数据逻辑上的隔离,这种方式跟前一种方式相比设计实现成本会更低一些同时也能很好的在逻辑上保证数据的隔离.

 

  1. 企业软件SAAS化的优缺点分析

 

Saas Software-as-a-Service软件即服务,对于平台供应商来说,相对于传统的软件供应模式,软件的Saas化,可以让用户通过互联网使用实时运行的软件,给用户带来极其丰富的体验的同时,也节约了客户的使用投资,同时由于供应商,始终维护一套代码,所以在一定程度上也节省了供应商的成本.同时对于供应商来说,多租户的软件架构代码可重复使用,成本较低,可以更快的为用户提供解决方案,软件产品可按功能模块,随意组合,定价模式灵活,符合企业发展模式,另外只维护一套软件,供应商可以把精力专注到产品提升上,给客户提供更好,更全面的解决方案和技术支持.

 

  1. 多租户系统技术及架构选型分析

 

多租户应用软件构建模型有独立数据库服务器模型,独立数据库服务器,共享数据库实例模型,共享数据库服务器,共享数据库实例,共享数据库表模型,这三种方式各有优缺点.

 

基于这三种构建多租户系统的模型,我们可以在分布式微服务软件架构的基础上再去构建多租户应用系统,微服务软件架构是当下比较流行的分布式软件架构,其提供的全家桶式的,一站式分布式问题解决方案也获得了众多企业的认可,最新的SpringCloud Alibaba 优化了服务的治理,流量监控,分布式事物等处理等功能,使得分布式系统的开发变的更加的方便.因此建议使用SpringCloud Alibaba微服务架构做为多租户系统开发的基础框架.

 

在SpringCloud Alibaba的微服务架构选型基础上,进一步选择若依管理系统微服务版做为系统开发的基盘,该系统一直保持升级,是基于JAVA EE 分布式微服务架构的平台,基于经典技术组合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),已经内置了模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,可以提高系统开发效率,文档完善,代码易懂,且基盘持续维护更新保证了基础代码的安全,同时支持二次开发,保证了系统灵活的可定制性.

多租户系统技术优越性及架构选型

 

 



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  Tags: 架构  点击:(3)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  Tags: 架构  点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22  Tags: 架构  点击:(10)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: 架构  点击:(20)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  Tags: 架构  点击:(16)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 架构  点击:(23)  评论:(0)  加入收藏
背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系统在运行时出现的问题有排查的依据。日志存储和检索...【详细内容】
2021-11-23  Tags: 架构  点击:(20)  评论:(0)  加入收藏
zookeeper动物管理员,是一个很形象的名字,是一个分布式协调服务。它可以用来做分布式配置管理,服务注册及发现,分布式锁。在CAP中,属于CP型。下图是zookeeper的架构图: 图中,绿色的...【详细内容】
2021-11-16  Tags: 架构  点击:(38)  评论:(0)  加入收藏
如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性?很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯...【详细内容】
2021-11-08  Tags: 架构  点击:(35)  评论:(0)  加入收藏
架构是数据仓库建设的总体规划,从整体视角描述了解决方案的高层模型,描述了各个子系统的功能以及关系,描述了数据从源系统到决策系统的数据流程。业务需求回答了要做什么,架构就...【详细内容】
2021-11-03  Tags: 架构  点击:(34)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(3)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(8)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(20)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(16)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(16)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条