应用结构1 )单体结构什么是单体结构单体结构的优缺点2 )单体簇结构3 )微服务器结构微服务器结构的特点微服务器结构的优缺点
应用架构的演变
由于互联网的发展,并发性急剧增加,我们的APP应用体系结构也进行了升级。 这里主要介绍几个主要的体系结构类型
1 .单体体系结构什么是单体体系结构? 通常,我们的单个体系结构是在一个APP或一个服务器(tomcat )中开发和部署的。 通常有三个组成部分:持久层、业务层和表现层。 该体系结构模型业务少且方便,但同时性高会增加负载
体系结构的优缺点当然单体应用在项目初期也有很多优势,主要有如下表现
易于开发:架构简单,技术成本低
易于测试:所有功能都在一个项目中,易于测试
易于部署:只需一个Tomcat即可部署,简单方便
随着项目规模日益变大,我们可以采用集群的手段来出来解决高并发,但包含了所有组成部分的单体应用终归是有许多不足,主要缺点如下
代码臃肿,不便于开发和维护(代码可读性差) ) ) ) )。
代码编译系统启动缓慢
系统的扩展性变差(牵一发而动全身) )。
无法对某个业务进行扩展(集群)
相对于大数据量,高并发量的处理并不占优势
技术选择单一
模块/业务耦合度高
2 .单体群集体系结构为了避免我们的APP工作出现单点故障(一台服务器挂起),我们在另一台服务器上为该APP配置群集:执行相同的任务。 如图所示
但是,在该模式中,由于存在客户端不知道要访问哪个APP应用问题,所以如图所示,出现了能够分发请求的功能组件:负载平衡器,将客户端的请求比较平均地分发到多个APP应用节点
负载均衡也有自己内置的几种算法(Nginx)
轮询:是向各后台服务器依次分配请求默认负荷分散方式
“权重”(weight )根据权重值将请求分配给后台服务器,权重值越大,分配的百分比越高
IP _ hash :根据IP地址执行hash操作会将同一IP的请求分配给同一台计算机
url_hash :根据请求的url的hash值将请求分类到不同的计算机。
fair :根据服务器响应时间分发请求,时间越短分发的请求越多
3 .微服务体系结构微服务体系结构基于分布式体系结构。 所谓微服务,是将单个APP细分为多个小服务项目,各个服务独立运行,各个服务只需集中在一个业务上即可,而且各个服务可以有自己的数据库(库),服务之间相互协调
微服务体系结构的特点是由多个服务组成的完整系统
每个服务都是独立的,有自己的流程
在服务之间使用HTTP协议进行通信
不同的服务可以使用不同的编程语言
不同服务的数据库可以有多种选择
微服务是一个分布式系统
微服务体系结构的优缺点在项目规模较大的时候,相对于单体应用来说,微服务具备很多优势,主要体现在如下方面:
单个服务业务简单,代码简单,开发维护方便
服务器之间没有耦合,服务器之间的升级维护互不影响
轻量级的HTTP通信机制允许不同的服务采用不同的编程语言
微服务有很强的扩展能力,业务量大的服务可以再次拆分或集群部署,去除服务也很方便
提高系统负载和容错能力(群集)
对开发者来说,通常只需要关注一个服务,新员工也很快
微服务架构针对当前流行的敏捷开发的支持进行了优化
凡是都有双面性,微服务展示出了他都优势之处,同时也有其不足的地方,主要体现如下方面:
分布式事务:服务通信机制增加了事务的复杂性,架构师必须选择合适的分布式方案(CAP理论) )。
部署麻烦:微服务多,部署麻烦,需要利用容器技术和自动部署工具,增加了开发人员的学习成本。
技术成本高:微服务架构本身很复杂,技术成本高,开发者需要花很多时间学习相关技术。
服务通信造成的性能损失:微服务体系结构必须考虑服务通信延迟造成的服务呼叫性能损失问题,开发者需要选择合适的通信方式来解决这一问题。