分布式与微服务系列软件架构的演化过程
Posted 一宿君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式与微服务系列软件架构的演化过程相关的知识,希望对你有一定的参考价值。
一、软件架构的演化过程
1.1、单体架构
架构说明:
全部功能集中在一个项目内(All in one),
按照层次进行水平拆分
。
架构特点:
1、所有的功能集成在一个项目工程中。
2、所有的功能打一个war包部署到服务器。
3、应用与数据库分开部署。
4、通过部署应用集群和数据库集群来提高系统的性能。
架构优点:
架构简单,前期开发成本低、开发周期短,适合小型项目。
架构缺点:
1、全部功能集中在一个工程中,对于大型项目不易开发、扩展和维护。
2、技术栈受限,只能使用一种语言开发。
3、系统性能扩展通过扩展集群节点,成本高。
1.2、垂直架构
架构说明:
按照业务进行切割,形成小的单体项目,实际上是
按照不同的功能模块进行切分
,每个功能模块都是一个项目。
架构特点:
1、以单体结构规模的项目为单位进行垂直拆分,就是将一个大项目拆分为一个一个的单体结构项目。
2、项目与项目之间存在数据冗余、耦合性较大,比如上图中左下三个功能都存在客户信息。
3、项目之间的接口多为数据同步功能,如:数据库之间通过网络接口进行数据库同步。
架构优点:
1、技术栈可扩展(不同的系统可以用不同的编程语言编写)。
2、项目架构简单,前期开发成本低,周期短,小型项目首选。
3、通过垂直拆分,原来的单体项目不至于无线扩大。
架构缺点:
1、全部功能集中在一个项目中,不利于开发、维护、扩展。
2、系统扩张只能通过集群的方式。
3、项目之间存在功能冗余、数据冗余、耦合性强。
1.3、SOA架构
SOA全称为Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。
站在功能的角度,把业务逻辑抽象成可复用的服务,通过服务的编排实现业务的快速增生。
目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速增生。
架构说明:
将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。
架构特点:
1、基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式各系统提供服务。
2、各项目(系统)与服务之间采用WebService,RPC等方式进行通信。
3、ESB企业服务总线作为项目与服务之间通信的桥梁。
架构优点:
1、重复功能或模块抽取为服务,提高开发效率。
2、可重用性高。
3、可维护性高。
架构缺点:
1、各系统之间业务不同,系统与服务的界限模糊,很难确认功能或模块是否重复,不利于开发和维护。
2、抽取服务的粒度大。
3、系统和服务之间耦合度较高。
4、虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。
1.4、微服务架构
架构说明:
1、将系统服务层完全独立出来,抽取为一个一个的服务。
2、抽取的力度更细,遵循单一原则。
3、采用轻量级框架restful协议传输。
架构优点:
1、服务拆分更细,有利于资源重复利用,有利于提高开发效率。
2、可以更加精准的针对不同服务制定对应的优化方案、
3、适用于互联网时代,产品迭代周期更短。
4、微服务架构采用去中心化思想,服务之间采用restful等轻量协议通信,相比ESB更轻量。
架构缺点:
1、粒度太细导致服务太多,维护成本高。
2、分布式开发的成本高(容错、分布式事务等),对团队的挑战性大。
以上是关于分布式与微服务系列软件架构的演化过程的主要内容,如果未能解决你的问题,请参考以下文章
分布式与微服务系列SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者消费者)