【从零开始学微服务】03.软件架构的演化过程

2023-11-03 05:59

本文主要是介绍【从零开始学微服务】03.软件架构的演化过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家

目前大部分的企业系统和互联网应用都是采用Web的形式提供服务能力,根据系统的组织方式和部署结构,我们通常把软件架构的演化过程分为以下几个阶段:

  • 单体架构
  • 垂直架构
  • SOA架构
  • 微服务架构

单体架构

单体架构,也被成为巨石架构,就像一块巨石一样,系统的所有代码、所有逻辑、所有模块都集中在一个项目里,并且会被部署在一个进程中。比如下面的电商系统:

虽然在电商系统被分为了表示层、业务逻辑层、数据访问层,但是它们还是在同一个项目里。比如在业务逻辑层中,商品管理、库存管理、订单管理等等模块的逻辑都是在一起的,难免就会有代码互相耦合的地方,你中有我,我中有你。这就造成了代码维护的困难,比如本来是在修改商品管理的代码,一不注意就影响了库存管理的逻辑,引发了bug,甚至是生产环境的事故。

优点

  • 结构简单,所有模块都集中在一个项目中。
  • 部署简单,只需要部署一个进程就可以。

缺点

  • 版本迭代慢,模块耦合度高,牵一发动全身。
  • 代码维护困难,所有模块在一个项目里面,被他人误改的风险很高。

垂直架构

随着业务的发展,单体架构的系统会越来越臃肿,代码的越来越难以维护,所以就把系统垂直地分成了多个项目的子系统,就形成了垂直架构,也被称为竖井式架构,或烟囱架构。比如下面的电商系统:

原来的电商系统别分为了订单系统、物流系统和用户系统三个独立的子系统,子系统之间相互独立,互相不会有影响,新业务的迭代
更加高效。不过,因为系统之间无法互相调用,有些模块功能在不同系统中都有实现。比如,商品管理模块在订单系统和物流系统都有重复的实现。

优点

  • 系统相互独立,互相不影响。
  • 新业务迭代更加高效。

缺点

  • 各个系统之间存在模块功能重复开发的情况
  • 各个系统之间相互独立,无法进行相互调用,形成了“信息孤岛”。

SOA架构

SOA全称是Service Oriented Architecture,即面向服务的架构,当垂直应用越来越多,重复的业务代码就会越来越多。此时可以将重复的代码抽取出来,形成统一的业务层作为独立的服务。

SOA是在企业内部IT系统重复构建以及效率低下的背景下提出的,最初想法是更好的利用企业内部的各个IT系统能力,解决信息孤岛,适配异构系统,整合业务功能等方面的问题。比如下面的电商系统:

订单系统、物流系统等功能模块都被定义成了独立的服务,所有的服务通过企业服务总线(ESB)来互相连接。企业服务总线(ESB)承担了传输协议转换、数据格式转换、服务路由、监控告警等功能。

优点

  • 解决了信息孤岛的问题,适配各种异构系统。
  • 提高了整个系统的可重用性和可维护性。

缺点

  • 服务的接口协议不固定,种类繁多,增加了复杂度。
  • 服务依赖,部署复杂。

微服务

微服务架构在某种角度上看也是面向服务的架构,微服务和SOA架构看起来非常相似,很多理念也很类似,但本质上有很大差异。

SOA架构通常都有一个庞大、复杂的ESB总线,各个单体应用之间通过ESB来交换数据,ESB也承担了很多业务逻辑转换和处理的工作;但在微服务概念里面,没有ESB,有的只是轻量级的消息通信机制。

微服务是一种通过更细力度服务组合来构建大规模复杂系统的的架构风格,这些服务围绕业务能力以及一系列设计标准而非特定的技术标准来组织。

总结

  • 单体架构,所有代码、所有逻辑、所有模块都集中在一个项目里。
  • 垂直架构,把系统垂直地分成了多个项目的子系统。
  • SOA架构,所有的服务通过企业服务总线(ESB)来互相连接。
  • 微服务架构,通过更细力度服务组合来构建大规模复杂系统。

最后,感谢你这么帅,还给我点赞


《从零开始学微服务》总目录

  • 【从零开始学微服务】01.微服务的过去与现在
  • 【从零开始学微服务】02.初识微服务
  • 【从零开始学微服务】03.软件架构的演化过程
  • 【从零开始学微服务】04.微服务架构的特点
  • 【从零开始学微服务】05.微服务的优势和不足
  • 【从零开始学微服务】06.微服务架构的建设思路
  • 【从零开始学微服务】07.微服务常用的开发框架
  • 【从零开始学微服务】08.引入微服务架构的时机
  • 【从零开始学微服务】09.为什么需要服务注册发现?

这篇关于【从零开始学微服务】03.软件架构的演化过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336087

相关文章

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte