Spring Cloud详解

4 阅读4分钟

一、什么是 Spring Cloud

Spring Cloud 是一套基于 Spring Boot 的微服务一站式开发框架,整合了业界成熟的分布式组件,用于快速搭建、治理微服务架构。

  • 底层依赖:Spring Boot(简化单体 / 微服务开发)
  • 定位:分布式微服务解决方案,解决服务注册发现、配置、熔断、网关、链路追踪等分布式问题
  • 核心特点:开箱即用、组件解耦、兼容 Spring 生态、轻量易上手

二、核心组件

1. 服务注册与发现

(1)Spring Cloud Alibaba Nacos(国内首选)

  • 作用:注册中心 + 配置中心二合一
  • 能力:服务注册、心跳检测、动态配置、权重负载均衡、灰度发布

(2)Eureka(Netflix,逐步淘汰)

  • 早期注册中心,AP 架构,高可用集群,现已停止维护

2. 负载均衡

  1. Spring Cloud LoadBalancer(官方原生,替代 Ribbon) Spring Cloud 2020+ 默认负载均衡组件,支持轮询、随机、自定义权重策略
  2. Ribbon(旧版,已弃用):客户端负载均衡,集成在 Feign 中

3. 远程服务调用

Feign

  • 声明式 HTTP 客户端,基于接口注解调用远程微服务,内置负载均衡
  • 简化 RestTemplate 手写 HTTP 请求,开发体验类似本地接口调用

4. 熔断、降级、限流(容错)

(1)Sentinel(Spring Cloud Alibaba 推荐)

阿里开源流量控制组件,功能更强:限流、熔断降级、系统保护、热点限流、流量整形,可视化控制台

(2)Resilience4j(官方替代 Hystrix)

轻量熔断工具,函数式编程,Spring Cloud 官方主推

Hystrix(Netflix,停止维护):早期熔断组件,隔离线程池防止服务雪崩

5. 统一配置中心

  1. Nacos Config:配置 + 注册一体,支持动态刷新、环境隔离、配置灰度
  2. Spring Cloud Config(原生):Git 存储配置,需配合 Bus 实现配置广播刷新

6. API 网关(统一入口)

Spring Cloud Gateway(官方新一代,替代 Zuul)

  • 基于 WebFlux 响应式编程,性能高
  • 功能:路由转发、鉴权、限流、跨域、请求过滤、灰度路由

Zuul 1.x(Netflix,阻塞 IO,性能差,淘汰)

7. 分布式事务

Seata(Spring Cloud Alibaba):AT/TCC/SAGA/XA 四种分布式事务模式,解决跨库微服务数据一致性

8. 分布式消息

Spring Cloud Stream:统一消息编程模型,屏蔽 RabbitMQ/RocketMQ/Kafka 底层差异

  • RocketMQ(Alibaba)、RabbitMQ 常用消息中间件

9. 分布式链路追踪

Sleuth + Zipkin:记录微服务调用链路、耗时、异常,排查分布式接口调用慢、报错问题

10. 分布式锁 / 分布式 ID

  • Redisson:Redis 分布式锁
  • Seata / Nacos 提供全局唯一 ID 生成

三、微服务标准架构流程(Nacos 版)

客户端请求 → Gateway网关 → 路由分发 → 微服务A
微服务A → Feign + LoadBalancer → 调用微服务B/C
所有服务注册到 Nacos,配置统一拉取自 Nacos
接口异常由 Sentinel 熔断降级
跨服务事务用 Seata 保证一致性
调用链路通过 Sleuth+Zipkin 追踪

四、Spring Cloud 版本规范

1. 版本命名规则(伦敦地铁站名,字母顺序升级)

旧版命名:Hoxton、Greenwich、Finchley 2020 后改为 年份代号:

  • 2020.0.x (Ilford)
  • 2021.0.x (Jubilee)
  • 2022.0.x (Kilburn)
  • 2023.0.x (Leyton)

2. Spring Cloud Alibaba 版本对应

必须严格匹配:Spring Cloud 版本、Spring Boot 版本、Nacos/Sentinel/Seata 版本,否则出现兼容性报错。

五、Spring Cloud Netflix vs Spring Cloud Alibaba

表格

维度Spring Cloud NetflixSpring Cloud Alibaba
维护状态多数组件停止更新持续迭代,阿里官方维护
注册 + 配置Eureka + Config(两套服务)Nacos 二合一
容错组件Hystrix(停更)Sentinel(功能丰富)
分布式事务无原生方案Seata 一站式分布式事务
消息中间件Rabbit/KafkaRocketMQ 原生集成
国内企业逐步淘汰互联网 / 国企主流选型

六、最小 Demo 开发流程(极简步骤)

  1. 引入 Spring Boot 父工程
  2. 引入 Spring Cloud 依赖管理(BOM)统一管控版本
  3. 搭建 Nacos 服务端
  4. 生产者微服务:集成 Nacos Discovery 注册服务,写接口
  5. 消费者微服务:Feign 远程调用生产者,LoadBalancer 负载均衡
  6. 集成 Gateway 网关统一访问入口
  7. 集成 Sentinel 做熔断限流保护

七、核心优势与常见问题

优势

  1. 微服务基础设施齐全,不用重复造轮子
  2. 无缝兼容 Spring Boot,学习成本低
  3. 组件可插拔,按需引入
  4. 完善的分布式问题解决方案(雪崩、配置、事务、网关)

常见痛点

  1. 版本匹配复杂,版本不对应极易启动报错
  2. 分布式事务本身无完美方案,需业务适配 Seata AT/TCC
  3. 服务拆分不合理会导致调用链复杂、维护成本升高
  4. 生产环境需配套监控、日志、告警体系(Prometheus + Grafana)

八、扩展配套技术栈

  • 监控:Spring Boot Admin、Prometheus + Grafana
  • 日志:ELK、SkyWalking(全链路监控,替代 Zipkin)
  • 容器部署:Docker + Kubernetes
  • 权限安全:Spring Security OAuth2 / Sa-Token 微服务鉴权