What is SCA
Spring Cloud Alibaba
致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过
Spring Cloud
编程模型轻松使用这些组件来开发分布式应用服务。
依托
Spring Cloud Alibaba
,您只需要添加一些注解和少量配置,就可以将
Spring Cloud
应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。
虽然
Spring Cloud
提供了非常强大的功能,但是它并不提供所有的实现,而是通过
Spring Cloud Common
子项目,定义了统一的抽象
API
。如下图所示:
而后,不同厂商结合其自身的中间件,提供自己的
Spring Cloud
套件,例如说:
1.
Netflix
结合自己的
Eureka
、
Ribbon
、
Hystrix
等开源中间件,实现了
spring-cloud-Netflix
Kubernetes
结合自己的
apiserver
、
configmap
等功能,实现了
spring-cloud-kubernetes
Alibaba
结合自己的
Nacos
、
Dubbo
、
Sentinel
等开源中间件,实现了
spring-cloud-Alibaba
当然,
Spring Cloud
官方还是提供了一些功能的具体实现的,例如说:
1.
API
网关:
Spring Cloud Gateway
2.配置中心:
Spring Cloud Config
3.链路追踪:
Spring Cloud Sleuth
4.消息驱动:
Spring Cloud Stream
5.事件总线:
Spring Cloud Bus
6.服务调用:
Spring Cloud OpenFeign
7.负载均衡:
Spring Cloud Load Balancer
把
Spring Cloud
官方、
Netflix
、
Alibaba
三者整理成如下表格:
Spring Cloud官方Spring Cloud NetflixSpring Cloud Alibaba配置中心Spring Cloud Config
Spring Cloud VaultArchaiusNacos注册中心-EurekaNacos服务调用Spring Cloud OpenFeign
RestTemplate-Dubbo负载均衡Spring Cloud Load BalancerRibbonDubbo服务容错-HystrixSentinelAPI网关Spring Cloud GatewayZuul-消息驱动Spring Cloud Stream RabbitMQ
Spring Cloud Stream Kafka-Spring Cloud Stream RocketMQ事件总线Spring Cloud Bus RabbitMQ
Spring Cloud Bus Kafka-Spring Cloud Bus RocketMQ链路追踪Spring Cloud Sleuth--分布式事务--Seata分布式调度--SchedulerX
二、Spring Cloud Alibaba 套件
Spring Cloud Alibaba
套件,阿里开源组件、阿里云商业组件整合进
Spring Cloud
体系当中,同时对
Spring Cloud Gateway
、
OpenFeign
、
Ribbon
等等进行集成。整体如下图所示:
Spring Cloud Alibaba
套件中的阿里开源组件和阿里云商业组件整理如下对照表:
开源组件阿里云商业组件配置中心NacosACM注册中心NacosANS服务调用Dubbo负载均衡Dubbo服务容错SentinelAHASAPI 网关--消息驱动RocketMQONS事件总线RocketMQONS分布式事务Seata-分布式调度-SchedulerX链路追踪-OSS短信服务-SMS
**目前
Spring Cloud Alibaba
提供了如下功能:**
【1】服务限流降级: 支持
WebServlet
、
WebFlux
、
OpenFeign
、
RestTemplate
、
Dubbo
限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级
Metrics
监控。
【2】服务注册与发现: 适配
Spring Cloud
服务注册与发现标准,默认集成了
Ribbon
的支持。
【3】分布式配置管理: 支持分布式系统中的外部化配置,配置更改时自动刷新。
**【4】
Rpc
服务:** 扩展
Spring Cloud
客户端
RestTemplate
和
OpenFeign
,支持调用
Dubbo RPC
服务
【5】消息驱动能力: 基于
Spring Cloud Stream
为微服务应用构建消息驱动能力。
【6】分布式事务: 使用
@GlobalTransactional
注解, 高效并且对业务零侵入地解决分布式事务问题。
【7】阿里云对象存储: 阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
【8】分布式任务调度: 提供秒级、精准、高可靠、高可用的定时(基于
Cron
表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有
Worker(schedulerx-client)
上执行。
【9】阿里云短信服务: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
三、怎么用
引入
Spring Cloud Alibaba
依赖管理 ,
Spring Cloud Alibaba BOM
包含了它所使用的所有依赖的版本。
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version> 2.2.5.RELEASE </version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
然后在
dependencies
中添加自己所需使用的依赖即可使用。
版本说明:
Spring Cloud Alibaba VersionNacos VersionSentinel VersionRocket MQ VersionDubbo VersionSeata Version2021.1 or 2.2.5 RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.02.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.7.11.2.14.4.02.7.81.3.02.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.1.44.4.02.7.61.2.02.2.0.RELEASE1.7.11.1.44.4.02.7.4.11.0.02.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE1.7.01.1.44.4.02.7.30.9.02.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE1.6.31.1.14.4.02.7.30.7.1
毕业版本依赖关系(推荐使用)
Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot VersionSpring Cloud 2020.0.02021.12.4.2Spring Cloud Hoxton.SR82.2.5.RELEASE2.3.2.RELEASESpring Cloud Greenwich.SR62.1.4.RELEASE2.1.13.RELEASESpring Cloud Hoxton.SR32.2.1.RELEASE2.2.5.RELEASESpring Cloud Hoxton.RELEASE2.2.0.RELEASE2.2.X.RELEASESpring Cloud Greenwich2.1.2.RELEASE2.1.X.RELEASESpring Cloud Finchley2.0.4.RELEASE(停止维护)2.0.X.RELEASESpring Cloud Edgware1.5.1.RELEASE(停止维护)1.5.X.RELEASE
Spring Cloud Alibaba Dubbo
比较重要的特性,使用
Spring Cloud
定义的应用级别的注册模型,将
Dubbo
服务注册到
Spring Cloud
编程模型的注册中心。如此,
Spring Cloud Alibaba Dubbo
又将
Feign
和
RestTemplate
进一步增强,实现对
Spring Cloud Alibaba Dubbo
服务的调用。最终如下图所示:
四、Spring Cloud Alibaba 整合 Dubbo
项目结构
执行
ProviderApplication
来启动服务提供者。可以在
Nacos
可以看到
demo-provider
服务,如下图所示:
执行
ConsumerApplication
来启动服务消费者。可以在
Nacos
可以看到
demo-consumer
服务,如下图所示:
请求
<http://127.0.0.1:8080/user/get?id=1>
接口,返回结果如下:
版权归原作者 程序猿进阶 所有, 如有侵权,请联系我们删除。