springcloudalibaba官网,Springalibaba

http://www.itjxue.com  2023-01-04 15:41  来源:未知  点击次数: 

关于Spring Cloud Alibaba,看这篇文章就够了!(附教程资料)

首先我们需要了解一下Spring Cloud,然后再来了解Spring Cloud Alibaba;

源自官方描述:

Spring Cloud为开发人员提供了一些工具用来快速构建分布式系统中的一些常见模式和解决一些常见问题(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态)。分布式系统的协调导致了很多样板式的代码(很多固定套路的代码),使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地运行,包括开发人员自己的笔记本电脑、裸机数据中心和云计算等托管平台;

Spring Cloud为分布式系统开发的典型应用场景提供良好的开箱即用的功能:

Spring Cloud Alibaba是Spring Cloud下的一个子项目,Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案,它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序,使用Spring Cloud Alibaba,您只需要添加一些注解和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统;

Spring Cloud Alibaba 是阿里巴巴开源中间件跟 Spring Cloud 体系的融合:

动力节点的Spring Cloud Alibaba学习教程,将带你深入掌握基于Spring Cloud Alibaba技术栈的微服务开发技术,包括nacos、sentinel、seata、gateway、skywalking等,培养独立进行企业微服务项目架构的能力;

Spring Cloud Alibaba视频教程

Spring Cloud Alibaba资料下载

?001.视频导读

?002.Spring家族产品梳理

?003.What is Spring-Cloud-Alibaba?

?004.Nacos运行环境部署

?005.向Nacos注册中心注册服务

?006.从Nacos发现服务并负载均衡调用

?007.从Nacos发现服务并负载均衡调用

?008.Nacos客户端信息缓存

?009.Nacos客户端信息缓存

?010.Nacos Config配置中心启动读取外部配置

?011.Nacos Config配置中心自动刷新

?012.Nacos Config配置中心yaml配置

?013.Nacos Config配置中心多环境配置

?014.问答交流

?015.内容回顾-配置中心数据模型

?016.配置中心三层结构数据配置隔离

?017.配置中心三层结构数据配置隔离

?018.配置版本回滚-服务注册分组

?019.Nacos管控台用户权限管理

?020.Nacos数据持久化

?021.Nacos数据持久化

?022.Nacos集群环境部署

?023.Nacos集群环境测试

?024.Nacos集群统一入口Nginx

?025.快速回顾

?026.RestTemplate无参数Get调用返回String

?027.RestTemplate无参数Get调用返回User

?028.RestTemplate有参数Get调用返回User

?029.RestTemplate有参数Get调用返回User

?030.RestTemplate有参数Post调用返回User

?031.RestTemplate有参数Post调用返回User

?032.RestTemplate传输User对象参数Post调用返回User

?033.RestTemplate传输JSON参数Post调用返回User

?034.RestTemplate有参数Put调用

?035.RestTemplate有参数Delete调用

?036.RestTemplate方法调用梳理总结

?037.RestTemplate结合Ribbon实现负载均衡

?038.RestTemplate结合Ribbon实现负载均衡

?039.Ribbon负载均衡实现策略

?040.自定义Ribbon负载均衡实现策略

?041.更改Ribbon负载均衡实现策略

?042.Ribbon的核心接口组成

?043.Ribbon负载均衡策略个性化配置

?044.Ribbon结合Nacos实现权重负载均衡策略

?045.Ribbon结合Nacos负载均衡策优先调用同名集群

?046.Ribbon结合Nacos基于版本负载均衡策略

?047.Ribbon结合Nacos基于命名空间负载均衡策略

?048.What is Feign?

?049.Spring Cloud Alibaba基于Feign的远程调用

?050.Spring Cloud Alibaba基于Feign+Ribbon负载均衡远程调用

?051.Spring Cloud Alibaba基于Feign的相关配置

?052.脱离Ribbon的Feign的远程调用

?054.微服务的级联故障服务雪崩

?055.Spring Cloud Alibaba集成Sentinel

