这是《Spring Boot 与 Spring Cloud 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 掌握 Spring Boot 与 Spring Cloud,不只是会写注解和搭服务,而是能设计稳定系统、读懂框架边界、治理研发流程,并在故障中沉淀体系化经验。
35.1 能力模型
| 层级 | 能力 |
|---|---|
| 入门 | 完成 Web、配置、数据库、测试 |
| 熟练 | 理解 IoC、AOP、事务、自动装配 |
| 进阶 | 设计缓存、消息、异步和分布式一致性 |
| 高阶 | 治理微服务、安全、观测、发布和容量 |
| 专家 | 读源码、做架构取舍、建设团队规范 |
每个层级都要有可验证产出,而不是只看工作年限。
35.2 学习路线
第一阶段:工程能力
目标:
- 独立创建 Spring Boot 服务;
- 规范 REST API;
- 使用数据库事务;
- 写单元和集成测试;
- 接入日志和指标。
产出:一个可部署的小型业务系统。
第二阶段:框架原理
目标:
- 理解 Bean 生命周期;
- 解释 AOP 和事务代理;
- 掌握配置加载优先级;
- 阅读自动装配源码;
- 编写 Starter。
产出:一个带完整测试的 Starter。
第三阶段:分布式能力
目标:
- 服务拆分;
- 注册发现和配置治理;
- 网关与灰度;
- 熔断限流降级;
- Outbox、Saga、幂等;
- 事件驱动架构。
产出:一个订单交易微服务项目。
第四阶段:生产能力
目标:
- 建立可观测性;
- 做容量和性能压测;
- 无损发布;
- 安全治理;
- 故障预案和演练;
- 多环境和多机房。
产出:一套上线运行手册。
35.3 推荐实践
- 构造器注入;
- 配置对象化;
- Controller 薄;
- 外部调用必有超时;
- 写操作幂等;
- 消息消费有死信;
- 日志指标 trace 三件套;
- 数据库脚本版本化;
- 发布可回滚;
- 测试分层稳定。
这些规则比引入任何新框架更能降低系统复杂度。
35.4 架构判断
常见取舍:
| 问题 | 判断 |
|---|---|
| 单体还是微服务 | 业务规模、团队和边界是否需要 |
| 同步还是异步 | 是否需要实时结果和强反馈 |
| 强一致还是最终一致 | 业务风险和补偿成本 |
| 注册中心还是 K8s Service | 部署形态和治理能力 |
| Spring Cloud 还是 Mesh | 能力重叠与团队掌控度 |
| JPA 还是 MyBatis | 模型复杂度和 SQL 控制度 |
架构没有标准答案,只有约束下的合理选择。
35.5 深入源码
建议主线:
SpringApplication.run
refresh
Bean lifecycle
BeanPostProcessor
AOP proxy
Transaction interceptor
DispatcherServlet
AutoConfiguration
Actuator metrics
源码学习输出:
- 时序图;
- 关键接口;
- 扩展点;
- 版本差异;
- 最小实验;
- 应用到项目的改进。
不要为了背源码而读源码。
35.6 关注演进
| 方向 | 关注点 |
|---|---|
| Spring Boot 3.x | Jakarta、Native、可观测性 |
| Spring Framework 6 | RestClient、HTTP Interface |
| 虚拟线程 | 阻塞 IO 模型变化 |
| GraalVM Native Image | 启动速度、反射配置 |
| Project CRaC | 快照启动 |
| Service Mesh | 平台流量治理 |
| OpenTelemetry | 统一观测协议 |
学习新特性时问:
- 解决什么问题;
- 引入什么限制;
- 与当前版本兼容性;
- 迁移成本;
- 有没有可验证收益。
35.7 团队治理
工程规范:
1. 统一依赖 BOM
2. 统一异常和日志
3. 统一测试模板
4. 统一部署模板
5. 统一安全策略
6. 统一 API 契约
7. 统一中间件接入
8. 统一发布回滚
平台能力:
- 服务目录;
- owner 信息;
- 拓扑图;
- 指标看板;
- 日志查询;
- trace 查询;
- 变更审计;
- 发布编排。
35.8 故障复盘库
每类故障沉淀:
现象
影响
时间线
证据
根因
修复
预防
演练方案
常见主题:
- 事务失效;
- 连接池耗尽;
- 缓存击穿;
- 消息重复;
- 注册中心抖动;
- 无损发布失败;
- CPU throttling;
- OOMKilled;
- 依赖版本冲突;
- 配置漂移。
35.9 12 周提升计划
| 阶段 | 内容 |
|---|---|
| 1-2 周 | IoC、生命周期、注入、配置 |
| 3 周 | AOP、事务、数据访问 |
| 4-5 周 | Web、测试、Starter |
| 6-7 周 | 微服务、网关、注册配置 |
| 8 周 | 熔断限流、分布式事务、事件 |
| 9-10 周 | 观测、性能、故障排查 |
| 11 周 | 容器、发布、优雅上下线 |
| 12 周 | 项目复盘和内部分享 |
每周至少完成一个可运行实验。
35.10 最终建议
- 先写清楚业务边界,再引入技术栈;
- 先有可观测性,再谈优化;
- 先做幂等和补偿,再谈异步;
- 先压测,再扩容;
- 先回滚方案,再发布;
- 先版本兼容,再数据库变更;
- 先统一规范,再推广平台;
- 先保留证据,再重启。
Spring 生态很大,但主线一直没变:控制反转管理对象,AOP 处理横切,Boot 简化装配,Cloud 治理分布式,生产体系保证系统真的稳定运行。
本章小结
大师之路是工程能力、框架原理、分布式设计、生产治理和团队规范的持续叠加。通过可运行项目、源码实验、故障复盘和平台化治理,把知识变成稳定系统能力。技术选型始终回到业务目标、团队能力和长期维护成本。
思考题
- 你当前在能力模型中的哪一层?
- 哪个生产故障可以整理成团队案例?
- 你的团队最缺少哪条工程规范?
- Spring Cloud 和 Service Mesh 如何取舍?
- 下一个 12 周学习计划是什么?