Spring Cloud 知识体系概览
什么是 Spring Cloud?
Spring Cloud 是基于 Spring Boot 的微服务架构解决方案,提供了一整套工具来解决分布式系统中的常见问题:服务注册与发现、负载均衡、熔断降级、配置中心、链路追踪、API 网关等。
当系统从单体架构拆分为微服务后,会产生一系列新的挑战——服务之间如何找到彼此?某个服务挂了怎么办?配置分散在几十个服务中怎么管理?Spring Cloud 就是用来解决这些问题的"工具箱"。
核心组件
注册中心——服务的"通讯录"
在微服务架构中,服务实例可能有几十上百个,且动态伸缩。注册中心让每个服务启动时自动注册自己的地址,调用方从注册中心查询目标服务的地址列表。
| 注册中心 | 一致性模型 | 说明 |
|---|---|---|
| Nacos | AP/CP 可切换 | 阿里开源,同时支持注册中心和配置中心 |
| Eureka | AP | Netflix 开源,Spring Cloud 最早集成的注册中心(已维护模式) |
| Consul | CP | HashiCorp 开源,支持健康检查和 KV 存储 |
| ZooKeeper | CP | Apache 项目,Dubbo 生态常用 |
API 网关——所有请求的"入口"
API 网关是客户端和微服务之间的中间层,统一处理路由转发、认证鉴权、限流、日志等横切关注点。
Spring Cloud Gateway 是目前 Spring Cloud 生态的官方网关(替代了已维护模式的 Zuul),基于 WebFlux 的响应式编程模型,支持高并发。
熔断与降级——"保险丝"机制
当下游服务不可用时,如果上游不断重试,会导致雪崩效应(一个服务故障导致整条调用链崩溃)。熔断器(Circuit Breaker) 在检测到故障率达到阈值后"断开电路",快速失败并返回兜底结果。
| 组件 | 来源 | 说明 |
|---|---|---|
| Sentinel | 阿里巴巴 | 流量控制 + 熔断降级,国内主流 |
| Resilience4j | 开源 | 轻量级,Spring Cloud 官方推荐 |
| Hystrix | Netflix | 已进入维护模式 |
配置中心——集中管理所有配置
微服务拆分后,配置分散在几十个服务的 application.yml 中,修改一个数据库地址可能要改十几个服务重新部署。配置中心将配置集中管理,支持动态刷新(不重启就生效)。
Nacos Config 和 Apollo 是国内最主流的配置中心。
远程调用——服务间的"对话"
微服务之间通过 HTTP 或 RPC 通信。OpenFeign 提供声明式的 HTTP 客户端——像调用本地方法一样调用远程服务:
// 声明式远程调用:像调用本地方法一样调用商品服务
@FeignClient(name = "product-service")
public interface ProductClient {
@GetMapping("/api/products/{id}")
Product getProduct(@PathVariable Long id);
}
链路追踪——"全链路透视"
一个用户请求可能经过网关 → 用户服务 → 订单服务 → 商品服务 → 库存服务,出问题时怎么定位是哪个环节?链路追踪通过给每个请求分配唯一的 TraceId,串联整条调用链。
SkyWalking(国内主流)和 Zipkin 是常用的链路追踪工具,Spring Cloud 通过 Micrometer Tracing 提供标准化的追踪接入。
学习建议
- 注册中心(Nacos) → 服务发现的基础
- 远程调用(OpenFeign) → 服务间通信
- API 网关(Gateway) → 统一请求入口
- 熔断降级(Sentinel) → 高可用保障
- 配置中心(Nacos Config) → 配置集中管理
- 链路追踪(SkyWalking) → 分布式调试