?056.Spring Cloud Alibaba基于Sentinel管理后台数据测试

?057.Spring Cloud Alibaba基于Sentinel实现限流

?058.Spring Cloud Alibaba基于Sentinel实现限流自定义返回结果

?059.Spring Cloud Alibaba基于Sentinel实现限流自定义跳转页面

?060.Spring Cloud Alibaba基于Sentinel线程数限流

?061.Spring Cloud Alibaba基于Sentinel资源关联限流

?062.Spring Cloud Alibaba基于Sentinel流控规则和流控效果

?063.问答交流

?064.快速回顾和演示环境预备

?065.Spring Cloud Alibaba Sentinel 服务降级RT

?066.Spring Cloud Alibaba Sentinel 服务降级异常比例和异常数

?067.Spring Cloud Alibaba Sentinel 热点参数规则

?068.Spring Cloud Alibaba Sentinel 热点参数规则小细节

?069.Spring Cloud Alibaba Sentinel 系统保护规则

?070.Spring Cloud Alibaba Sentinel 授权规则

?071.Spring Cloud Alibaba Sentinel Dashboard控制台通信原理

?072.Spring Cloud Alibaba Sentinel 对Controller请求url埋点

?073.Spring Cloud Alibaba Sentinel 手写代码实现埋点

?074.Spring Cloud Alibaba Sentinel 采用注解实现埋点

?075.Spring Cloud Alibaba Sentinel 对RestTemplate流控和熔断

?076.Spring Cloud Alibaba Sentinel 对Feign流控和熔断

?077.问答交流

?078.Sentinel规则持久化-拉模式持久化到本地文件

?079.Sentinel规则持久化-拉模式持久化到本地文件

?080.Sentinel规则持久化-推模式持久化到Nacos

?081.Sentinel规则持久化-推模式持久化到Nacos

?082.Spring Cloud Gateway 网关功能特性

?083.Spring Cloud Gateway 网关搭建

?084.Spring Cloud Gateway 网关服务调用

?085.Spring Cloud Gateway 网关谓词

?086.Spring Cloud Gateway 网关谓词

?087.Spring Cloud Gateway 网关谓词

?088.Spring Cloud Gateway 网关过滤器

?089.Spring Cloud Gateway 问答交流

?090.Spring Cloud Gateway自定义谓词

?091.Spring Cloud Gateway自定义谓词

?092.Spring Cloud Gateway自定义谓词不匹配404页面

?093.Spring Cloud Gateway自定义过滤器

?094.Spring Cloud Gateway全局过滤器

?095.Spring Cloud Gateway自定义全局过滤器

?096.Spring Cloud Gateway集成Ribbon实现负载均衡

?097.Spring Cloud Gateway集成Sentinel限流

?098.Spring Cloud Gateway集成Sentinel限流自定义错误页

?099.Spring Cloud Gateway集成Sentinel规则持久化到文件

?100.Spring Cloud Gateway集成Sentinel规则持久化到Nacos

?101.Spring Cloud Gateway内部执行流程源码分析

?102.Spring Cloud Gateway小结

?103.快速回顾

?104.Spring Cloud Gateway跨域CORS请求

?105.Spring Cloud Gateway跨域CORS请求

?106.What is SkyWalking?

?107.Skywalking运行环境部署

?108.SkyWalking Agent对微服务的链路追踪

?109.SkyWalking Agent对微服务链路追踪

?110.SkyWalking Agent加入IDEA中对微服务链路追踪

?111.SkyWalking 监控告警通知

?112.SkyWalking 监控告警通知

?113.SkyWalking 微服务链路追踪数据持久化MySQL

?114.SkyWalking 问答交流

?115.Skywalking持久化跟踪数据elasticsearch

?116.Skywalking持久化跟踪数据elasticsearch

?117.Skywalking对多个跨服务的链路跟踪

?118.Skywalking对多个跨服务的链路跟踪

?119.Skywalking自定义链路跟踪

?120.Skywalking集成logback输出traceId日志

