乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 微服务与 Spring Cloud 概述

    • 微服务与 Spring Cloud 概述
  • 第2章 服务注册与发现

    • Eureka 服务注册与发现
    • Consul 服务注册与发现
  • 第3章 客户端负载均衡

    • Ribbon 客户端负载均衡
    • Spring Cloud LoadBalancer
  • 第4章 声明式服务调用

    • Feign 声明式 HTTP 客户端
    • OpenFeign 高级特性与 Spring Cloud 集成
  • 第5章 服务容错与熔断

    • Resilience4j 服务容错与熔断
    • Sentinel 流量控制与熔断降级
  • 第6章 配置中心

    • Spring Cloud Config 配置中心
  • 第7章 API 网关

    • Spring Cloud Gateway 现代化 API 网关
    • Zuul 网关(已进入维护模式)
  • 第8章 消息驱动的微服务

    • Spring Cloud Stream 消息驱动的微服务
  • 第9章 分布式追踪与监控

    • Sleuth + Zipkin 分布式链路追踪
  • 第10章 最佳实践与面试考点

    • Spring Cloud 最佳实践与面试考点

微服务与 Spring Cloud 概述

导学

假设你是飞翔科技公司的新任架构师白歌,CTO 大翔刚刚交给你一个任务:将公司的单体电商系统拆分为微服务架构。摆在你面前的第一个问题是——微服务到底是什么?Spring Cloud 又能帮我们解决哪些问题?

在接下来的学习之前请确认你已经掌握:

  • Spring Boot 自动配置、起步依赖与 Actuator 基础
  • 能独立开发 RESTful 单体应用
  • 了解 CAP 定理、分布式系统的基本挑战

本教程直接进入微服务主题,不再重复上述内容。


从单体到微服务:一个真实的故事

飞翔科技的困境

2018 年,飞翔科技用 Spring Boot 构建了一个单体电商系统 feixiang-mall,包含以下模块:

feixiang-mall (单体应用,WAR 包部署到 Tomcat)
├── user-module        # 用户管理
├── product-module     # 商品管理
├── order-module       # 订单管理
├── inventory-module   # 库存管理
├── payment-module     # 支付管理
└── notification-module # 通知管理

随着业务增长,小崔(后端开发)和黄俪(前端开发)越来越痛苦:

痛点具体表现
部署耦合修改通知模块的一行文案需要重新部署整个应用,每次部署耗时 20 分钟
扩展困难大促期间只有订单和支付模块压力大,却不得不整体扩容 10 台机器
技术锁定团队想用 Go 重写高并发的库存模块,但整个应用绑死在 JVM 上
故障爆炸半径大通知模块的 while(true) 死循环导致整个商城 502

2019 年双十一当天,订单模块 OOM 导致全站崩溃 3 小时。CTO 大翔痛定思痛,决定启动微服务化改造。

微服务的定义

微服务架构是一种将单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,通过轻量级通信机制(通常是 HTTP/消息队列)互相协作。每个服务围绕业务能力构建,可以独立部署、独立扩展。

关键特征:

  • 组件化:每个微服务是一个独立可替换的组件
  • 围绕业务能力组织:跨职能团队负责端到端的业务能力
  • 去中心化治理:每个服务可以选择最合适的技术栈
  • 基础设施自动化:CI/CD、自动化测试、容器化部署

Spring Cloud 定位与版本体系

Spring Cloud 是什么

Spring Cloud 是基于 Spring Boot 的微服务基础设施框架集,它为分布式系统中的常见模式提供了开箱即用的解决方案:

微服务挑战Spring Cloud 解决方案
服务如何发现彼此?服务注册与发现(Eureka / Consul / Nacos)
消费者如何选择提供者实例?客户端负载均衡(Spring Cloud LoadBalancer / Ribbon)
如何优雅地发起服务调用?声明式服务调用(OpenFeign)
下游挂了怎么办?服务容错与熔断(Resilience4j / Sentinel)
配置如何统一管理?配置中心(Spring Cloud Config / Nacos Config)
外部流量如何进入?API 网关(Spring Cloud Gateway)
如何追踪跨服务请求?分布式追踪(Micrometer Tracing + Zipkin)
异步事件如何传递?消息驱动(Spring Cloud Stream)

Spring Cloud 与 Spring Boot 的关系

关键结论:Spring Cloud 不重复造轮子,而是在 Spring Boot 之上集成 Netflix OSS、阿里巴巴、HashiCorp 等生态的优秀组件,通过自动配置和 Starter 机制让开发者快速集成。

版本命名与选择

Spring Cloud 历史版本以伦敦地铁站名为代号,从 2020.0.x 起改为年份+序号:

Release TrainSpring BootJava状态
2023.0.x (Leyton)3.2.x / 3.3.x17+推荐
2021.0.x (Jubilee)2.6.x / 2.7.x8+维护中
Hoxton2.2.x / 2.3.x8+已终止

本教程示例基于 Spring Cloud 2023.0.x + Spring Boot 3.2.x + Java 17。

Maven BOM 统一版本管理

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2023.0.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

引入 BOM 后,添加 Spring Cloud 组件时无需声明版本号,由 BOM 统一控制兼容性。


本教程学习路径

教程按微服务调用的真实链路组织,从底层到上层逐层展开:

每个章节包含:

  • 定位与问题场景:该组件解决的痛点
  • 核心原理 + Mermaid 交互图
  • 完整示例:飞翔科技公司真实场景
  • 易错场景 + 面试考点

小结

本章从飞翔科技单体架构的痛点出发,引出了微服务的核心价值——独立部署、独立扩展、技术异构。Spring Cloud 作为微服务基础设施框架集,通过服务注册、负载均衡、熔断、配置中心、网关等组件,解决了分布式系统中的共性挑战。下一章开始,我们进入第一个核心问题:微服务之间如何发现对方?