3分钟快速入门 Spring Cloud Alibaba 全家桶套件!
一、背景介绍
自 Spring Cloud Alibaba 发布第一个 Release 以来,就备受国内开发者的高度关注。
Spring Cloud Alibaba 是阿里巴巴在 Spring Cloud 基础上构建的一套开源微服务框架,用于帮助开发者更方便地构建分布式应用系统。它融合了阿里巴巴在分布式系统领域的诸多优秀技术,如 Dubbo、Nacos 等,旨在提供一个更加完善和适合企业级开发的微服务解决方案。
二、组件介绍
下面,我们一起来看看 Spring Cloud Alibaba 中几款重要组件和用途,通过它可以更便于我们了解 Spring Cloud Alibaba 与 Spring Cloud 之间的关系。
- Nacos:它是一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台。在微服务体系中,它既可以作为服务注册中心,也可以作为服务配置中心,可以替代 Eureka 和 Config Server。
- Dubbo:它是一个高性能、轻量级的开源 Java RPC 框架,通常用于服务远程调用。
- Sentinel:它是一款面向分布式服务架构的流量控制和熔断降级组件,通过它可以实现服务降级和流量控制。
- RocketMQ:它是一款开源的分布式消息队列组件,可以提供低延时的、高可靠的消息发布与订阅服务。
- Seata:它是一款开源的分布式事务解决方案,可以保证跨多个微服务的操作要么全部成功,要么全部失败,确保数据的一致性。
除此之外,还有 Alibaba Cloud OSS、Alibaba Cloud SchedulerX、Alibaba Cloud SMS 等分布式组件,与上面的介绍组件相比,这些组件需要与阿里云平台服务集成才能使用。
Spring Cloud Alibaba 与 Spring Cloud 的关系,可以用如下图来概括。

从图中可以看出,Spring Cloud Alibaba 在 Spring Cloud 基础上进行了功能的扩展,为微服务系统的技术选型提供了更多的解决方案。
三、版本选择
由于 Spring Cloud Alibaba 的组件并没有纳入到 Spring Cloud 的主版本管理中,因此我们无法直接通过spring-cloud-dependencies
来引入相关的组件,需要在工程中单独的引入spring-cloud-alibaba-dependencies
来管理 Spring Cloud Alibaba 下的组件。
例如某个 Spring Cloud 工程需要引入 Spring Cloud Alibaba 相关组件,可以通过如下方式实现:
<properties>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
<!-- Nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 服务发现:OpenFeign服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 负载均衡器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- 引入 spring cloud 版本号 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 引入 spring cloud alibaba 适配的版本号 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
需要特别注意的是 Spring Cloud Alibaba 与 Spring Cloud 的版本号对应关系,如果代码是正确的,但是运行的时候总是各种异常,大概率应该是版本号不兼容导致的,可以参考如下图来检查版本号是否兼容匹配。

四、组件版本关系
每个 Spring Cloud Alibaba 版本与自身所适配的各个组件版本对应关系如下:

如果工程中出现组件版本冲突,可以参考上图进行适度调整。
五、小结
从 Spring Cloud 发展历程来看,共有两代技术实现。
- Spring Cloud 的第一代技术栈,主要由 Eureka、Ribbon、Feign、Hystrix 等组件组成,由 Spring Cloud Netflix 实现。
- Spring Cloud 的第二代技术栈,主要由 Nacos、Sentinel、Seata 等组件组成,由 Spring Cloud Alibaba 实现。
Spring Cloud Alibaba 吸收了 Spring Cloud Netflix 很多的微服务架构思想,并进行了高性能改进。自 Spring Cloud Netflix 进入停更维护后,Spring Cloud Alibaba 正逐渐代替它成为主流的微服务框架。
因此,学习和掌握 Spring Cloud Alibaba 技术,对于开发微服务项目帮助巨大。
六、参考
1、https://sca.aliyun.com/docs/2.2.x/overview/version-explain/
2、https://spring.didispace.com/spring-cloud/spring-cloud-alibaba-version.html
3、https://juejin.cn/post/6926390930790580237
作者:潘志的技术笔记
出处:https://pzblog.cn/
版权归作者所有,转载请注明出处
