跳到正文

Spring 微服务学习路线 ​

适用版本:Spring Boot 3.2.x + Spring Cloud 2023.0.x(Leyton)+ Spring Cloud Alibaba 2023.0.x;Nacos 2.x、Sentinel 1.8.x、Seata 2.x。版本对应以官方 Release Notes 为准。

这套内容解决什么问题 ​

单体拆成多个服务后,会依次遇到:实例地址会变、配置要热更新、入口要统一鉴权与限流、调用方要选实例并设超时、下游故障要止损、跨库写入要一致。本目录按这个顺序组织,不按组件清单组织。

前置条件 ​

  • Java 17、Maven 3.8+、Docker(跑 Nacos/Seata)。
  • 知道 Spring Boot 自动装配与 @ConfigurationProperties;不熟先读 03-Spring-Boot自动装配。
  • 知道 HTTP、DNS、数据库本地事务的基本概念。

环境自检:

bash
java -version && mvn -v && docker version

阅读顺序 ​

顺序篇目解决的问题读完的验收动作
101-微服务架构概述组件各自负责什么、请求怎么走画出自己项目的调用链
202-服务注册与发现实例地址变化后调用方怎么找到它起一个 Nacos,用 API 查到实例
303-配置中心改配置不重启改一条配置并在日志看到刷新
404-远程调用与负载均衡声明式调用、选实例、超时与重试两个服务通过 Feign 调通
505-服务网关统一入口、鉴权、路由通过 Gateway 访问到后端
606-熔断降级与限流下游慢时不拖死自己触发一次限流并看到 block
707-分布式事务跨库写入的一致性回滚一次并核对 undo_log
808-微服务治理与架构决策同步/异步、拆分、版本、选型写一份 ADR
909-Dubbo核心原理RPC 框架与 Spring Cloud 的边界起一个 Dubbo 服务并用 QoS 查看
1010-全链路灰度与智能路由灰度标识怎么跨网关、线程池和 MQ 传递,按标签选实例用 tag 调一次,确认整条链路都命中灰度实例
1111-优雅上下线与启动检查启动何时接流量、停机怎么排空在途请求滚动发布时观察错误率与在途请求归零
1212-全链路超时与自适应限流超时预算怎么传、阈值怎么自动收放构造下游变慢,确认上游按剩余预算快速失败
1313-企业级可观测性与故障定位日志、指标、追踪的分工与上下文透传用 traceId 找到一条慢请求的慢 span
1414-框架定制与配置治理starter、自动配置、多配置源与版本治理写一个最小 starter 并验证条件装配
1515-认证、加密与端点安全应用身份、签名、Actuator 保护与日志脱敏用签名请求调通一次,并验证重放被拒
1616-分布式IDSnowflake 位结构、workerId 分配与时钟回拨起两个实例,确认生成的 ID 不重复
1717-流量切换平台:多入口拉入拉出与灰度编排多类入口怎么按同一顺序摘流量、两阶段发布与状态机用一个应用走完「查状态 → 拉出 → 对账」

原「微服务生产踩坑」已把独有内容并入 03/04/05/06/07,不再单独成篇;原 10-Dubbo 顺延为 09,编号保持连续。生产执行项见 99-生产检查清单。

怎么读 ​

  • 先读 01,建立调用链;再按 02→06 顺序读,每篇都跑一遍「最小上手」。
  • 07 只在确实有跨库写入时读;能用本地事务或本地消息表解决的,不要引入 Seata。
  • 08 是决策篇,建议在项目立项或架构评审时读,不要求背结论。
  • 09 与 01–08 不是替代关系:Dubbo 解决服务间 RPC,Gateway/Nacos 仍可共存。
  • 10–17 是企业落地篇:服务数量多、要统一治理时再读;只有一两个服务时,先把 01–06 用稳。
  • 17 与 10 的分工:10 讲请求进来后按标签选实例,17 讲变更时怎么把某个实例或机房从所有入口摘干净。

学完的验收 ​

不看笔记,能完成下面三件事,说明这一组内容已经掌握:

  1. 画出「客户端 → 网关 → 服务 A → 服务 B」的调用链,并标出每一跳的超时、重试、熔断配置在哪。
  2. 起 Nacos 和两个服务,改一条配置确认不重启生效;再停一个实例,确认调用方在缓存 TTL 内切换。
  3. 对一个跨库写入场景,说明为什么不用 Seata,或说明用 AT 时 undo_log 与全局锁各自解决什么。

与相邻目录的关系 ​

  • Spring 内核(IoC、事务、自动装配、MVC)在 26_Spring,本目录不重复讲。
  • 网络底层与 Netty 在 23_Netty;Gateway 的 WebFlux 模型可对照阅读。
  • 服务拆分与限界上下文在 28_DDD。

版本基线 ​

组件本目录示例版本关键差异
Spring Boot3.2.x3.x 要求 Java 17;配置导入用 spring.config.import
Spring Cloud2023.0.xRibbon 已在 2020.0 移除,统一用 Spring Cloud LoadBalancer
Spring Cloud Alibaba2023.0.x与 Boot 3.2/Cloud 2023.0 对应
Nacos2.x客户端走 gRPC 长连接,需放通 9848/9849
Sentinel1.8.x熔断规则用慢调用比例/异常比例/异常数
Seata2.x配置前缀 seata.*,控制台 7091、TC 8091

具体小版本以官方兼容性矩阵为准;升级前先在测试环境验证注册、配置、序列化三件事。

把一门技术讲透到既懂也会用