SpringCloud Alibaba——Sentinel服务熔断与限流(四、@SentinelResource注解)

简介: SpringCloud Alibaba——Sentinel服务熔断与限流(四、@SentinelResource注解)

1.开篇


前面的三篇文章分别介绍了sentinel中的流控规则、降级规则、热点规则,那么这篇文章来说一下关于@SentinelResource注解的作用。

在之前学习Hystrix的时候,有一个核心注解是@HystrixCommand,而阿里的sentinel中的@SentinelResource注解可以理解为@HystrixCommand的升级。

2.项目源码


github源码地址:https://github.com/2656307671/SpringCloud-Alibaba-Sentinel

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Alibaba-Sentinel

下面的测试对应了git仓库中的8401模块。前提是nacos启动成功、sentinel启动成功。


2.1 按资源名称限流

首先访问8401模块controller中的 /byResource 请求。需要先访问一次才可以在sentinel中看到它的信息。


接下来在sentinel的簇点链路中可以看到这个请求,我们来新增流控规则。


该配置的意思是:当1秒内byResource请求访问超过1次,则进行限流。这里我在@SentinelResource注解中配置了blockHandler属性,当触发限流之后,不再走sentinel默认的限流机制(Blocked by Sentinel),而是走我们自定义的限流方法(如下图)。


2.2 按URL地址限流

首先访问8401模块controller中的/rateLimit/byUrl 请求。需要先访问一次才可以在sentinel中看到它的信息。


在簇点链路这里可以看到有两个,如果说是按资源名称限流,就选第一个byUrl;如果是按URL地址限流,就选第二个。

这里配置的仍然是QPS超过1则触发限流,但是/rateLimit/byUrl 请求并没有我们自定义的限流方法,所以此时采用的就是sentinel默认的。


经过上面两个案例(按资源名称限流、按URL地址限流),我们会发现一些问题。


1.    系统默认的,没有体现我们自己的业务要求。

2.    依照现有条件,我们自定义的处理方法又和业务代码耦合在一块,不直观。

3.    每个业务方法都添加一个兜底的,那代码膨胀加剧。

4.    全局统一的处理方法没有体现。

这就引出了我们下面的案例,全局统一处理限流方法。


2.3 自定义限流处理逻辑


首先对应8401模块的controller中的/rateLimit/customerBlockHandler 请求,全局统一处理限流方法对应的是 handler 包下的 CustomerBlockHandler 这个类。


开启8401之后,先进行一次 /rateLimit/customerBlockHandler 请求的访问,然后到sentinel中设置它的限流逻辑信息,只要QPS > 1,则触发我们自定义的限流方法。在@SentinelResource注解中就对应着 blockHandlerClassblockHandler 这两个属性,哪个类中的哪个方法是我们定义的全局限流方法。


上面的所有案例主要介绍了 @SentinelResource注解中的valueblockHandlerClassblockHandler 这三个属性,分别对应的就是服务降级限流的相关配置。


下面的文章将介绍服务熔断,也就是@SentinelResource注解中的fallback属性。

相关文章
|
7月前
|
负载均衡 算法 Java
【SpringCloud(4)】OpenFeign客户端:OpenFeign服务绑定;调用服务接口;Feign和OpenFeign
Feign是一个WebService客户端。使用Feign能让编写WebService客户端更加简单。 它的使用方法是定义一个服务接口然后再上面添加注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,十七支持了SpringMVC标准注解和HttpMessageConverters。 Feign可用于Eureka和Ribbon组合使用以支持负载均衡
926 139
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
877 2
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
416 1
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
32588 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
792 3
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
Java API 对象存储
微服务魔法启动!Spring Cloud与Netflix OSS联手,零基础也能创造服务奇迹!
这段内容介绍了如何使用Spring Cloud和Netflix OSS构建微服务架构。首先,基于Spring Boot创建项目并添加Spring Cloud依赖项。接着配置Eureka服务器实现服务发现,然后创建REST控制器作为API入口。为提高服务稳定性,利用Hystrix实现断路器模式。最后,在启动类中启用Eureka客户端功能。此外,还可集成其他Netflix OSS组件以增强系统功能。通过这些步骤,开发者可以更高效地构建稳定且可扩展的微服务系统。
288 2
|
监控 Java Nacos
SpringCloud基础5——微服务保护、Sentinel
sentinel、雪崩问题、流量控制、隔离和降级、授权规则、规则持久化
SpringCloud基础5——微服务保护、Sentinel
WXM
|
存储 缓存 Java