Spring Cloud 是一个基于 Spring Boot 实现的微服务开发工具,它不是框架,它是规则,它是思想,它提供了分布式系统中的分布式/版本化的配置、服务注册及发现、智能路由、服务之间调用、负载均衡、断路器、全局锁、主机推举与集群状态、分布式消息等开发方式。
发展历史
privotal 公司在 2014 年 10 月 7 日发布了第一个 Spring Cloud 的版本:1.0.0.M1,随后进行几年的迭代后,在 2016 年 1 月发布了第一个 Angel.SR5 正式版本。
Spring Cloud 一度泛指 Spring Cloud Netflix,但是这种观点是错误的,只是 Spring Cloud 早期的组件采用了 Netflix 的组件,如服务注册及发现采用 Netflix Eureka,负载均衡用 Netflix Ribbon,断路器使用 Netflix Hystrix 等等。
随着 Netflix 对一些组件不再开发或不再维护,Spring Cloud 也宣布这些模块对应的在 spring-cloud-netflix 项目里的模块也不再维护,并且在 RoadMap 中删除这些维护模块。Netflix 在 Spring Cloud 历史中会逐渐消失。
各组件实现
我们知道 Spring Cloud 是一个规范、规则,是思想,每个组件都有不同的实现,除了早期的 Netflix 相关实现外,还有 Alibaba 等实现,具体如下表格:
Spring Cloud Netflix | Spring Cloud 官方 | Spring Cloud Alibaba | Spring Cloud Consul | Spring Cloud Kubernetes | Spring Cloud Zookeeper | |
---|---|---|---|---|---|---|
分布式配置 | Archaius | Spring Cloud Config (Spring Cloud Vault) |
Nacos | Consul | ConfigMap | Zookeeper |
服务注册/发现 | Eureka 1.0 Eureka 2.0 |
- | Nacos | Consul | Api Server | Zookeeper |
服务熔断 | Hystrix | Spring Cloud Circuit Breaker (resilience4j) |
Sentinel | - | - | - |
服务调用 | Feign | OpenFeign RestTemplate |
Dubbo RPC | - | - | - |
服务路由/网关 | Zuul | Spring Cloud Gateway | Dubbo Proxy | - | - | - |
分布式消息 | - | Spring Cloud Stream SCS RabbitMQ/Kafka |
SCS RabbitMQ | SCS Consul | - | - |
消息总线 | - | Spring Cloud Bus | SCB | SCS Consul | - | - |
负载均衡 | Ribbon | Spring Cloud LoadBalancer | Dubbo LB | - | - | - |
分布式事务 | - | - | Seata | - | - | - |
安全认证 | - | Spring Cloud Security | - | - | - | - |
分布式服务追踪 | - | Spring Cloud Sleuth | - | - | - | - |
如上表格中,红色的表示已经不再继续开发