Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。附:Spring Cloud Alibaba官网、视频教程、github代码国内镜像。
为什么会诞生Spring Cloud Alibaba
我们知道Spring Cloud
很多技术现在都停更了,Netflix
也说明了不再维护了。一开始阿里搞出了一个Dubbo
,但是后面停更了几年,Spring
就联合Netflix
搞出了一个Spring Cloud
生态,Netflix
主要技术有5个:eureka、ribbon、feign、zuul和config
。由于Netflix
内部神仙打架,意见不一,然后导致这些技术大部分停更了。这时,阿里又杀出来了,搞出了一套Spring Cloud Alibaba
,Spring
官方看它还不错,阿里也想推广自己,所以在2018年4月份Spring
又把Spring Cloud Alibaba
给收编了。所以对于我们使用者而言,无非就是从 Spring Cloud Netflix
换成 Spring Cloud Alibaba
而已,它很可能成为Spring Cloud
第二代的标准实现,预计Spring Cloud Alibaba
是未来趋势。
Spring Cloud Alibaba能干什么
- 服务的注册与发现
- 服务的降级与限流
- 分布式配置管理
- 消息驱动能力
- 分布式任务调度
- 阿里云对象存储
- 阿里云短信服务
可见, Spring Cloud Netflix
能干的它几乎都能干,还多了一些 Spring Cloud Netflix
不能干的。
Spring Cloud Alibaba组件
分为两类:
- 第一类:阿里巴巴开源组件
阿里巴巴开源组件的命名前缀为spring-cloud-alibaba。
- Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
- Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。默认集成了 Ribbon 的支持。
- RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
- Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
- Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
- 第二类:阿里云产品组件,花钱的,并且会和阿里云平台绑定。
阿里云的产品组件的命名前缀为 spring-cloud-alicloud
- Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。免费替代品:Nacos。
- Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。免费替代品:FastDFS是不错的选择。
- Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。免费替代品:可以使用elastic-job和xxl-job代替。
- Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。免费替代品:短信服务提供商非常多。
阿里巴巴提供的组件跟Spring官方提供对应关系
Alibaba | Netflix |
---|---|
Nacos | Eureka/Consul + Config + Admin |
Sentinel | Hystrix + Dashboard + Turbine |
Dubbo | Ribbon + Feign |
RocketMQ | RabbitMQ |
Schedulerx | Quartz |
SpringCloud Alibaba版本说明
父工程POM
文件引入依赖管理。
<dependencyManagement>
<dependencies>
<dependency>
<!-- spring-cloud-alibaba-->
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<!-- 我的spring boot是2.3.0.RELEASE正常应该对应,但最新的com.alibaba.cloud为2.2.0.RELEASE-->
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
由于 Spring Boot 1.x
和 Spring Boot 2.x
在 Actuator
模块的接口和注解有很大的变更,且 spring-cloud-commons
从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot
版本号一致的版本:
-
spring-cloud-alibaba
1.5.x 版本适用于Spring Boot
1.5.x -
spring-cloud-alibaba
2.0.x 版本适用于Spring Boot
2.0.x -
spring-cloud-alibaba
2.1.x 版本适用于Spring Boot
2.1.x -
spring-cloud-alibaba
2.2.x 版本适用于Spring Boot
2.2.x
缺点
除了哪些不开源的组件之外,缺少网关组件是Spring Cloud Alibaba
不足的另外一个地方,但好在Spring官方社区还有网关组件Spring Cloud Gateway,或者使用开源的网关Soul
(号称Java最好的网关解决方案)。
认知spring-cloud-alibaba之后,我们逐步使用其中组件。