一文详细说明spring cloud和Spring Cloud Alibaba的各自组件以及联系和区别
文章目录
- 一:Spring Cloud微服务概念
- 二:Spring Boot概念
- 三:Spring Cloud (一代 Netflix 版)
- 1:Spring Cloud 介绍
- 2:Spring Cloud 发展历史
- 3:Spring Cloud 常用组件
- 内嵌依赖型:融合在每个微服务中,依赖其他组件、为业务提供支撑
- 独立部署型:可单独启动部署,不依赖业务服务,独立提供中间件能力
- 4:Spring Cloud 版本和常说的Spring Cloud H版是什么意思?
- 四:Spring Cloud Alibaba(二代)
- 1:Spring Cloud Alibaba 介绍
- 2:常用组件
- 阿里开源免费组件(项目可直接自用、无商业绑定)
- 阿里商业化组件(阿里云云产品,偏向企业上云使用)
- 五:Spring Cloud 原生 和 Spring Cloud Alibaba 技术栈对比
- 1. 整体架构与目标
- 2. 核心组件对比
- 服务注册与发现
- Spring Cloud-Eureka
- Spring Cloud Alibaba-Nacos
- 负载均衡
- Spring Cloud-Ribbon
- Spring Cloud Alibaba-LoadBalancer
- 熔断与限流
- Spring Cloud-Hystrix
- Spring Cloud Alibaba-Sentinel
- 分布式配置管理
- Spring Cloud-Config
- Spring Cloud Alibaba-Nacos
- API 网关
- Spring Cloud-Gateway/Zuul
- Spring Cloud Alibaba-Gateway
- 消息队列
- Spring Cloud-Kafka/RabbitMQ
- Spring Cloud Alibaba-RocketMQ
- 分布式事务
- Spring Cloud-原生
- Spring Cloud Alibaba-Seata
- 3. 总结对比
- 4. 如何选择?
- 5. 未来趋势
- Spring Cloud 原生
- Spring Cloud Alibaba
一:Spring Cloud微服务概念
提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一套标准化的微服务治理生态与开发规范,由多个子框架、子组件集合而成,提供了完整成熟的分布式系统一站式解决方案。涵盖:服务注册与发现、分布式配置中心、API服务网关、智能路由、客户端负载均衡、服务熔断降级、全链路监控追踪、分布式消息驱动等核心能力。
Spring Cloud 基于 Spring Boot 风格进行高度封装,屏蔽了分布式开发中复杂的底层配置、底层实现原理与网络通信细节,为开发者提供一套简单易懂、开箱即用、易集成、易部署的分布式系统开发工具包。开发者可以快速搭建、启动微服务应用,同时天然支持与云平台、容器化环境无缝对接。
微服务是可独立开发、独立部署、独立扩容、独立数据库隔离的最小业务服务单元;Spring Cloud 就作为整套微服务架构的统一管控标准与生态底座。采用微服务架构后,系统会拆分成大量独立小服务,Spring Cloud 负责统一规范、协调、治理所有微服务,再由各类中间件组件各司其职配合完成治理能力。
二:Spring Boot概念
Spring Boot 并不是一门全新独立技术,它基于 Spring 核心框架,深度践行约定优于配置(Convention Over Configuration)设计理念而生的开发脚手架,核心目标是帮助开发者极简、极速创建可独立运行、可直接上生产的 Spring 体系应用。
之所以称 Spring Boot 为微框架,核心体验就是:极少手动配置、无需繁琐XML、内嵌Web容器,就能快速搭建完整Web项目、微服务应用。
Spring Boot没有颠覆 Spring 原有核心技术,只是对 Spring 原有功能做自动配置、依赖管理、场景化封装;只要熟悉 Spring IOC、AOP 核心思想,学习 Spring Boot 几乎没有门槛。
围绕 Spring Boot 为基础构建的 Spring Cloud 微服务生态,目前业界有两套最成熟的落地实现:
- 初代:Spring Cloud Netflix
- 主流二代:Spring Cloud Alibaba
约定优于配置:通过框架预设默认规则、默认配置,减少开发者手动编写配置的工作量,遵循约定即可快速启动项目,仅特殊业务场景按需自定义配置。
三:Spring Cloud (一代 Netflix 版)
1:Spring Cloud 介绍
Spring 一贯设计思想不是重复造轮子,而是整合、兼容、封装业界现有成熟技术。
举例:Spring 底层只核心实现 IOC 依赖注入、AOP 面向切面编程两大核心能力;ORM持久层、缓存框架、MVCweb层等,Spring 只提供统一适配、兼容整合能力,因此常被称作「万能胶」,可以无缝粘合各类第三方框架。
同理,Spring Cloud 本身不重复开发注册中心、熔断、配置中心等底层组件,它不单纯是某一个框架,而是定义了一套微服务统一编程规范、注解标准、调用规范和生态适配标准。
而 Spring Cloud Netflix 只是遵循 Spring Cloud 规范的第一种官方具体实现。
2:Spring Cloud 发展历史
Netflix 是美国知名流媒体服务商,业务涵盖互联网随选流媒体播放、DVD及蓝光光碟在线租赁等,1997年成立,早期大规模面临服务拆分、海量服务治理、高可用容错等分布式痛点,由此开源了一整套微服务治理组件。
Spring Cloud Netflix 是针对 Netflix 开源各类组件封装的开发工具包,核心包含 Eureka、Ribbon、Feign、Hystrix、Zuul、Archaius 等核心组件:
- Netflix Eureka:基于REST风格的服务治理核心组件,实现服务注册中心、服务注册、服务发现完整机制,自带云端负载均衡、服务故障转移能力。
- Netflix Ribbon:客户端负载均衡组件,本地实现负载均衡策略,无需依赖额外中间件。
- Netflix Hystrix:服务容错核心组件,实现经典断路器模式,通过服务节点隔离、熔断、降级,应对接口延迟、服务故障,提升分布式系统容错能力。
- Netflix Feign:声明式HTTP服务调用组件,底层基于 Ribbon + Hystrix 整合封装,只需接口注解即可实现远程调用。
- Netflix Zuul:第一代微服务网关,提供请求路由分发、访问过滤、限流拦截等基础网关能力。
- Netflix Archaius:动态配置管理API,支持配置动态刷新、线程安全配置操作、定时轮询、配置变更回调等能力。
Spring Cloud Netflix 生态从 2020 年起,Archaius、Hystrix、Ribbon、Zuul、Turbine 等核心 Starter 陆续进入维护模式。
维护模式含义:Spring Cloud 官方不再新增功能迭代,仅持续修复安全漏洞、严重阻塞Bug,日常项目仍可正常使用,但不建议新项目继续技术选型。
进入维护模式的根本原因:Netflix 自身业务技术栈迭代,对开源微服务组件投入维护力度大幅减少;因此 Spring Cloud 在 Greenwich 版本开始,逐步将这类组件归入维护态。
目前企业新项目搭建微服务,基本以 Spring Cloud Alibaba 作为主流技术基准。
3:Spring Cloud 常用组件
内嵌依赖型:融合在每个微服务中,依赖其他组件、为业务提供支撑
Netflix Ribbon:客户端负载均衡,支持区域亲和、请求重试、多种负载均衡策略。Netflix Hystrix:客户端服务容错保护,支持服务降级、服务熔断、请求缓存、请求合并、服务依赖隔离。Netflix Feign:声明式远程服务调用,本质是对 Ribbon 和 Hystrix 的上层封装。Spring Cloud Stream:消息驱动编程模型,定义 Sink、Source、Processor 三种消息通道,支持发布订阅、消费组、消息分区。Spring Cloud Bus:消息总线,基于 Stream 实现,配合配置中心实现全局配置动态刷新。Spring Cloud Sleuth:分布式链路追踪组件,核心概念 TraceID、SpanID、采样率配置,可无缝对接 ELK 做日志链路分析。
补充说明:Spring Cloud Sleuth 现已官方废弃,后续推荐使用 Micrometer Tracing 替代。
独立部署型:可单独启动部署,不依赖业务服务,独立提供中间件能力
Netflix Eureka:服务注册中心,自带服务失效剔除、自我保护机制,保障注册中心高可用。Hystrix Dashboard:Hystrix 监控仪表盘,支持单点服务监控、集群监控;集群模式需配合 Turbine 聚合监控数据。Netflix Zuul:第一代API服务网关,核心能力请求路由分发、全局过滤器、请求鉴权过滤。Spring Cloud Config:分布式配置中心,支持本地仓库、SVN、Git、Jar包内置配置等多种配置存储模式。
补充说明:Spring Cloud Config 并非不支持动态刷新,配合 Spring Cloud Bus + 消息队列可实现全局配置动态刷新,只是部署复杂、实时性不如 Nacos 原生方案。
4:Spring Cloud 版本和常说的Spring Cloud H版是什么意思?
Spring Cloud 为多子项目生态,各子项目迭代节奏不一致,为统一管理版本依赖、避免版本混淆,放弃传统数字版本号,采用英国伦敦地铁站名称按字母A-Z顺序作为版本命名。
例如:Angel(初代)、Brixton、Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton依次迭代。
当版本积累重要新特性或修复重大Bug后,会发布 Service Releases 版本,简称 SRX 版本;例如 Greenwich.SR2 代表 Greenwich 版本的第2次补丁发布。
版本迭代补充:
Hoxton 就是业内常说的H版,属于较早期经典版本;后续 Spring Cloud 放弃地铁站命名,改为日历化版本命名(如 2020.0、2021.0、2022.0 等),按年份季度迭代,是目前官方最新版本规范。
四:Spring Cloud Alibaba(二代)
1:Spring Cloud Alibaba 介绍
Spring Cloud Alibaba 是阿里巴巴开源并已正式纳入 Spring 官方生态的一套微服务架构解决方案,和原生 Spring Cloud 定位一致,都是完整的分布式微服务全家桶。
依托 Spring Cloud Alibaba,开发者只需引入少量依赖、添加注解和极简配置,即可无缝接入阿里微服务生态,借助阿里开源中间件快速搭建高可用、高并发的分布式应用系统。
诞生背景:一方面 Netflix 全系组件陆续停止功能迭代、进入维护模式;另一方面阿里为完善国内微服务生态、推广自身中间件与阿里云商业云服务,打造了这套更适配国内业务场景、中文文档完善、社区活跃的微服务标准,目前已成为国内绝大多数企业微服务技术选型首选。
Spring Cloud Alibaba 整体包含三大类:阿里开源免费组件、阿里云商业化组件、兼容集成原生 Spring Cloud 通用组件。
2:常用组件
阿里开源免费组件(项目可直接自用、无商业绑定)
- Nacos:一站式云原生动态服务发现、配置管理、服务治理平台,同时兼容注册中心+配置中心双能力,替代 Eureka + Config。
- Spring Cloud Gateway:高性能API网关,基于Webflux异步编程模型,替代老旧Zuul网关。
- Sentinel:以流量控制为核心,从限流、熔断降级、系统负载保护、热点参数限流、授权规则多维度保障服务稳定性,替代 Hystrix。
- RocketMQ:开源高可用分布式消息中间件,低延迟、高可靠,支持普通消息、顺序消息、事务消息等高级特性。
- Dubbo:国内主流高性能 Java RPC 框架,Spring Cloud Alibaba 中可替代 OpenFeign 实现跨服务高性能调用。
- Seata:开源分布式事务解决方案,支持 AT、TCC、SAGA 等事务模式,解决微服务跨库分布式事务问题。
- Arthas:Java 线上动态诊断追踪工具,基于字节码增强,可实时排查线上CPU、内存、接口性能、代码热更新等问题。
阿里商业化组件(阿里云云产品,偏向企业上云使用)
阿里巴巴作为商业公司,推出 Spring Cloud Alibaba 同时完善云生态,通过开发者生态带动阿里云商业化产品落地,这类组件偏向企业上云场景使用,稳定性和易用性经过阿里生产环境打磨:
- Alibaba Cloud ACM:分布式应用集中配置管理、配置实时推送的商用配置中心产品。
- Alibaba Cloud OSS:阿里云对象存储服务,用于文件、图片、静态资源云端存储。
- Alibaba Cloud SchedulerX:分布式定时任务调度产品,支持秒级调度、Cron表达式、任务分片、高可用任务编排。
五:Spring Cloud 原生 和 Spring Cloud Alibaba 技术栈对比
Spring Cloud 原生(Netflix 体系)与 Spring Cloud Alibaba 均基于 Spring Boot 构建微服务,编程模型高度兼容,但维护主体、组件选型、生态适配有明显差异:
- Spring Cloud 原生:由 Pivotal/VMware 主导社区驱动开源,偏向国际通用微服务标准。
- Spring Cloud Alibaba:阿里巴巴主导开源生态,深度适配国内业务、中文文档完善、贴合中小企业及云上架构。
以下是整体架构、核心组件详细对标分析:
1. 整体架构与目标
| 特性 | Spring Cloud 原生 | Spring Cloud Alibaba |
|---|---|---|
| 维护者 | Pivotal/VMware 社区驱动 | 阿里巴巴开源团队 |
| 目标 | 通用化、国际化微服务规范 | 适配国内业务、一站式微服务+云原生解决方案 |
| 依赖中间件 | Netflix 系列(Eureka、Hystrix、Ribbon 等部分已停更) | Nacos、Sentinel、RocketMQ 等阿里开源组件 |
| 生态兼容性 | 更适合外企、国际开源项目 | 更适合国内企业、阿里云上架构团队 |
2. 核心组件对比
服务注册与发现
Spring Cloud-Eureka
- 组件:
Eureka - 功能:基础服务注册、服务发现、健康检测
- 现状:Eureka 2.0 停止开源迭代,1.x 仅维护Bug;生产新项目不推荐选型,老项目可平稳运行,建议迁移 Nacos。
Spring Cloud Alibaba-Nacos
- 组件:
Nacos - 功能:同时支持服务注册发现 + 动态配置中心双核心能力
- 优势:性能更高、集群部署简单、配置实时推送、界面可视化、中文文档完善,一站式替代 Eureka+Config。
负载均衡
Spring Cloud-Ribbon
- 组件:
Ribbon - 功能:客户端本地负载均衡
- 现状:已进入维护模式,官方推荐迁移替代方案。
Spring Cloud Alibaba-LoadBalancer
- 组件:复用官方
Spring Cloud LoadBalancer - 功能:原生客户端负载均衡,完全替代 Ribbon
- 优势:官方长期维护、适配新版Spring Cloud、无停更风险。
熔断与限流
Spring Cloud-Hystrix
- 组件:
Hystrix - 功能:基础熔断、降级、服务隔离
- 现状:停止功能迭代,功能单一、无动态规则、无可视化配置。
Spring Cloud Alibaba-Sentinel
- 组件:
Sentinel - 功能:熔断降级、流量限流、热点参数限流、系统自适应保护、授权规则、黑白名单
- 优势:功能更全面、支持动态规则配置、实时监控面板、轻量易接入,全面替代 Hystrix。
分布式配置管理
Spring Cloud-Config
- 组件:
Spring Cloud Config - 功能:集中配置管理,支持Git/SVN/本地配置
- 限制:单独部署、配置动态刷新需依赖 Bus+MQ 配合,流程复杂、实时性差。
Spring Cloud Alibaba-Nacos
- 组件:
Nacos内置配置中心 - 功能:配置集中管理、原生实时动态刷新、配置版本回滚、灰度发布
- 优势:注册+配置二合一,减少中间件部署成本,开箱即用。
API 网关
Spring Cloud-Gateway/Zuul
- 组件:
Spring Cloud Gateway/Zuul - 功能:路由转发、全局过滤、鉴权拦截
- 现状:Zuul 1.x 老旧同步阻塞模型,性能差且停更;官方主推 Spring Cloud Gateway。
Spring Cloud Alibaba-Gateway
- 组件:直接复用
Spring Cloud Gateway - 功能:路由分发、过滤器链、限流拦截、跨域处理
- 优势:统一标准、无需额外学习、异步非阻塞高性能。
消息队列
Spring Cloud-Kafka/RabbitMQ
- 组件:无官方绑定MQ,自由集成 RabbitMQ、Kafka 等第三方
- 特点:灵活但无生态深度适配,需自行整合配置。
Spring Cloud Alibaba-RocketMQ
- 组件:
RocketMQ - 功能:高吞吐、高可用分布式消息队列,支持事务消息、顺序消息、延时消息
- 优势:和Alibaba生态无缝集成、中文文档完善、适合国内高并发业务场景。
分布式事务
Spring Cloud-原生
- 组件:无官方内置分布式事务方案
- 实现:项目自行整合 Seata、Atomikos 等第三方框架。
Spring Cloud Alibaba-Seata
- 组件:
Seata原生集成 - 功能:微服务跨库、跨服务分布式事务,支持AT/TCC/SAGA模式
- 优势:与Nacos、Sentinel、RocketMQ生态打通,接入简单、社区活跃。
3. 总结对比
| 功能模块 | Spring Cloud 原生 | Spring Cloud Alibaba |
|---|---|---|
| 服务注册与发现 | Eureka(维护态,不推荐新项目) | Nacos |
| 负载均衡 | Ribbon(维护态) | Spring Cloud LoadBalancer |
| 熔断与限流 | Hystrix(维护态) | Sentinel |
| 分布式配置中心 | Spring Cloud Config | Nacos |
| API 网关 | Spring Cloud Gateway / Zuul | Spring Cloud Gateway |
| 消息队列 | Kafka / RabbitMQ | RocketMQ |
| 分布式事务 | 手动集成第三方Seata | 原生集成Seata |
| 服务调用 | Feign / OpenFeign | Feign / OpenFeign / Dubbo |
| 日志采集与聚合 | Logstash、Fluentd 等第三方 | 阿里云SLS、Logtail 或开源ELK |
| 监控与指标 | Prometheus + Grafana | 阿里云云监控 + Spring Boot Actuator |
| 链路追踪 | Sleuth(废弃)+Zipkin/Jaeger | Micrometer Tracing + SkyWalking/ARMS |
| 分布式锁 | Redis / Zookeeper 自行封装 | Nacos配置锁 / Redisson 开箱即用 |
| 事件驱动架构 | Spring Cloud Stream + Kafka/RabbitMQ | Spring Cloud Stream + RocketMQ |
| RPC 框架 | 默认RESTful接口调用 | 支持Dubbo高性能RPC+REST双模式 |
4. 如何选择?
- 外企、国际化项目、开源标准优先:选择Spring Cloud 原生,组件选用 Consul、Resilience4j、Spring Cloud LoadBalancer 等替代老旧Netflix组件。
- 国内中小企业、传统项目转型微服务、后续可能上阿里云:首选Spring Cloud Alibaba,生态完整、文档友好、踩坑案例多、招聘技术栈统一。
- 混合架构选型:实际项目可混合使用,例如统一用 Spring Cloud Gateway 网关,搭配 Nacos 做注册配置,兼顾规范与易用性。
5. 未来趋势
Spring Cloud 原生
逐步全面下线 Netflix 老旧组件,官方主推自研生态:Spring Cloud LoadBalancer、Resilience4j、Micrometer Tracing、Consul 等,持续保持国际化通用微服务规范定位。
Spring Cloud Alibaba
持续高速迭代,不断完善云原生、微服务、分布式事务、流量治理能力,深度绑定阿里云生态,成为国内微服务事实上的主流标准,中小企业新项目几乎全覆盖选型。
