一、什么是 Spring Cloud
Spring Cloud 是一套基于 Spring Boot 的微服务一站式开发框架,整合了业界成熟的分布式组件,用于快速搭建、治理微服务架构。
- 底层依赖:Spring Boot(简化单体 / 微服务开发)
- 定位:分布式微服务解决方案,解决服务注册发现、配置、熔断、网关、链路追踪等分布式问题
- 核心特点:开箱即用、组件解耦、兼容 Spring 生态、轻量易上手
二、核心组件
1. 服务注册与发现
(1)Spring Cloud Alibaba Nacos(国内首选)
- 作用:注册中心 + 配置中心二合一
- 能力:服务注册、心跳检测、动态配置、权重负载均衡、灰度发布
(2)Eureka(Netflix,逐步淘汰)
- 早期注册中心,AP 架构,高可用集群,现已停止维护
2. 负载均衡
- Spring Cloud LoadBalancer(官方原生,替代 Ribbon) Spring Cloud 2020+ 默认负载均衡组件,支持轮询、随机、自定义权重策略
- Ribbon(旧版,已弃用):客户端负载均衡,集成在 Feign 中
3. 远程服务调用
Feign
- 声明式 HTTP 客户端,基于接口注解调用远程微服务,内置负载均衡
- 简化 RestTemplate 手写 HTTP 请求,开发体验类似本地接口调用
4. 熔断、降级、限流(容错)
(1)Sentinel(Spring Cloud Alibaba 推荐)
阿里开源流量控制组件,功能更强:限流、熔断降级、系统保护、热点限流、流量整形,可视化控制台
(2)Resilience4j(官方替代 Hystrix)
轻量熔断工具,函数式编程,Spring Cloud 官方主推
Hystrix(Netflix,停止维护):早期熔断组件,隔离线程池防止服务雪崩
5. 统一配置中心
- Nacos Config:配置 + 注册一体,支持动态刷新、环境隔离、配置灰度
- Spring Cloud Config(原生):Git 存储配置,需配合 Bus 实现配置广播刷新
6. API 网关(统一入口)
Spring Cloud Gateway(官方新一代,替代 Zuul)
- 基于 WebFlux 响应式编程,性能高
- 功能:路由转发、鉴权、限流、跨域、请求过滤、灰度路由
Zuul 1.x(Netflix,阻塞 IO,性能差,淘汰)
7. 分布式事务
Seata(Spring Cloud Alibaba):AT/TCC/SAGA/XA 四种分布式事务模式,解决跨库微服务数据一致性
8. 分布式消息
Spring Cloud Stream:统一消息编程模型,屏蔽 RabbitMQ/RocketMQ/Kafka 底层差异
- RocketMQ(Alibaba)、RabbitMQ 常用消息中间件
9. 分布式链路追踪
Sleuth + Zipkin:记录微服务调用链路、耗时、异常,排查分布式接口调用慢、报错问题
10. 分布式锁 / 分布式 ID
- Redisson:Redis 分布式锁
- Seata / Nacos 提供全局唯一 ID 生成
三、微服务标准架构流程(Nacos 版)
客户端请求 → Gateway网关 → 路由分发 → 微服务A
微服务A → Feign + LoadBalancer → 调用微服务B/C
所有服务注册到 Nacos,配置统一拉取自 Nacos
接口异常由 Sentinel 熔断降级
跨服务事务用 Seata 保证一致性
调用链路通过 Sleuth+Zipkin 追踪
四、Spring Cloud 版本规范
1. 版本命名规则(伦敦地铁站名,字母顺序升级)
旧版命名:Hoxton、Greenwich、Finchley 2020 后改为 年份代号:
- 2020.0.x (Ilford)
- 2021.0.x (Jubilee)
- 2022.0.x (Kilburn)
- 2023.0.x (Leyton)
2. Spring Cloud Alibaba 版本对应
必须严格匹配:Spring Cloud 版本、Spring Boot 版本、Nacos/Sentinel/Seata 版本,否则出现兼容性报错。
五、Spring Cloud Netflix vs Spring Cloud Alibaba
表格
| 维度 | Spring Cloud Netflix | Spring Cloud Alibaba |
|---|---|---|
| 维护状态 | 多数组件停止更新 | 持续迭代,阿里官方维护 |
| 注册 + 配置 | Eureka + Config(两套服务) | Nacos 二合一 |
| 容错组件 | Hystrix(停更) | Sentinel(功能丰富) |
| 分布式事务 | 无原生方案 | Seata 一站式分布式事务 |
| 消息中间件 | Rabbit/Kafka | RocketMQ 原生集成 |
| 国内企业 | 逐步淘汰 | 互联网 / 国企主流选型 |
六、最小 Demo 开发流程(极简步骤)
- 引入 Spring Boot 父工程
- 引入 Spring Cloud 依赖管理(BOM)统一管控版本
- 搭建 Nacos 服务端
- 生产者微服务:集成 Nacos Discovery 注册服务,写接口
- 消费者微服务:Feign 远程调用生产者,LoadBalancer 负载均衡
- 集成 Gateway 网关统一访问入口
- 集成 Sentinel 做熔断限流保护
七、核心优势与常见问题
优势
- 微服务基础设施齐全,不用重复造轮子
- 无缝兼容 Spring Boot,学习成本低
- 组件可插拔,按需引入
- 完善的分布式问题解决方案(雪崩、配置、事务、网关)
常见痛点
- 版本匹配复杂,版本不对应极易启动报错
- 分布式事务本身无完美方案,需业务适配 Seata AT/TCC
- 服务拆分不合理会导致调用链复杂、维护成本升高
- 生产环境需配套监控、日志、告警体系(Prometheus + Grafana)
八、扩展配套技术栈
- 监控:Spring Boot Admin、Prometheus + Grafana
- 日志:ELK、SkyWalking(全链路监控,替代 Zipkin)
- 容器部署:Docker + Kubernetes
- 权限安全:Spring Security OAuth2 / Sa-Token 微服务鉴权