前言:Spring Cloud是一款基于 Spring Boot 实现的微服务框架
Spring Cloud 并不是一个拿来即可用的框架,它是一种微服务规范,共有以下 2 代实现:
- 第一代实现:Spring Cloud Netflix
- 第二代实现:Spring Cloud Alibaba
1、Spring Cloud 的常用组件如下表所示。
Spring Cloud 组件 | 描述 |
Spring Cloud Netflix Eureka | Spring Cloud Netflix 中的服务治理组件,包含服务注册中心、服务注册与发现机制的实现。 |
Spring Cloud Netflix Ribbon | Spring Cloud Netflix 中的服务调用和客户端负载均衡组件。 |
Spring Cloud Netflix Hystrix | 人称“豪猪哥”,Spring Cloud Netflix 的容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。 |
Spring Cloud Netflix Feign | 基于 Ribbon 和 Hystrix 的声明式服务调用组件。 |
Spring Cloud Netflix Zuul | Spring Cloud Netflix 中的网关组件,提供了智能路由、访问过滤等功能。 |
Spring Cloud Gateway | 一个基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关框架,它使用 Filter 链的方式提供了网关的基本功能,例如安全、监控/指标和限流等。 |
Spring Cloud Config | Spring Cloud 的配置管理工具,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。 |
Spring Cloud Bus | Spring Cloud 的事件和消息总线,主要用于在集群中传播事件或状态变化,以触发后续的处理,例如动态刷新配置。 |
Spring Cloud Stream | Spring Cloud 的消息中间件组件,它集成了 Apache Kafka 和 RabbitMQ 等消息中间件,并通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件之间的隔离。通过向应用程序暴露统一的 Channel 通道,使得应用程序不需要再考虑各种不同的消息中间件实现,就能轻松地发送和接收消息。 |
Spring Cloud Sleuth | Spring Cloud 分布式链路跟踪组件,能够完美的整合 Twitter 的 Zipkin。 |
2、Spring Boot 和 Spring Cloud 的区别与联系
2.1、Spring Boot 和 Spring Cloud 分工不同
Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。
Spring Cloud 是微服务架构下的一站式解决方案
- Spring Cloud 是基于 Spring Boot 实现的
- Spring Boot 和 Spring Cloud 依赖项数量不同
- Spring Cloud 不能脱离 Spring Boot 单独运行
Spring Cloud版本选择
spring-cloud | Spring Boot |
Hoxton.SR12 | >=2.2.0.RELEASE and <2.4.0.M1 |
2020.0.6 | >=2.4.0.M1 and <2.6.0-M1 |
2021.0.0-M1 | >=2.6.0-M1 and <2.6.0-M3 |
2021.0.0-M3 | Spring Boot >=2.6.0-M3 and <2.6.0-RC1 |
2021.0.0-RC1 | Spring Boot >=2.6.0-RC1 and <2.6.1 |
2021.0.5 | Spring Boot >=2.6.1 and < 3.0.0-M1 |
2022.0.0-M1 | Spring Boot >=3.0.0-M1 and < 3.0.0-M2 |
2022.0.0-M2 | Spring Boot >=3.0.0-M2 and < 3.0.0-M3 |
2022.0.0-M3 | Spring Boot >=3.0.0-M3 and < 3.0.0-M4 |
2022.0.0-M4 | Spring Boot >=3.0.0-M4 and < 3.0.0-M5 |
2022.0.0-M5 | Spring Boot >=3.0.0-M5 and < 3.0.0-RC1 |
2022.0.0-RC1 | Spring Boot >=3.0.0-RC1 and < 3.0.0-RC2 |
2022.0.0-RC2 | Spring Boot >=3.0.0-RC2 and < 3.1.0-M1 |