项目架构的发展历程


ps :

一 : 软件架构的发展

(一) 单体架构

1.概述

  • 所有的功能集成在一个项目工程中,打成一个war包部署到服务器,应用和数据库分开部署,当用户量变大后,我们需要通过部署应用集群数据库集群来提高系统的性能

2.优点 :

  • 项目架构简单,前期开发成本低,周期短,小项目首选

3.缺点

  1. 全部功能集成在一个工程中,导致这个工程越来越大,也就是说,此时对这个大型项目的开发,扩展及维护变得越来越不易,甚至是复杂
  2. 系统性能扩展只能通过扩展集群节点,成本高,有瓶颈
  3. 技术栈受限

(二) 垂直架构

1.概述

  • 随着时代的发展,人们注意到了单体架构的缺点,这时,人们以单体结构规模的项目为单位进行垂直划分,也就是说将一个大项目拆分成一个一个单体结构项目,从而减轻了单体系统的规模,使每个系统更小更轻量

2.优点

  • 项目架构简单,前期开发成本低,周期短,小型项目首选
  • 通过垂直分布,原来的单体项目不至于无限扩大
  • 不同的项目可以采用不用的技术

3.缺点

  1. 不同项目中会存在相同的模块,这是项目之间存在数据冗余,耦合性较大
  2. 项目之间的接口多为数据同步功能
  3. 全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
  4. 系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

(三) SOA架构

1.概述

  • 人们发现垂直架构仍然不够完美,不同项目之间可能会出现相同的模块,从而存在数据冗余,耦合度很高,这时出现了SOA的架构思想,提出了将重复公用的功能抽取为组件,以服务的方式为各系统提供服务
  • 系统与服务之间采用rpc,webservice等方式通信
  • ESB(Enterprise Service Bus)企业服务总线,作为项目与服务之间通信的桥梁

2.优点

  1. 将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。
  2. 可以针对不同服务的特点制定集群及优化方案。
  3. 采用ESB减少系统中的接口耦合。

3.缺点

  1. 系统与服务的界限模糊,不利于开发及维护。
  2. 虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。
  3. 抽取的服务的粒度过大,系统与服务之间耦合性高。

(四) 微服务架构

1.概述

  • 将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务,每个微服务运行在不同的进程中。
  • 微服务遵循单一指责原则,独立性强,高内聚
  • 微服务之间采用http等轻量协议传输,如RESTful

2.优点

  1. 服务拆分粒度更细,有利于资源重复利用,提高开发效率。
  2. 可以更加精准的制定每个服务的优化方案,提高系统可维护性。
  3. 微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。
  4. 适用于互联网时代,产品迭代周期更短。

3.缺点

  1. 微服务过多,服务治理成本高,不利于系统维护。
  2. 分布式系统开发的技术成本高(容错分布式事务等),对团队挑战大。

二 : 微服务技术栈

(一) 负载均衡,网关路由

  • 高可用,集群部署,校验,请求转发,服务集成

(二) 服务治理

  • 服务注册,发现

(三) 容错

  • 避免雪崩

(四) 监控跟踪

  • 监控资源利用,服务响应,容器资源利用情况

(五) 消息总栈

  • 消息队列,异步通信

(六) 配置管理

  • 统一配置管理

转载于:https://www.jianshu.com/p/1b6f6cfc82e4

猜你喜欢

转载自blog.csdn.net/weixin_34005042/article/details/91213794