ps :
一 : 软件架构的发展
(一) 单体架构
1.概述
- 所有的功能集成在一个项目工程中,打成一个war包部署到服务器,应用和数据库分开部署,当用户量变大后,我们需要通过部署应用集群和数据库集群来提高系统的性能
2.优点 :
- 项目架构简单,前期开发成本低,周期短,小项目首选
3.缺点
- 全部功能集成在一个工程中,导致这个工程越来越大,也就是说,此时对这个大型项目的开发,扩展及维护变得越来越不易,甚至是复杂
- 系统性能扩展只能通过扩展集群节点,成本高,有瓶颈
- 技术栈受限
(二) 垂直架构
1.概述
- 随着时代的发展,人们注意到了单体架构的缺点,这时,人们以单体结构规模的项目为单位进行垂直划分,也就是说将一个大项目拆分成一个一个单体结构项目,从而减轻了单体系统的规模,使每个系统更小更轻量
2.优点
- 项目架构简单,前期开发成本低,周期短,小型项目首选
- 通过垂直分布,原来的单体项目不至于无限扩大
- 不同的项目可以采用不用的技术
3.缺点
- 不同项目中会存在相同的模块,这是项目之间存在数据冗余,耦合性较大
- 项目之间的接口多为数据同步功能
- 全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
- 系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
(三) SOA架构
1.概述
- 人们发现垂直架构仍然不够完美,不同项目之间可能会出现相同的模块,从而存在数据冗余,耦合度很高,这时出现了SOA的架构思想,提出了将重复公用的功能抽取为组件,以服务的方式为各系统提供服务
- 系统与服务之间采用rpc,webservice等方式通信
-
ESB(Enterprise Service Bus)
企业服务总线,作为项目与服务之间通信的桥梁
2.优点
- 将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。
- 可以针对不同服务的特点制定集群及优化方案。
- 采用
ESB
减少系统中的接口耦合。
3.缺点
- 系统与服务的界限模糊,不利于开发及维护。
- 虽然使用了
ESB
,但是服务的接口协议不固定,种类繁多,不利于系统维护。 - 抽取的服务的粒度过大,系统与服务之间耦合性高。
(四) 微服务架构
1.概述
- 将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务,每个微服务运行在不同的进程中。
- 微服务遵循单一指责原则,独立性强,高内聚。
- 微服务之间采用
http
等轻量协议传输,如RESTful
。
2.优点
- 服务拆分粒度更细,有利于资源重复利用,提高开发效率。
- 可以更加精准的制定每个服务的优化方案,提高系统可维护性。
- 微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。
- 适用于互联网时代,产品迭代周期更短。
3.缺点
- 微服务过多,服务治理成本高,不利于系统维护。
- 分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。
二 : 微服务技术栈
(一) 负载均衡,网关路由
- 高可用,集群部署,校验,请求转发,服务集成
(二) 服务治理
- 服务注册,发现
(三) 容错
- 避免雪崩
(四) 监控跟踪
- 监控资源利用,服务响应,容器资源利用情况
(五) 消息总栈
- 消息队列,异步通信
(六) 配置管理
- 统一配置管理
转载于:https://www.jianshu.com/p/1b6f6cfc82e4