Skip to content

P89 SpringCloud 核心组件及其作用 ​

面试题:SpringCloud 有哪些核心组件?各自负责什么?

1. 核心组件全景 ​

组件作用说明
Eureka / Nacos服务注册与发现服务启动注册,调用方按服务名找实例
Ribbon / LoadBalancer客户端负载均衡从注册中心拿到列表后本地选实例
OpenFeign声明式 HTTP 调用像调本地方法一样调远程服务
Hystrix / Sentinel / Resilience4j熔断、降级、限流防止雪崩
Gateway / ZuulAPI 网关统一入口:路由、鉴权、限流、日志
Config / Nacos Config配置中心统一配置、动态刷新
Sleuth + Zipkin链路追踪traceId 串联调用链,排查问题
Spring Cloud Bus / Stream消息总线/事件驱动配置广播、异步解耦

2. 一次请求走通全链路 ​

text
客户端 → Gateway(路由/鉴权/限流)
  → 从 Nacos/Eureka 发现服务
  → LoadBalancer 选一台实例
  → OpenFeign 调用订单服务(熔断保护 Sentinel)
  → 链路追踪 Sleuth/Zipkin 记录 traceId

3. 各组件要点 ​

  • 注册中心:服务提供者注册、消费者订阅;心跳检测剔除故障实例;
  • 负载均衡:Ribbon 已进入维护模式,Spring Cloud LoadBalancer 是替代;策略有轮询、随机、权重、最少连接;
  • Feign:内置 Ribbon + Hystrix(旧版);接口 + 注解定义远程调用,自动做序列化;
  • 熔断降级:被调服务故障时快速失败(熔断)、返回兜底数据(降级)、控制流量(限流),防止雪崩;
  • 网关:所有流量入口,统一做鉴权、限流、灰度、日志,比在各服务重复实现好维护;
  • 配置中心:环境隔离、动态刷新(@RefreshScope)、配置加密;
  • 链路追踪:一次请求生成全局 traceId,跨服务透传,聚合调用链和耗时。

4. 加分点 ​

  • 提到 Nacos = 注册中心 + 配置中心二合一(国内主流),可替代 Eureka + Config;
  • 说明"新项目选型":Spring Cloud Alibaba(Nacos + Sentinel + Seata)在国产社区更常用;
  • 追问"服务间调用为什么用 OpenFeign 而不用 RestTemplate":声明式、集成负载均衡/熔断、类型安全;
  • 提到网关层与"服务间调用"的负载均衡是两层,别混淆。

一句话总结 ​

SpringCloud 核心组件:注册发现(Eureka/Nacos)+ 客户端负载均衡(Ribbon/LoadBalancer)+ 声明式调用(OpenFeign)+ 熔断限流(Sentinel/Hystrix)+ 网关(Gateway)+ 配置中心(Config/Nacos)+ 链路追踪(Sleuth/Zipkin),各司其职组成完整的微服务治理体系。

基于 VitePress 重建