Spring Cloud专注于为典型用例提供良好的开箱即用体验和可扩展性。提供对微服务架构的支持,包含服务注册与发现、负载均衡、跨服务调用、熔断限流、配置管理、服务网关、分布式消息等功能。它简化了微服务的开发和运维,同时与Spring Boot无缝集成,提供了易于配置和管理的解决方案。
spring cloud 的版本
spring cloud的早期版本Spring Cloud Dalston, Edgware, Finchley, Greenwich, 2020(又名Ilford), 2021.0(又名Jubilee)和2022.0(又名Kilburn)都已达到生命终止状态,不再支持。最新的版本2023.0.x (又名Leyton),但是最新的版本都是依赖spring boot 3版本,spring boot3 已不再支持jdk8。这里学习还是以旧的版本来搭建环境,这里以spring cloud 2021来学习
spring cloud 和 spring boot版本依赖关系如下:
Release Train | Spring Boot Generation |
---|---|
2023.0.x aka Leyton | 3.3.x, 3.2.x |
2022.0.x aka Kilburn | 3.0.x, 3.1.x (Starting with 2022.0.3) |
2021.0.x aka Jubilee | 2.6.x, 2.7.x (Starting with 2021.0.3) |
2020.0.x aka Ilford | 2.4.x, 2.5.x (Starting with 2020.0.3) |
Hoxton | 2.2.x, 2.3.x (Starting with SR5) |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
设置父工程全局依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.11</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.8</version>
<type>pom</type>spring
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.4.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这里依赖三个springboot版本2.7.11、springcloud版本2021.0.8、springcloud alibaba2021.0.4.0。这样在父工程dependencyManagement配置好后,子工程直接写具体的引用不用在写具体的版本号。并且各个模块版本依赖都是合适的,不会出现版本不匹配问题。
如引入springweb
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这里不写版本号会默认使用spring-boot-dependencies中指定的版本2.7.11。这个具体的版本指定在spring-boot-dependencies-2.7.11.pom文件里。
后面的学习都将基于这个父工程依赖配置。
Spring Cloud 、Spring Cloud Netflix 、Spring Cloud Alibaba的关系?
Spring Cloud 是一个用于构建分布式系统(特别是微服务架构)的框架,提供了一组功能全面的工具,帮助开发者解决常见的分布式系统问题,常用的组件如下。
- Spring Cloud Config:集中式配置管理,支持服务配置的动态刷新。
- Spring Cloud Netflix:集成 Netflix 组件
- Spring Cloud Gateway:高性能的 API 网关,提供路由、过滤和负载均衡功能。
- Spring Cloud Sleuth:分布式跟踪,集成了 Zipkin 和 Brave,用于日志追踪和性能监控。
- Spring Cloud Stream:构建消息驱动的微服务,支持消息中间件如 Kafka 和 RabbitMQ。
- Spring Cloud Bus:用于在分布式系统中传播事件和消息,常用于配置刷新。
- Spring Cloud Consul:集成 Consul 进行服务发现和配置管理。
- Spring Cloud Zookeeper:集成 Zookeeper 用于服务发现和配置管理。
- Spring Cloud Alibaba:集成 Alibaba 的开源项目
Spring Cloud Netflix 是 Spring Cloud 的一个子项目,专注于集成 Netflix (国外有名的视频网站公司)的开源组件。这些组件包括:
- Eureka:服务注册与发现
- Ribbon:客户端负载均衡
- Hystrix:断路器模式
- Zuul:网关和路由
Spring Cloud Netflix 提供了微服务架构所需的基础设施和工具,使得在这些常见的微服务问题上更加方便和高效。
Spring Cloud Alibaba 是 Spring Cloud 的一个扩展,专注于集成 Alibaba 的开源项目和服务。它提供了一些与中国市场和Alibaba云服务相关的解决方案,如:
- Nacos:动态服务发现和配置管理
- Sentinel:流量控制和熔断保护
- RocketMQ:分布式消息中间件
- Dubbo:高性能Java RPC框架
- Seata:分布式事务管理
Spring Cloud Alibaba 旨在将 Alibaba 的强大工具和服务无缝集成到 Spring Cloud 中,提供额外的功能和优化。
这些项目可以单独使用,也可以根据具体需求结合使用。例如,你可以在一个项目中使用 Spring Cloud Netflix 的组件来处理服务发现和负载均衡,同时使用 Spring Cloud Alibaba 的工具来处理配置管理和流量控制。