Spring Cloud是什么
Spring Cloud是⼀系列框架的有序集合,是⼀套⽤于构建微服务架构的规范,⽽不是⼀个可以拿来即⽤的框架(所谓规范就是应该有哪些功能组件,然后组件之间怎么配合,共同完成什么事情)。它利⽤Spring Boot的开发便利性简化了微服务架构的开发(⾃动装配),用于开发服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等。
在这个规范之下第三⽅的Netflix公司开发了⼀些组件、Spring官⽅开发了⼀些框架/组件,包括第三⽅的阿⾥巴巴开发了⼀套框架/组件集合Spring Cloud Alibaba,这些才是Spring Cloud规范的实现。
- Netflix搞了⼀套,简称SCN
- Spring Cloud吸收了Netflix公司的产品基础之上⾃⼰也搞了⼏个组件
- 阿⾥巴巴在之前的基础上搞出了⼀堆微服务组件,Spring Cloud Alibaba(SCA)
Spring Cloud解决什么问题
Spring Cloud规范及实现意图要解决的问题其实就是微服务架构实施过程中存在的⼀些问题,⽐如微服务架构中的服务注册发现问题、⽹络问题(⽐如熔断场景)、统⼀认证安全授权问题、负载均衡问题、链路追踪等问题。
Spring Cloud架构
如前所述,Spring Cloud是⼀个微服务相关规范,这个规范意图为搭建微服务架构提供⼀站式服务,采⽤组件(框架)化机制定义⼀系列组件,各类组件针对性的处理微服务中的特定问题,这些组件共同来构成Spring Cloud微服务技术栈。
Spring Cloud核⼼组件
Spring Cloud⽣态圈中的组件,按照发展可以分为第⼀代Spring Cloud组件和第⼆代 Spring Cloud组件。
| 第⼀代 Spring Cloud(Netflix,SCN) | 第⼆代 Spring Cloud(主要就是Spring Cloud Alibaba,SCA) | |
|---|---|---|
| 注册中心 | Netflix Eureka | 阿⾥巴巴Nacos |
| 熔断器 | Netflix Hystrix | 阿⾥巴巴Sentinel |
| 网关 | Netflix Zuul(性能⼀般,未来将退出Spring Cloud ⽣态圈) | 官⽅Spring Cloud Gateway |
| 配置中心 | 官⽅Spring Cloud Config | 阿⾥巴巴Nacos、携程Apollo |
| 服务调用 | Netflix Feign | 阿⾥巴巴Dubbo RPC |
| 消息驱动 | 官⽅Spring Cloud Stream | 官⽅Spring Cloud Stream |
| 链路追踪 | 官⽅Spring Cloud Sleuth/Zipkin | 官⽅Spring Cloud Sleuth/Zipkin |
| 阿⾥巴巴seata分布式事务⽅案 |
Spring Cloud体系结构(组件协同⼯作机制)

Spring Cloud中的各组件协同⼯作,才能够⽀持⼀个完整的微服务架构。⽐如:
- 注册中⼼负责服务的注册与发现,很好将各服务连接起来
- API⽹关负责转发所有外来的请求
- 断路器负责监控服务之间的调⽤情况,连续多次失败进⾏熔断保护。
- 配置中⼼提供了统⼀的配置信息管理服务,可以实时的通知各个服务获取最新的配置信息。
Spring Cloud与Dubbo对⽐
Dubbo是阿⾥巴巴公司开源的⼀个⾼性能优秀的服务框架,基于RPC调⽤,而⽬前使⽤率较⾼的Spring Cloud Netflix来说,它是基于HTTP的,所以效率上没有Dubbo⾼,但问题在于Dubbo体系的组件不全,不能够提供⼀站式解决⽅案,⽐如服务注册与发现需要借助于Zookeeper等实现,⽽Spring Cloud Netflix则是真正的提供了⼀站式服务化解决⽅案,且有Spring⼤家族背景。
前些年,Dubbo使⽤率⾼于SpringCloud,但⽬前Spring Cloud在服务化/微服务解决⽅案中已经有了⾮常好的发展趋势。
Spring Cloud与Spring Boot的关系
Spring Cloud只是利⽤了Spring Boot的特点,让我们能够快速的实现微服务组件开发,否则不使⽤Spring Boot的话,我们在使⽤Spring Cloud时,每⼀个组件的相关jar包都需要我们⾃⼰导⼊配置以及需要开发⼈员考虑兼容性等各种情况。所以Spring Boot是我们快速把Spring Cloud微服务技术应⽤起来的⼀种⽅式。