架构体系变化

架构体系迭代变化

1. 单体架构

架构体系变化
1.1 特点
(1)所有的功能集成在一个项目工程中。
(2)所有的功能打一个war包部署到服务器。
(3)应用与数据库分开部署。
(4)通过部署应用集群和数据库集群来提高系统的性能。

1.2 优点
(1)项目架构简单,前期开发成本低,周期短,小型项目的首选。

1.3 缺点
(1)全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
(2)系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
(3)技术栈受限。

2. 垂直架构

架构体系变化
2.1 特点
(1)以单体结构规模的项目为单位进行垂直划分项目即将一个大项目拆分成一个一个单体结构项目。
(2)项目与项目之间的存在数据冗余,耦合性较大,比如上图中三个项目都存在客户信息。
(3)项目之间的接口多为数据同步功能,如:数据库之间的数据库,通过网络接口进行数据库同步。

2.2 优点
(1)项目架构简单,前期开发成本低,周期短,小型项目的首选。
(2)通过垂直拆分,原来的单体项目不至于无限扩大。
(3)不同的项目可采用不同的技术。

2.3 缺点
(1)全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
(2)系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

3.SOA架构

3.1特点
(1)基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各各系统提供服务。
(2)各个项目(系统)与服务之间采用webservice、rpc等方式进行通信。
(3)ESB企业服务总线作为项目与服务之间通信的桥梁。

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

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

4. 微服务架构

为适应企业的业务发展,提高软件研发的生产力,降低软件研发的成本,软件架构也作了升级和优化,将一个独立的系统拆分成若干小的服务,每个小服务运行在不同的进程中,服务与服务之间采用http 轻量协议(比如流行的RESTful)传输数据,每个服务所拥有的功能具有独立性强、高内聚的特点,这样的设计就实现了单个服务的高内聚,服务与服务之间的低耦合效果,这一个一个的小服务就是微服务,基于这种方法设计的系统架构即微服务架构。
架构体系变化
4.1 特点
(1)将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。
(2)微服务遵循单一原则。
(3)微服务之间采用RESTful等轻量协议传输。

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

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

5. SOA架构和微服务架构的区别

首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。

(1)SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。

(2)微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想