软件产品架构中什么是单体架构、SOA架构、微服务架构?

1

软件产品架构是不断迭代演化的,从单体服务架构发展到现在的服务化、微服务的架构。

单体架构

单体架构就是所有的业务模块都是耦合在一个项目中,开发、部署都在一起;如果其中一个模块需要上线升级,那么所有模块都要一起启停;

在早期,单体架构的项目团队成员需要是“全栈”,因为前端、后端、数据库都是一波人负责,后来开始进行了逻辑分层,团队也分成了前端 UI 团队、后端和 DBA 团队,每个团队都有自己负责的职责。

2

面对微服务如火如荼的发展,很多人都在了解,学习希望能在自己的项目中帮得上忙,当你对微服务的庐山真面目有所了解后,接下来就是说服自己了,到底如何评估微服务,什么时候使用微服务,什么时间点最合适,需要哪些技术储备和资源投入等等,这些都是你需要面对和解决的。

本文从单体架构,微服务架构,微服务风险评估,微服务落地条件等几个方面探讨微服务的落地过程,希望对你有所启发。

  讲解微服务之前,我们先简单了解下单体架构。

一、单体架构

  

单体架构的优点:

3



单体架构

在传统IT行业的软件系统设计大多都是各种独立子系统的堆砌,这也就是所说的单体架构,其本身扩展性差,可靠性低,维护成本高。单体架构在初期系统规模比较小的情况下尚且能够较好的支撑,但是随着系统规模的扩大,它暴露出来的问题也越来越多,主要有以下几点:

  • 复杂性逐渐变高,问题修复和新功能开发难度和成本高,引入新问题的可能性变大。同时,任意模块的缺陷都可能会影响整个系统,可靠性低。
  • 随着人员流动,加之复杂性高,新的问题很难被发现和解决,久而久之,问题逐渐变多,变难、变大,技术债务逐渐上升。
  • 随着模块不断集成,部署速度逐渐变慢
  • 想进行整体的技术创新基本不可能,阻碍技术创新
  • 垂直和水平的可扩展性差

SOA架构

随后,引入了SOA服务化(面向服务的架构,它将应用程序的不同功能单元(服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来)。但是,由于 SOA 早期均使用了ESB总线模式,这种总线模式与某种技术栈是强绑定的,如,J2EE。这又使得很多企业的遗留系统很难对接,切换时间太长,对接成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。


SOA服务化思想下的微服务架构

微服务是在 SOA 上做的升华,微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP Rest API的方式(告别ESB服务总线),这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

简单讲,微服务不再强调传统SOA架构里面比较重的ESB服务总线,同时将SOA的思想延伸到单个业务系统内部实现真正的组件化。微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”。

4

单体架构:

单体机构是指在软件设计中使用经典的 3 层模型,即表示层、业务逻辑层和数据访问层。虽然在设计中划分了 3 层模型,但是对业务场景没有划分。一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。

优点

  1. 易于开发: 单体应用程序开发相对简单,容易理解,单个程序员可以完成业务接口到数据库的整个流程。
  2. 部署简单: 由于是完整的结构体,可以直接部署在一个服务器上即可。
  3. 技术单一: 项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。

缺点

  1. 开发成本高:代码重复率高,需求变更困难,无法满足新业务快速上线和敏捷交付。
  2. 系统稳定性差:任何一个模块的错误均可能造成整个系统的宕机;
  3. 扩展能力受限:系统的扩容只能只对这个应用进行扩容,不能做到对某个功能点进行扩容,关键性的代码改动一处多处会受影响。

SOA架构:

SOA架构即面向服务架构,是一种粗粒度、松耦合服务架构。基于SOA服务思想进行功能的抽取,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,以服务为中心各个系统之间依靠ESB企业服务总线进行调用,这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

优点:

5

一图了解什么是单体架构、SOA架构、微服务架构



分别从三个维度来展示:

1、软件过程维度

6

我在低代码开发平台领域中接触最多的就是微服务架构,微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上,而且部署方式也有多种,集群部署,双机部署,单机部署等等,天翎的myapps平台就是一个很好的例子,可以去了解一下这个架构,是三种架构里面使用得比较多也比较方便的软件产品架构

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章