【从零开始学微服务】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

相关文章

【区块链 + 人才服务】可信教育区块链治理系统 | 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

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec