当前位置: 首页 > backend >正文

【Spring Cloud Alibaba】前置知识(一)

【Spring Cloud Alibaba】前置知识

  • 1. 微服务介绍
    • 1.1 系统架构的演变
      • 1.1.1 单体应用架构
      • 1.1.2 垂直应用架构
      • 1.1.3 分布式架构
        • 1.1.3.1 SOA架构
      • 1.1.4 微服务架构
  • 2. SpringCloud Alibaba
    • 2.1 主要功能:
    • 2.2 主要组件
    • 2.3 版本说明
    • 2.4 Spring Cloud Alibaba与Netflix等对比

1. 微服务介绍

1.1 系统架构的演变

随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早期到现在,系统架构大致经过下面几个过程:单体应用架构->垂直应用架构->分布式架构->SOA架构->微服务架构,当然还有现在的Service Mesh(服务网格化)。

1.1.1 单体应用架构

在互联网发展初期,网站应用的流量普遍较小,通常采用单一应用架构。这种架构将全部功能模块集中部署,能有效降低开发、部署和维护成本。

以电商系统为例,该系统可能包含用户管理、商品管理、订单管理和物流等模块。在传统架构下,这些功能会被整合为单个Web项目,并统一部署到Tomcat服务器上运行。

优点:

  • 项目结构简单,小型项目,开发成本低
  • 项目部署在一个节点上,维护方便

缺点:

  • 全部功能集成在一个工程上,对大型项目来讲不易开发和维护
  • 项目模块之间紧密耦合,单点容错率低
  • 无法针对不同模块进行针对性优化和水平扩展

1.1.2 垂直应用架构

在这里插入图片描述
概念

  • 按照业务线/功能模块,把系统拆分为多个 独立应用。

  • 例如:

    • 用户系统(user service)
    • 订单系统(order service)
    • 支付系统(payment service)
  • 各自有 独立的数据库和应用,之间通过接口交互。

✅ 优点:

  • 降低单个应用的复杂度,团队可以并行开发。
  • 部署隔离:更新某个模块不会影响整个系统。
  • 可以选择不同技术栈(支付模块用 Java,推荐模块用 Python)。
  • 对外可以按业务线提供不同入口(PC 端、App 端、管理后台)。

❌ 缺点:

  • 系统之间接口调用增加,接口维护复杂。
  • 数据不再集中,可能存在 数据冗余 & 一致性问题。
  • 认证、权限、日志、监控等需要在各应用间统一。

1.1.3 分布式架构

概念

  • 在垂直应用的基础上,进一步把业务系统拆解成更小的 服务单元(Service)。
  • 通过 分布式技术(RPC、消息队列、负载均衡、服务注册发现等)来管理和调用。
  • 演进方向:SOA → 微服务(Microservices) → 云原生(Kubernetes、Service Mesh)。

✅ 优点:

  • 高扩展性:可以对某个服务做水平扩容(例如秒杀时只扩容订单服务)。
  • 高可用:通过服务治理、容错机制(熔断、限流、降级)保证稳定性。
  • 灵活性:服务独立部署、迭代,团队可用不同语言实现。
  • 可支撑大规模并发与复杂业务场景。

❌ 缺点:

  • 架构复杂度大大提升。
  • 服务间调用涉及 网络通信开销、延迟、容错。
  • 分布式事务、一致性问题难处理。
  • 需要配套的 服务治理体系(如注册中心、配置中心、监控报警、链路追踪)。
1.1.3.1 SOA架构

SOA(Service-Oriented Architecture,面向服务的架构)其实就是 分布式架构早期的一种实现模式,它是从“垂直应用”往“分布式架构”过渡的重要阶段。

SOA 是一种架构思想,它把系统功能抽象为 服务(Service),不同服务之间通过 统一的服务接口协议(通常是基于网络的调用,如WebService、SOAP、ESB)进行通信和组合。

✅ 优点

  1. 解耦:通过服务接口屏蔽内部实现,不同系统只关心服务定义。

  2. 复用:一个服务可以被多个业务系统调用(例如统一的支付服务)。

  3. 灵活组合:多个服务可以通过编排组合成新的业务流程。

  4. 跨平台:不同服务可以用不同技术栈实现(Java、.NET、Python 都行)。

❌ 缺点

  1. 实现复杂:需要引入 ESB(Enterprise Service Bus)做消息路由、转换、协议适配。

  2. 性能问题:早期 SOA 大多基于 SOAP/XML,通信开销大,性能较低。

  3. 中心化风险:ESB 过度集中,容易成为瓶颈或单点故障。

  4. 运维成本高:需要大量治理(安全、事务、监控)。


SOA 和微服务(Microservices)的区别

对比维度SOA微服务
通信方式传统使用 ESB + SOAP/XML轻量化,RESTful/HTTP、gRPC、消息队列
服务粒度相对粗,服务更大相对细,每个服务只做一件事
服务编排依赖 ESB,中心化编排去中心化,服务自治,通常使用 API Gateway + 注册中心
技术复杂度高,需要重量级中间件相对轻,依赖云原生生态(K8s、Spring Cloud、Dubbo)
弹性扩展不灵活,容易受限于 ESB灵活,支持容器化、自动扩缩容

👉 可以说 微服务是对 SOA 的轻量化和进化,解决了 SOA 中心化、臃肿的问题。

举个例子

假设一个电商系统:

  • SOA 模式下

    • 有 支付服务、订单服务、库存服务
    • 所有应用通过 ESB 调用这些服务
    • ESB 会处理协议转换、消息路由、服务编排
  • 微服务模式下

    • 每个服务独立运行
    • 通过 注册中心(Eureka/Nacos) + API Gateway 直接通信
    • 不需要依赖一个中心化的 ESB

1.1.4 微服务架构

微服务架构是一种 架构风格,它将复杂应用拆分成一组 小而独立的服务。
每个服务围绕 单一业务能力 构建(如用户服务、订单服务、支付服务),独立开发、部署和运维,通过 轻量级通信机制(HTTP REST、gRPC、消息队列等) 进行交互。

微服务架构的核心特征
1.服务小而专一

  • 每个服务只负责一个明确的业务功能。
  • 例如:订单服务只负责订单的创建、查询,不会处理用户登录。

2.独立部署

  • 服务是独立的进程,可以单独部署,不影响其他服务。
  • 便于快速迭代、灰度发布。

3.去中心化治理

  • 没有像 SOA 的 ESB 单点瓶颈。

  • 服务之间直接通过注册中心(Eureka/Nacos/Consul)发现和通信。

4.轻量通信

  • 常用 RESTful API、gRPC、消息队列。
  • 弃用了 SOAP/XML 这种重量级通信协议。

5.分布式特性

  • 支持服务弹性伸缩(秒杀时扩容订单服务)。
  • 容错机制:熔断、限流、降级(Hystrix、Sentinel)。
  • 配置中心、日志监控、链路追踪等支撑系统。

优缺点
✅ 优点

  1. 灵活扩展:不同服务可独立水平扩容。

  2. 高可用:某个服务挂了,不会拖垮整个系统。

  3. 技术多样性:每个服务可用最适合的技术栈(Java、Go、Python…)。

  4. 快速迭代:不同团队负责不同服务,能并行开发。

❌ 缺点

  1. 架构复杂度高:涉及服务治理、分布式事务、网络调用问题。

  2. 运维成本高:服务数量多,部署、监控、调试更复杂。

  3. 数据一致性难:一个业务可能涉及多个服务,需要分布式事务或最终一致性。

  4. 性能开销:服务之间是远程调用(RPC/HTTP),比单体的本地调用慢。


微服务 vs 单体应用 vs SOA

特点单体应用SOA微服务
架构一个整体应用服务化,但依赖 ESB小服务 + 去中心化治理
部署整体部署部署多个服务,但耦合 ESB每个服务独立部署
通信方法调用(本地)SOAP/XML,依赖 ESBREST/gRPC/消息队列
扩展性不灵活一定灵活,但中心化瓶颈高度灵活,天然支持云原生
技术栈单一多样,但受限于 ESB完全多样,自由度更高

2. SpringCloud Alibaba

官网:
https://sca.aliyun.com/
https://github.com/alibaba/spring-cloud-alibaba


2.1 主要功能:

  • 服务限流降级:默认支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
  • 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成对应 Spring Cloud 版本所支持的负载均衡组件的适配。
  • 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
  • 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
  • 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
  • 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

2.2 主要组件

  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  • Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

2.3 版本说明

官方说明 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

2.4 Spring Cloud Alibaba与Netflix等对比

在这里插入图片描述

http://www.xdnf.cn/news/19113.html

相关文章:

  • LeetCode 01背包 494. 目标和
  • 2025_WSL2_Ubuntu20.04_C++20_concept 环境配置
  • AntSK知识库多格式导入技术深度解析:从文档到智能,一站式知识管理的技术奇迹
  • zyplayer-doc 开源知识库:部署与使用指南
  • 千年智造,一触即发 耐达讯自动化Profibus集线器如何让HMI触摸屏在工业4.0中“点石成金“?
  • 新人桌球笔记
  • Web前端入门:JavaScript 一个简单的 IndexedDB 数据库入门示例
  • 【开题答辩全过程】以 基于Vue Spring Boot的教师资格证考试助力系统设计与实现为例,包含答辩的问题和答案
  • QML Chart组件之坐标轴共有属性
  • AI人工智能系统搭建实战指南:常见陷阱与解决方案
  • 从零开始学习单片机17
  • PCIe 6.0的速度奥秘:数学视角下的编码革命与信号完整性突破
  • htb academy笔记-module-Penetration Testing Process(一)
  • Marin说PCB之POC电路layout设计仿真案例---11
  • 掌握 Linux 文件权限:chown 命令深度解析与实践
  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • LeetCode100-54螺旋矩阵
  • Edge浏览器新标签页加载慢
  • 零售行业全渠道应如何与零售后端系统集成?
  • Python 实战:内网渗透中的信息收集自动化脚本(5)
  • Rust项目的运行机制与实践
  • POE供电是什么?
  • 使用leapp升级Linux
  • 深入理解Go 与 PHP 在参数传递上的核心区别
  • 领域知识如何注入LLM-检索增强生成
  • Java 学习笔记(基础篇11)
  • ExcelJS实现导入转换HTML展示(附源码可直接使用)
  • JavaScript 基础核心知识点总结:从使用方式到核心语法
  • RAG 系统核心:深入理解向量相似度匹配与文本向量化
  • Springboot高校迎新系统2cbcd(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。