Spring Cloud Alibaba概述
什么是Spring Cloud Alibaba
◆ 阿里巴巴结合自身微服务实践,开源的微服务全家桶
◆ 在Spring Cloud项目中孵化,很可能成为Spring Cloud第二代的标准实现
◆ 在业界广泛使用,已有很多成功案例
应用场景
- 大型复杂的系统
例如大型电商系统 - 高并发系统
例如大型门户网站,商品秒杀系统 - 需求不明确,且变更很快的系统
例如创业公司业务系统
Spring Cloud Alibaba和Spring Cloud 的区别和联系
SpringCloud Alibaba是SpringCloud的子项目,SpringCloud Alibaba符合SpringCloud标准
比较SpringCloud第一代与SpringCloud Alibaba的优势,如下如:
为什么会出现SpringCloud Alibaba
以下Spring Cloud Netflix模块和相应的starter 将进入维护模式:
- spring-cloud-netflix-archaius
- spring-cloud-netflix-hystrix-contract
- spring-cloud-netflix-hystrix-dashboard
- spring-cloud-netflix-hystrix-stream
- spring-cloud-netflix-hystrix
- spring-cloud-netflix-ribbon
- spring-cloud-netflix-turbine-stream
- spring-cloud-netflix-turbine
- spring-cloud-netflix-zuul
不包括Eureka 或 并发限制模块
什么是维护模式?
将模块置于维护模式意味着Spring Cloud团队将不再向该模块添加新功能。我们将修复block 级别的BUG以及安全性问题,还将考虑并审查社区的小型 pull request。
我们打算继续支持这些模块,知道Greenwich 版本被普片采用至少1年。
进入维护模式意味着
Spring Cloud Netflix 将不再开发新的组件
我们知道Spring Cloud 版本迭代算是比较快的,因而出现了很多中岛的 ISSUE 都来不及 Fix 就又推另一个 Release 了 。进入维护模式意思就是目前已知以后一段时间 Spring Cloud Netflix 提供的服务和功能就这么多了, 不再开发性的组件和功能了。 以后将以维护和 Merge 分支 Full Requset 为主。
新组件将以其他替代方案的实现方式。
- Hystrix => Resilience4j
- Hystrix Dashboard / Turbine => Micrometer + Monitoring System
- Ribbon => Spring Cloud Loadbalancer
- Zuul 1 => Spring Cloud Gateway
- Archaius 1 => Spring Boot external config + Spring Cloud Config
官网:
https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
诞生:
2018.10.31, Spring Cloud Alibaba 正式入驻了 Spring Cloud 官网孵化器,并在 Maven *仓库发布了第一个版本。
Spring-Cloud-Alibaba项目由阿里巴巴的开源组件和多个阿里云产品组成,旨在实现和公开众所周知的Spring框架模式和抽象,为使用阿里巴巴产品的Java开发者带来Spring-Boot和Spring-Cloud的好处。
能做什么
- 服务限流降级:默认支持 Servlet、Feign<br />RestTemplate、Dubbo、和RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级骨子额,还支持查看限流降级 Metrics 控制。
- 服务注册于发现:适配 Spring Cloud 服务注册于发现标准,默认集成 Ribbon 支持
- 分布式配置管理:支持分布式系统中的外部话配置,配置更改时自动刷新。
- 消息驱动能力:基于Spring Cloud Stream 为微服务应用构建消息驱动能力。
- 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用,任何时间、任何低调存储和访问任意类型的数据。
- 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务,网格任务支持海量任务均匀分配到所有 Worker (schedulerx-client) 执行。
组件
- Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
- Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
- Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
- Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
- Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
- Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
- Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
如何使用
如何引入依赖
如果需要使用已发布的版本,在 dependencyManagement 中添加如下配置。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在 dependencies 中添加自己所需使用的依赖即可使用。
版本管理规范
项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。项目处于孵化器阶段时,第一位版本号固定使用 0,即版本号为 0.x.x 的格式。
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
现状
之前spring cloud alibaba 一直处于一个孵化状态。看名字就可以看出来Spring Cloud 有着密切的关系。2019 月 7 月 24 日,Spring 官方宣布 Spring Cloud Alibaba 毕业,仓库迁移至 Alibaba Github OSS 下。这意味着 Spring Cloud Alibaba 是国内首个进入 Spring 社区的开源项目。
- 2018 年 7 月,正式开源,进入孵化器。
- 2018 年 10 月,发布开源后的第一个版本 0.1.0 & 0.2.0 (适配 Spring Cloud Edgware & Finchley ),包含 Nacos Config, Nacos Discovery、 Sentinel 以及 OSS 4 个组件。
- 2018 年 12 月,发布第二个版本 0.1.1 & 0.2.1,新增 Spring Cloud Stream RocketMQ Binder 和 Spring Cloud Bus RocketMQ 组件。
- 2019 年 4 月,发布 Preview Release 版本 0.9.0, 0.1.2 & 0.2.2 (首次适配 * *
- Spring Cloud Greenwich ),新增 Dubbo Spring Cloud、Seata 组件。颠覆性地使用 * Spring Cloud 客户端调用 Dubbo 服务
- 2019 年 7 月,Spring Cloud 官方宣布 Spring Cloud Alibaba 毕业。
- 2019 月 8 月,发布毕业后的第一个版本 1.5.0, 2.0.0 & 2.1.0。新增 spring-cloud-* alibaba-sentinel-gateway 模块以完善 Sentinel 对 Spring Cloud 体系 Gateway 的支持。
推荐阅读
-
SpringCloud之Spring Cloud Stream:消息驱动
-
Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
-
Spring概述学习笔记
-
详解Spring Cloud Eureka多网卡配置总结
-
详解基于Spring Cloud几行配置完成单点登录开发
-
Spring Cloud Alibaba | 序言
-
跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用
-
Spring Cloud Alibaba | Nacos集群部署
-
Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsearch【Finchley 版】
-
[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用