?121.Skywalking UI界面-仪表盘

?122.Skywalking UI界面-拓扑图-追踪-性能剖析-告警

?123.Skywalking 基于nacos集群

?124.Skywalking 基于nacos集群

?125.Skywalking 基于nacos集群

?126.Skywalking 问答交流

?127.What is Seata?

?128.Seata分布式事务生命周期

?129.Seata TC Server运行环境部署

?130.Seata基于AT事务模式单体应用多数据源分布式事务

?131.Seata基于AT事务模式单体应用多数据源分布式事务

?132.Seata基于AT事务模式单体应用多数据源分布式事务

?133.Seata基于AT事务模式多个微服务分布式事务

?134.Seata基于AT事务模式多个微服务分布式事务

?135.Seata基于AT事务模式多个微服务分布式事务

?136.Seata基于AT事务模式执行机制

?137.Seata AT事务模式

?138.Seata AT事务模式写数据隔离

?139.Seata AT事务模式写数据隔离

?140.Seata AT事务模式读数据隔离

?141.Seata AT事务模式读数据隔离

?142.Seata TC Server集群环境部署

?143.Seata TC Server集群环境部署

?144.Seata TC Server集群环境集成测试

?145.Seata TC Server集群环境集成测试

?146.Seata TCC事务模式的运行机制

?147.Seata TCC事务模式SpringBoot单体应用案例

?148.Seata TCC事务模式SpringBoot单体应用案例

?149.Seata TCC事务模式SpringCloudAlibab微服务应用案例

?150.Seata TCC事务模式SpringCloudAlibab微服务应用案例

?151.What is Spring Cloud Stream

?152.Spring Cloud Stream的核心概念

?153.Spring Cloud Stream集成RocketMQ配置

?154.Spring Cloud Stream集成RocketMQ发送消息

?155.Spring Cloud Stream集成RocketMQ接收消息

?156.Spring Cloud Stream集成RocketMQ监听接收消息

?157.Spring Cloud Stream集成RocketMQ多种发送消息方式

?158.Spring Cloud Stream Starter代码分析

?159.Spring Cloud Stream集成RocketMQ发送事务消息

?160.Spring Cloud Stream集成RocketMQ对象标签消息

?161.Spring Cloud Stream问答交流

SpringCloud Alibaba 实战,来自尚硅谷电商项目理解

电商项目常见解决技术搭配方案:

SpringCloud Alibaba --nacos:注册中心

SpringCloud Alibaba --nacos:配置中心

SpringCloud --Ribbon:负载均衡

SpringCloud Alibaba --Sentinel:服务容错(限流、降级、熔断)

SpringCloud --Gateway:API网关(webflux编程模式)

SpringCloud --Sleuth(调用链监控)

SpringCloud Alibaba --Seata:分布式事务解决方案

作用:因为都会用到springcloud alibaba,所以将 放到公共服务中,统一管理版本

Nacos 文档地址:

Nacos 下载地址:

第一步:在需要注册到nacos的服务pom文件中添加相应的nacos依赖

作用:将我们的服务注册到注册中心中,同时也可以从注册中心中发现其他服务

第二步:将 Nacos 服务器地址配置添加到 /src/main/resources/application.properties 文件中,

给当前服务命名

第三步:使用@EnableDiscoveryClient 注解开启服务注册和发现

启动 Nacos 服务器

下载 Nacos Server下载页面

将下载的文件解压,进入nacos/bin文件夹(),并根据操作系统的实际情况

Linux/Unix/Mac , 执行 sh startup.sh -m standalone

Windows , 执行 cmd startup.cmd

查询服务

用户名和密码默认都是nacos

如:member会员服务需要调用coupon优惠券服务的方法

1.在member服务和coupon服务的pom文件中引入feign依赖

2.开启feign功能,在member服务上开启

@FeignClient("gulimall-coupon"):其中gulimall-coupon为nacos注册的被调用的服务名,@RequestMapping("/coupon/coupon/member/list")路径为gulimall-coupon服务中membercoupons()方法的调用全路径(添加上controller上的请求路径)

