我是靠谱客的博主 坦率啤酒,最近开发中收集的这篇文章主要介绍SpringCloud Alibaba——Sentinel服务熔断与限流(三、热点规则)1.开篇2.项目源码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.开篇

何为热点:热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作。

兜底方法,分为系统默认和客户自定义两种:之前的case,限流出问题后,都是用sentinel系统默认的提示:Blocked by Sentinel (flow limiting)

我们能不能自定义类似hystrix,某个方法出问题了,就找对应的兜底降级方法?结论:从 @HystrixCommand 到 @SentinelResource


2.项目源码

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

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

本次做Sentinel测试的代码请参考上面的仓库。对应的是controller中的 testHotKey 请求方法。

首先新增热点规则:????????????

限流模式只支持QPS模式,固定写死了。(这才叫热点)

@SentinelResource注解的方法参数索引,0代表第一个参数p1,1代表第二个参数p2,以此类推。

单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。上面的抓图就是第一个参数有值的话,1秒的QPS为1,超过就限流,限流后调用deal_testHotKey降级方法。

下面我们到浏览器中访问 localhost:8401/testHotKey,后面要加上参数p1,1秒访问1次是不会出问题的,但是1秒内多次刷新访问,就会出现如下图结果,页面信息为testHotKey方法的降级方法中的内容。

由于在testHotKey方法中,参数p1、p2都不是必须的。

如果请求url为:localhost:8401/testHotKey?p1=a,则1秒内多次访问会触发降级。

如果请求url为:localhost:8401/testHotKey?p2=b,则1秒内多次访问不会触发降级,因为我们定义的热点规则参数索引是0,是针对p1的。

如果请求url为:localhost:8401/testHotKey?p1=a&p2=b,则1秒内多次访问会触发降级。只要参数包含p1都符合热点规则。

下面再来说一下参数例外项。

普通情况:当访问url中包含p1的请求超过1秒钟1个之后,达到阈值1后马上被限流。

特例情况:我们期望p1参数当它是某个特殊值时,它的限流值和平时不—样。假如当p1的值等于5时,它的阈值可以达到200。

则需要在热点规则中进行如下配置:????????????

上图的意思是说,热点规则面对的参数仍然是索引0(p1),如果说p1的值为5,则满足参数例外项,此时阈值达到200,也就是说此时1秒内访问达到200次才会触发降级。所以下面在浏览器中访问,就可以得到testHotKey方法的返回值了。

如果说p1的值不是5,那么它的阈值仍然是上面的1,只要1秒内超过1次的访问,则直接触发降级。

最后

以上就是坦率啤酒为你收集整理的SpringCloud Alibaba——Sentinel服务熔断与限流(三、热点规则)1.开篇2.项目源码的全部内容,希望文章能够帮你解决SpringCloud Alibaba——Sentinel服务熔断与限流(三、热点规则)1.开篇2.项目源码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部