★ Spring Cloud 包含哪些核心组件?注册中心的工作原理是什么?

结论先行:Spring Cloud 是一套微服务基础设施组件集:注册发现、配置中心、网关、声明式调用、负载均衡、熔断降级、链路追踪。其共性底座是 spring-cloud-commons 抽象(DiscoveryClient、LoadBalancerClient 等),具体实现可选 Nacos/Eureka/Consul。注册中心解决“服务在哪、是否健康”:服务启动注册、心跳续约、健康检查、下线摘除,客户端缓存实例列表并按负载均衡策略挑选。

一、组件地图

能力Spring 官方/社区Alibaba 系
注册发现Eureka、Consul、ZooKeeperNacos
配置中心Config Server + BusNacos Config
声明式调用OpenFeign同左
负载均衡Spring Cloud LoadBalancer同左
网关Spring Cloud Gateway同左
熔断降级Circuit Breaker(Resilience4j)Sentinel
分布式事务——Seata
链路追踪Micrometer Tracing同左

版本命名:Spring Cloud 自 2020.0 起按年份发版(2023.0、2024.0),与 Boot 大版本配套,需用官方版本矩阵核对兼容性。

二、注册中心原理(以 Nacos 为例)

  1. 注册:应用启动把服务名、IP、端口、元数据上报注册中心,建立实例;
  2. 心跳续约:客户端周期性发送心跳,超时未续约则实例被标记不健康;
  3. 健康检查:临时实例靠心跳(AP),持久实例支持主动探测(CP,JRaft 选主同步);
  4. 发现与缓存:调用方启动时拉取服务实例列表并缓存,订阅变更做增量更新;
  5. 下线与摘除:优雅停机主动注销;故障实例靠心跳超时剔除;
  6. 负载均衡:LoadBalancer 依据本地缓存的实例列表选择目标(默认轮询)。

三、对比与关键点

实现一致性特点
EurekaAP纯注册中心,Netflix 系,心跳为主
NacosAP/CP 可切注册 + 配置一体,国内主流
ConsulCP多数据中心、强一致,需自建集群
ZooKeeperCP通用协调器,服务发现非专长
  • 缓存带来的坑:实例已下线但客户端缓存未刷新仍会短暂调用失败,靠重试与主动剔除缓解;
  • 注册中心自身需高可用(集群部署),它挂掉会导致新实例无法注册、存量靠缓存续命。

常见追问 / 记忆点

  • 追问:AP 与 CP 怎么选?答:服务发现偏 AP(可用性优先、短暂不一致可自愈);选主/配置强一致场景偏 CP。
  • 追问:为什么调用方还要缓存实例列表?答:避免每次调用都查注册中心,降低中心压力与失败面,换来短暂不一致。
  • 记忆点:注册/心跳/探活/摘除/缓存发现五步;Nacos 一鱼两吃(注册+配置),AP 是服务发现默认偏好。
笔记加载中…