对应的在gulimall-coupon服务中有membercoupons()方法的具体实现

第一步:引入 Nacos Config 进行配置管理

第二步:在需要管理配置的服务下,添加bootstrap.properties

第三步:需要给配置中心添加数据集(Data Id)gulimall-coupon.properties

第四步:给 应用名.properties 添加任何配置

第五步:在需要读取配置的类上添加注解@RefreshScope,实时刷新获取配置文件内容

@RefreshScope:动态获取并刷新配置

@Value("${配置项的名}")

细节部分:

1.命名空间:主要用来做配置隔离

默认是public(保留空间);默认新增的所有配置都在public空间

a:开发、测试、生产:利用命名空间来做环境隔离

b:每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2.配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配

置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级

别等配置项。

3.配置集ID

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组

织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有

意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名

规则保证全局唯一性。此命名规则非强制。

4.配置组

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或

Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个

配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置

分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置好

MQ_topic 配置。

加载多配置文件:

官方文档:

项目地址:

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,

从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

什么是熔断降级

除了流量控制以外,降低调用链路中的不稳定资源也是关键 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。

Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如

如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,

避免影响到其它的资源而导致级联故障。

熔断降级设计理念

在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。

Hystrix 通过 线程池隔离 的方式,来对依赖(在 Sentinel 的概念中对应 资源)进行了隔

离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成

本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。

Sentinel 对这个问题采取了两种手段

a.通过并发线程数进行限制

b.通过响应时间对资源进行降级

步骤:

1、引入依赖

2、使用 Nacos 注册中心

3、定义 fallback 实现

在服务消费者中,实现 feign 远程接口,接口的实现方法即为调用错误的容错方法

4、定义 fallbackfactory 并放在容器中

5、改造 fallback 类接受异常并实现容错方法

6、远程接口配置 feign 客户端容错

7、开启 sentinel 代理 feign 功能;在 application.properties 中配置

测试熔断效果。当远程服务出现问题,会自动调用回调方法返回默认数据。

springcloudalibaba什么时候支持springboot3

关于springcloudalibaba什么时候支持springboot3相关资料如下

各位小伙伴们,复工第一天,DD祝大家新年快乐!这个新年真的是好好休息了一下,文章也没有更,新闻也没怎么看。所以,新年第一篇就先带大家一起回顾下春节期间的一些新动态。从Spring官方信息看,这几天主要发布了Spring Cloud 2022.0.0-M1、Spring Tools 4.13.1、Spring Shell 2.1.0-M2。

关注DD的小伙伴应该都跟我一样,对Spring Cloud更为关注,所以这里就一起看看这个版本都发布了些啥吧。

1月27日,Spring官方宣布 Spring Cloud 2022.0.0-M1 (Kilburn) 发布。该版本为兼容Spring Boot 3的第一个Spring Cloud里程碑版本。

由于Spring Cloud是基于Spring Boot之上的项目,所以它与之前发布的Spring Boot 3.0.0-M1有着类似的兼容特性,比如:使用Spring Framework 6.0.0-M2、需要Java 17、使用Jakarta EE等。

关于Spring Boot的基础兼容内容这里就不赘述的,有兴趣的小伙伴可以看之前Spring Boot 3.0.0-M1的发布内容,下面我们一起具体看看Spring Cloud家族中有哪些重要变化:

Spring Cloud CloudFoundry和CLI从发布系列中移除

Spring Cloud Commons:OAuth集成已经从过时的Spring Security OAuth迁移到Spring Security中的OAuth2支持

Spring Cloud Kubernetes:移除@ConditionalOnKubernetesEnabled,取代它的是@ConditionalOnCloudPlatform

Spring Cloud Task:Spring Cloud Task3.0.0-M1主要是为了与Spring Boot 3.0.0-M1的框架版本对齐

Spring Cloud Contract:目前还是Spring Cloud的2022.0.0-M1版本的一部分。它将是M2发布的一部分。

