Spring Cloud 组件边界目录
本目录把 Spring Cloud 相关能力拆成可以独立学习、替换和排障的组件。组件之间通过契约协作,但职责不重叠:注册中心只维护实例,配置中心只分发配置,客户端只负责发起调用,负载均衡只负责选择实例,网关只负责入口治理。
组件地图
| 分类 | 组件 | 组件边界 | 典型输入/输出 | 详细入口 |
|---|---|---|---|---|
| 注册发现 | Nacos | 注册、订阅、健康与实例元数据;不承载业务请求 | 服务名 → 实例快照 | Nacos |
| 注册发现 | Eureka | 客户端续约、服务端剔除与注册表拉取 | 服务名 → 注册表缓存 | Eureka |
| 配置管理 | Config/Nacos Config/Apollo | 配置版本、发布、拉取/推送与刷新 | 配置键 → PropertySource | 配置中心 |
| 声明式调用 | OpenFeign | 接口代理、模板、编解码、异常映射 | Java 方法 → HTTP 请求 | OpenFeign |
| HTTP 客户端 | RestClient/WebClient | 连接、请求、响应和连接池 | URI + 请求体 → HTTP 响应 | HTTP 客户端 |
| 客户端负载均衡 | LoadBalancer | 从候选实例中选择一个目标 | 实例列表 → 目标实例 | LoadBalancer |
| API 网关 | Gateway | 路由匹配、过滤器、入口鉴权与转发 | 外部请求 → 下游请求 | Gateway |
| 限流熔断 | Sentinel | 规则匹配、统计、限流、熔断和降级 | 调用上下文 → 放行/拒绝/兜底 | Sentinel |
| 限流熔断 | Resilience4j | 熔断、隔离、重试、限时和舱壁 | 调用结果 → 状态机决策 | Resilience4j |
| 事件消息 | Stream | 将消息生产/消费绑定到 Binder | 业务事件 → 消息目的地 | Stream 与 Bus |
| 配置广播 | Bus | 使用消息总线广播刷新或自定义事件 | Bus 事件 → 多实例处理 | Stream 与 Bus |
| 可观测性 | Micrometer Tracing/OTel | trace/span 传播、指标、日志关联 | 请求上下文 → 观测信号 | 可观测性 |
| Alibaba 生态 | Spring Cloud Alibaba | 将 Nacos、Sentinel、RocketMQ 等接入 Spring Cloud 约定 | Cloud 抽象 → Alibaba 实现 | Alibaba 全景 |
| 平台集成 | Consul、Kubernetes Discovery | 由 Agent 或 Service/EndpointSlice 提供服务地址 | 平台服务 → DiscoveryClient | 演进与选型 |
| 经典组件 | Ribbon/Hystrix/Zuul | 维护存量系统原理与迁移边界 | 旧 API → 新组件映射 | 演进与选型 |
一次调用中谁负责什么
mermaid
flowchart LR
A["Gateway:入口路由与过滤"] --> B["Discovery:找到实例"]
B --> C["LoadBalancer:选择实例"]
C --> D["Feign/HTTP Client:构造并发送请求"]
D --> E["Sentinel/Resilience4j:保护调用"]
D --> F["Tracing:传播上下文"]
G["Config:提供运行参数"] -.-> A
G -.-> C不要把“发现不到实例”归因给 Feign,也不要把“请求超时”交给注册中心解决。每个问题先定位到拥有该状态的组件,再查看它的本地缓存、网络和下游依赖。
推荐阅读顺序
不要按侧边栏从上到下硬背组件。每个组件页都统一采用“问题 → 模型 → 流程 → 最小用法 → 生产排查”的入口,推荐按下面的依赖关系阅读:
| 学习阶段 | 先解决的问题 | 推荐组件入口 | 读完的判断标准 |
|---|---|---|---|
| 1. 地址与配置 | 服务在哪里、配置从哪里来 | Nacos、Eureka、Config/Apollo | 能画出注册表、PropertySource 和本地缓存 |
| 2. 一次同步调用 | 方法如何变成网络请求 | OpenFeign、HTTP Client、LoadBalancer | 能定位代理、选实例、连接池和解码分别在哪一层 |
| 3. 外部入口 | 客户端请求如何进入服务 | Gateway、Zuul | 能解释路由、过滤器和 lb:// 的先后顺序 |
| 4. 故障保护 | 慢、错、突发流量如何止损 | Sentinel、Resilience4j、Hystrix | 能区分限流、超时、重试、隔离、熔断和降级 |
| 5. 异步解耦 | 如何发布事件并保证消费可靠 | Stream、Bus | 能解释 Binder、消费组、ACK、重试、死信和幂等 |
| 6. 诊断与选型 | 出问题怎么重建全链路 | 可观测性、Alibaba 全景、演进选型 | 能用 trace、metrics、logs 判断故障所在层 |
最后再读组件整合调用流程,把各页面中的局部流程拼成启动、同步请求、异步事件、配置刷新和故障恢复五条完整时间线。
