分布式与微服务系列(一)、软件架构的演化过程

一、软件架构的演化过程

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、分布式开发的成本高(容错、分布式事务等),对团队的挑战性大。


在这里插入图片描述

一起学编程,让生活更随和!如果你觉得是个同道中人,欢迎关注博主公众号:【随和的皮蛋桑】。专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一宿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值