Spring Cloud Netflix:目前还不是Spring Cloud的2022.0.0-M1版本的一部分。等Eureka有JakartaEE兼容的时候,它将成为未来版本的一部分。

软件更新丨Spring Cloud Alibaba发布第二个版本,Spring发来贺电

还是熟悉的面孔,还是熟悉的味道,不同的是,这次的 配方升级 了。

时隔 51天,Spencer Gibb再次在Spring官网的博客页面宣布:Spring Cloud Alibaba发布了其开源后的 第二个版本0.2.1 ,随后,Spring Cloud 官方Twitter也转发了此消息。圣诞节的前一周,Josh Long向他的老朋友许晓斌发来贺电:

视频地址:

一、新版本概要

Spring Cloud Alibaba RocketMQ

Spring Cloud Alibaba SchedulerX

Spring Cloud Alibaba Nacos Config

Spring Cloud Alibaba Nacos Discovery

Spring Cloud Alibaba Sentinel

二、新版本背后的思考

Spring Cloud Alibaba Nacos Discovery

Nacos Discovery 在这个版本最大的更新就是支持在初始化的时候不使用本地文件缓存,目前初始化的时候已经默认不使用本地文件缓存。

为什么要有缓存?首先我们来了解一下本地缓存的概念,为什么需要这个本地缓存?

我们都知道,服务注册与发现应该只是服务调用中的辅助性的一个环节,而不是一个关键的环节。一个良好的服务注册与发现的设计,需要保证以下两点。

要实现以上两点,缓存就不可或缺,而为了适应不同的场景,缓存又可以分成内存缓存和本地文件缓存,他们的概念和适用场景如下。

内存中的缓存

将服务提供者列表维护在内存中,每次调用时直接从内存中的列表获取节点即可。内存缓存通过定时任务更新,或者在收到服务注册中心的推送之后再更新。确保了即使在服务注册中心宕机的情况下,也能保证服务仍能正常调用。

本地文件缓存

将上述提到的内存中的缓存,保留在本地的某个文件中,这样在调用服务注册中心失败的时候,可以从本机的文件缓存中获取服务提供者列表。这样就保证了在服务注册中心宕机的情况下,应用在重启后也能找到服务提供者。

为什么要关闭

有了以上背景知识后,读者可能会有疑问,既然缓存这么好,你们为什么默认要把它置为默认关闭呢?

我们在发布出第一个版本之后,很多用户反馈,为什么我服务下线之后还是有节点,仍旧可以被查询到呢?这样导致我这个监控数据完全不准,你们这个有 bug,完全不对。其实这是阿里巴巴在多年业务积累的经验,对于服务发现来说,一个即使是已经过时的节点,也比没有任何数据好。而且还有可能其实这个服务只是和服务注册中心失去了心跳,但是应用本身是正常的。

当然,这也暴露了我们设计中存在的一些问题,没有把服务发现本身,以及缓存的分层给做好,两者糅合在一块。所以在这一次的版本更新中我们还是选择适配开源标准,默认关闭了本地文件缓存,留了一个开关给用户自由选择。

Spring Cloud Alibaba Nacos Config

Nacos Config 在这个版本中有两个大的特性,支持了“共享配置”,修正了动态刷新的语义和行为。

共享配置的实现

在第一个版本还没发布到时候,社区里对配置管理中心的讨论就没停止过,其中听到最多的反馈应该就是支持多个应用共享一个配置。我们也通过 github issue 的方式,征集了很多意见,详情见 #12 , #141。

后来我们将这个模型抽象了一下,认清这些需求本质是一个应用可以从多个 DataID 和 GroupID 组合中获取配置,并且这些配置还可以单独指定优先级和是否动态刷新。

最后我们推荐了这种使用方式,既保证了使用场景的灵活性,又保证了业务语义的明确性。更多详情可以参考 WIKI。

注意 data-id 的值必须带文件扩展名,文件扩展名支持 properties、yaml 和 yml。通过这种自定义扩展的配置项,既可以支持一个应用从多个配置项中获取数据,也解决多个应用间配置共享的问题。

