码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【从零开始学微服务】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.为什么需要服务注册发现?
  • 相关阅读:
    字节架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
    猫眼 校园招聘_1面
    html在线商城购物网站制作——基于HTML+CSS+JavaScript鲜花礼品电商网站
    图技术赋能民生银行创新转型
    贪心算法与DFS:九度OJ1030
    【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
    leetcode最大间距(桶排序+Python)
    机器学习西瓜书+南瓜书吃瓜教程学习笔记第五章神经网络
    大话STL第三期——deque(双端动态数组)
    阿里云智能总裁张建锋:保护客户数据安全是第一原则
  • 原文地址:https://blog.csdn.net/heihaozi/article/details/127898901
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号