其他分享
首页 > 其他分享> > SpringCloud-Alibaba之SentinelResource注解

SpringCloud-Alibaba之SentinelResource注解

作者:互联网

前言

在前一篇文章中,我们介绍了如何使用Sentinel的Api进行限流降级,但我们发现实现起来比较麻烦,而且重复代码非常多;今天老顾就介绍一下@SentinelResource注解,如何利用此注解简化代码。

自定义资源

用注解方式定义资源,其实非常简单,在需要通过Sentinel来控制流量的地方使用@SentinelResource注解,比如下面以控制请求入口的某个方法为例:image

到这里一个需要被保护的方法就定义完成了,非常简单吧;下面我们分别说说,定义了资源点之后,我们如何实现不同的保护策略,包括:限流、降级等。

在定义了资源点之后,我们就可以通过Dashboard来设置限流和降级策略来对资源点进行保护了。同时,也可以通过@SentinelResource来指定出现限流和降级时候的异常处理策略。下面,就来一起分别看看限流和降级都是如何实现的。

实现限流控制

启动应用,启动Sentinel-Dashboard。发一个请求到/test-sentinel-resource接口上,使得Sentinel-Dashboard上可以在簇点链路上看到定义的资源:图片

对资源设置流控规则image

快速请求http://localhost/test-sentinel-resource?a=1,超过流控阀值,发现服务器报了流量异常

image
表明了流控起到了效果。

实现限流的异常处理

默认情况下,Sentinel对控制资源的限流处理是直接抛出异常,也就是上面贴出的日志内容。在没有合理的业务承接或者前端对接情况下可以这样,但是正常情况为了更好的用户业务,都会实现一些被限流之后的特殊处理,我们不希望展示一个生硬的报错。那么只需要基于上面的例子做一些加工,比如:图片

上面的代码,主要做了两件事:

完成上面的改动之后,再尝试访问接口(注意限流规则需要配置好),此时前端就不会返回异常信息了,后端会打印blockHandler中定义的日志输出。而在实际应用的时候,只要根据业务需要对限流请求做缓存或者前端提示等都可以基于此方法来实现。

image

实现熔断降级

@SentinelResource注解除了可以用来做限流控制之外,还能实现与Hystrix类似的熔断降级策略。下面就来具体看看如何使用吧。

上面的案例代码,如果不传参数a,就会报异常;正好可以测试降级

我们来配置一下降级策略image

快速刷新请求http://localhost/test-sentinel-resource,服务器报了降级异常image

不过我们在前端,发现返回是限流了image

这个代表了降级策略,也会进入定义的blockHandler方法。但如果我们要区分出降级的异常,降级的处理方式需要另外处理,可以利用fallback属性

熔断的降级处理

在Sentinel中定义熔断的降级处理方法非常简单,与Hystrix非常相似。只需要使用@SentinelResource注解的fallback属性来指定具体的方法名即可。这里也需要注意传参与返回必须一致。比如:

image

请求接口不传参数a,就会返回降级image

更多注解属性说明

总结

blockHandler 和 fallback 都进行了配置,则被限流降级而抛出 BlockException 时只会进入 blockHandler 处理逻辑。若未配置 blockHandler、fallback 和 defaultFallback,则被限流降级时会将 BlockException 直接抛出。

从 1.4.0 版本开始,注解方式定义资源支持自动统计业务异常,无需手动调用 Tracer.trace(ex) 来记录业务异常。Sentinel 1.4.0 以前的版本需要自行调用 Tracer.trace(ex) 来记录业务异常。

老顾

如果喜欢本文,可以关注我们的官方账号,第一时间获取资讯。
你的关注是对我们更新最大的动力哦~

今日福利(点击下方文字超链接获取)



最后在出来放一波福利吧!希望可以帮助到大家!

戳此获取免费学习资料

千千万万要记得:多刷题!!多刷题!!

之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

image

(2)刷的算法题(还有左神的算法笔记)

image

(3)面经+真题解析+对应的相关笔记(很全面)

image

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

image

其实以上我所分享的所有东西,有需要的话我这边可以免费分享给大家,但请一定记住获取方式:点击这里前往免费获取

)]

其实以上我所分享的所有东西,有需要的话我这边可以免费分享给大家,但请一定记住获取方式:点击这里前往免费获取

在这里,最后只一句话:祝大家offer拿到手软!!

标签:blockHandler,降级,函数,SpringCloud,SentinelResource,Alibaba,限流,fallback,异常
来源: https://blog.csdn.net/m0_56259669/article/details/117884883