头脑风暴,@fudali 同学还提出了更加灵活的一种方式 #161,就是可以通过一个配置项来配置所有的 DataID 的信息,然后可以通过修改这个配置项,可以修改整体配置项的逻辑。

这是一个非常好的想法,只不过这一期中我们没有实现,原因是这种方式太灵活了。我们认为配置管理其实是一件很严肃的事情,太灵活导致生产中变更比较不可控。

虽然目前的逻辑也可以支持这种用法,但是我们并没有把这种模式当做推荐模式,后续如果社区有更多的反馈认为这是一个强烈的需求,欢迎提 PR。

动态刷新的修正

简单好用、实时可监控的动态刷新也许是 Nacos Config 相对于其他开源中间件相比最核心的优势了,不同于 Spring Cloud Config Server 必须使用 Spring Cloud Bus 才能实现动态刷新,Nacos Config 无需依赖其他任何中间件就可以实现实时动态刷新,而且推送成功与否和刷新 历史 还支持实时查询。

但是我们发现在第一个版本中的实现发现两个问题:

在这个版本中,我们修复了这两个问题。

首先,动态刷新不再是直接去调用 ContextRefresher.refresh() 方法,而是 publish 了一个 RefreshEvent,让 spring-cloud-commons 里的 RefreshEventListener 去触发这个 ContextRefresher.refresh() 方法。

其次,我们修正了动态刷新的语义后,这一次是真正做到了,只有 refresh 属性为 true 的配置项,才会在运行的过程中变更为新的值,refresh 属性为 false 的配置项再也不用担心应用在运行的过程中发生莫名其妙的变更了。

更深入一点,在上个月 SpringOne Tour 中,我们和 Spring Cloud 的创始人 Spencer 聊到 Spring Cloud 的 Context.refresh() 成本太高,会刷新整个 Spring Context。他反复强调了两次 Context.refresh() 只对 @RefreshScope 和 @ConfigurationProperties 有效,成本一点也不高。

之前我们接收到很多社区的反馈都是 Nacos Config 动态刷新支不支持 xxxx,支不支持 xxxx。之前我们都是回答只支持 @RefreshScope 和 @ConfigurationProperties ,如果他内置没有支持,那就得自己加上相应的注解。

今天我们可以很愉快地回复,他监听了 RefreshEvent 也能直接支持。而且如果添加 @RefreshScope 和 @ConfigurationProperties 都不满足你的需求时,可以通过实现自己的 RefreshEventListener 更多高级的玩法。

Spring Cloud Alibaba Sentinel

Sentinel 在这个版本中有三个大的特性:全面支持 FeignClient ,完善了 RestTemplate 的支持,添加了热点限流、集群限流。

FeignClient 集成 Sentinel

其实在这之前,Sentinel 支持 FeignClient 已经设计了很久了,之前我们的想法做一个兼容性较强的方案,支持 Sentinel 和 Hystrix 在 FeignClient 中同时使用,尽量做到对原有应用的侵入性做到最小。

这个方案我们也思考调研了很久,但是实现难度确实比较大,需要修改 FeignClient 的代码才能实现两者共存。正好前段时间在 Spring Cloud 届最大的新闻就是 Hystrix 宣布不在维护了,于是我们就换了一个思路,直接使用 Sentinel 替代 Hystrix,不再去追求支持两者共存。

我们实现了自己的 Feign.Builder,在构建的 FeignClient 执行调用的过程中,通过 SentinelInvocationHandler 完成 Sentinel 的流量统计和保护的动作。如果想使用 Sentinel 为 FeignClient 限流降级,首先需要引入 sentinel-starter 的依赖,然后打开 Sentinel 限流降级的开关 feign.sentinel.enabled=true ,就完成了 Sentinel 的接入。如果需要使用更加定制化的功能,则需要在 @FeignClient 添加 fallback 和 configuration 这些属性的配置。

