SpringCloud之详解架构的演变历程

[复制链接]
发表于 2025-5-7 06:34:54 | 显示全部楼层 |阅读模式
众所周知Spring Cloud指的是为服务架构,那么他是怎么演变过来的呢,有兴趣的小伙伴可以详细看看哦~
1.单体应用架构

单体架构就是将所有的应用、数据库、文件都部署在一台呆板上,俗称All-In-One。简朴来讲实在就是我们熟知的SSH 架构或SSM架构,把所有的业务模块都放在一个应用中开发,这里面又衍生出三层架构,即表现层、业务逻辑层和数据库访问层,虽然在软件筹划中划分了经典的三层模子,但是对业务场景没有划分,一个典范的单体应用就 是将所有的业务场景的表现层、业务逻辑层和数据访问层放在一个工程项目中,最终颠末编译、打包,部署在一台服务器上。单体架构图如下:
 



  • 长处

    • 部署简朴
      由于是完整的布局体,可以直接部署在一个服务器上即可。
    • 技能单一
      项目不需要复杂的技能栈,往往一套熟悉的技能栈就可以完成开发,架构图简朴易懂。
    • 用人本钱低
      单个程序员可以完成业务接口到数据库的整个流程。

  • 缺点

    • 体系启动慢
      一个进程包罗了所有的业务逻辑,涉及到的启动模块过多,导致体系的启动、重启时间周期过长。
    • 体系错误隔离性差、模块之间耦合性高
      任何一个模块的错误均可能造成整个体系的宕机。
    • 安全
      用户可以直接访问到服务器
    • 扩展性差
      无法针对某一模块举行扩展和优化,前台页面模块承载压力过大,无法对前台页面模块举行单独扩展

问题当用户访问量过大时,服务器遭受压力是有限制的,只管可以增加服务器的设置,那也是有天花板的
 
2.垂直应用布局

随着公司业务的不断发展,由于单台服务器性能有限,我们无法对单个模块举行扩展,那么需要将各个模块举行拆分,分为治之,
如下图:将模块拆分成多个服务。
 



  • 长处:

    • 扩展性变强
      体系拆分之后,可以对某个模块举行扩展和优化,
    • 模块之间耦合性低落
      某一个模块的错误不会太过于直接影响其它模块

  • 缺点:

    • 调用问题
      体系之间无法直接相互调用
    • 冗余性
      随着项目功能的美满,代码会有部门重复

问题:各个体系之间相互会需要大量的冗余代码,怎样能把各个模块都需要的公共模块提取出来?
3.分布式布局

把各个模块都需要的公共模块提取出来,比如基本信息、销售管理、采购管理都需要用户服务,商品服务,订单服务。
 




  • 长处:

    • 复用性
      抽取公共代码模块为服务层,加强代码复用性

  • 缺点:

    • 复杂性
      各个模块之间调用关系复杂,手动维护贼困难

4.SOA架构

SOA(Service Oriented Architecture)面向服务的架构
提供一个消息总线,各个服务之间调用都是去寻找消息总线





    • 长处:

      • 调用明确
        利用服务治理中央资助我们维护复杂的调用关系

    • 缺点:

      • 依赖性
        服务有依赖性,可能会因为一个服务的问题,导致多个体系不可用(拆分的不够彻底)


5.微服务架构

也是拆分,但是夸大的是原子化拆分,微服务架构在某种程度上是SOA继续发展的下一步,更加夸大彻底拆分
每个服务遵循单一职责,自己负责自己的事情,不互相干涉,如果双十二,订单任务量大,可以在搞一个订单服务。
各个服务之间相互调用,利用注册中央,将各个服务的地址设置到服务设置中央里面。


  • 长处:

    • 原子化
      原子化拆分,独立打包,保证每个微服务有清楚任务划分,利于扩展

  • 缺点:


    • 分布式体系开发技能本钱高,比如分布式事务等
    • 服务件怎样调用?需要方案 和具体技能实现
    • 注册中央?具体技能实现


6.聊一聊Spring Boot与Spring Cloud的关系



  • Spring Boot是Spring的一套快速设置脚手架,可以基于Spring Boot快速开发单个微服务;
    Spring Cloud是一个基于Spring Boot实现的云应用开发工具。
  • Spring Boot专注于快速、方便集成的单个个体;
    Spring Cloud是关注全局的服务治理框架。
  • Spring Boot利用了约定大于设置的理念,很多集成方案已经帮你选择好了,能不设置就不设置;
    Spring Cloud很大的一部门是基于Spring Boot来实现。
  • Spring Boot可以脱离Spring Cloud独立利用开发项目;
    但是Spring Cloud离不开Spring Boot,属于依赖的关系。
  • Spring Cloud是解决微服务问题的一个解决方案,有很多个组件组成
以是为什么用:

SpringCloud。高并发,高可用

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表