Skip to content

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/OTeltrace/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. 地址与配置服务在哪里、配置从哪里来NacosEurekaConfig/Apollo能画出注册表、PropertySource 和本地缓存
2. 一次同步调用方法如何变成网络请求OpenFeignHTTP ClientLoadBalancer能定位代理、选实例、连接池和解码分别在哪一层
3. 外部入口客户端请求如何进入服务GatewayZuul能解释路由、过滤器和 lb:// 的先后顺序
4. 故障保护慢、错、突发流量如何止损SentinelResilience4jHystrix能区分限流、超时、重试、隔离、熔断和降级
5. 异步解耦如何发布事件并保证消费可靠StreamBus能解释 Binder、消费组、ACK、重试、死信和幂等
6. 诊断与选型出问题怎么重建全链路可观测性Alibaba 全景演进选型能用 trace、metrics、logs 判断故障所在层

最后再读组件整合调用流程,把各页面中的局部流程拼成启动、同步请求、异步事件、配置刷新和故障恢复五条完整时间线。