注意 @FeignClient 注解中的所有属性,Sentinel 都做了兼容。

RestTemplate 集成 Sentinel

Spring Cloud Alibaba Sentinel 支持对 RestTemplate 的服务调用使用 Sentinel 进行保护,补全了 Hystrix 这一块的空白。接入的方式也不复杂,在构造 RestTemplate bean 的时候需要加上 @SentinelRestTemplate 注解,然后在控制台配置相应的规则即可。

在触发了限流降级时,默认的处理方式是返回 RestTemplate request block by sentinel 信息。

RestTemplate 的限流降级 ?Sentinel 也承包了!

热点参数限流和集群限流

首先解释一下什么是热点参数限流和集群限流。

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

集群流控主要解决的问题是:当我们需要控制整个集群流量总量,但是单机流量可能会不均匀,如果是单机维度去限制的话会无法精确地限制总体流量,因此需要引入集群维度的流量控制。

Sentinel v1.4.0 的 新功能 ,也能第一时间愉快地在 Spring Cloud Alibaba 上使用了。

三、新组件

Spring Cloud Alibaba RocketMQ

Spring Cloud Stream 是一个用于构建基于消息的微服务应用框架,它基于 SpringBoot 来创建具有生产级别的单机 Spring 应用,并且使用 Spring Integration 与 Broker 进行连接。它提供了消息中间件的统一抽象,推出了 publish-subscribe、consumer groups、partition 这些统一的概念。

RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。具有以下特点:能够保证严格的消息顺序、提供丰富的消息拉取模式、高效的订阅者水平扩展能力、实时的消息订阅机制、亿级消息堆积能力。

在这次的 Spring Cloud Stream Binder RocketMQ 的实现中,我们适配了 Spring Cloud Stream 对于 message 抽象的 API,支持了 RocketMQ 的事务消息。消息订阅时支持以 tags、SQL 表达式过滤消息,同时还支持顺序、并发、延迟以及广播消费模式。

Spring Cloud Alibaba SchedulerX

SchedulerX 是阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务,同时提供分布式的任务执行模型,如网格任务,网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

简单易用的轻量分布式任务调度

您不需要关心调度逻辑,只需要在在 JobProcessor 接口的实现中添加业务逻辑即可,然后在自主运维控制台配置上一个 Job 即可完成使用。

高可用的分布式任务

不管是 SchedulerX 服务端还是客户端都是分布式架构设计,任务可以在多台客户端机器里的任何一台机器执行,如果客户端出现宕机的情况,服务端会自动选择正常运行的客户端去执行 Job,每个 Job 在服务端的不同机器均有备份,SchedulerX 服务端任意宕掉部分机器仍能保证 Job 正常调度。

友好的用户界面

SchedulerX 提供了非常友好的页面方便您创建、删除或修改 Job,提供了立即触发执行一次的功能,方便您测试以及关键时刻手动立即执行一次,还提供了 历史 执行记录查询的功能,您可以看到任何一个 Job 过去 100 次的 历史 执行记录。

功能强大

提供了秒级、精准的定时任务调度服务,且提供了丰富的任务执行模型,包括单机执行,广播执行,以及子任务的分布式执行。

四、What's Next?

Spring Cloud Alibaba Cloud SLS 针对日志类数据的一站式服务,在阿?巴巴集团经历大量大数据场景锤炼?成。您?需开发就能快捷地完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立 DT 时代海量日志处理能力。

Spring Cloud Alibaba Dubbo Dubbo 是一款流行的开源 RPC 框架,我们会把 Dubbo 整合到 Spring Cloud Alibaba 中,让大家在开发 Dubbo 时也能享受到 Spring Cloud 带来的便利。

致谢

Spring Cloud Alibaba 从开源建设以来,受到了很多社区同学的关注。社区的每一个 issue ,每一个 PR,都是对整个项目的帮助,都在为建设更好用的 Spring Cloud 添砖加瓦。

↓↓↓

(责任编辑:IT教学网)

更多

推荐HTML/Xhtml文章