SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果
相比于豪猪哥的优点之一:能够在后台服务不重启的情况下动态配置流量访问规则。Sentinel8080监控平台和我们的业务逻辑是分开的。
一,服务限流-三种流控模式
限流规则
1,流控模式–直接:
**限流表现:当超过阀值,就会被降级。**就是不论你点击多少次,**每秒只能由一个请求是给你通过的。**多的请求就是给你返回默认报错,默认方式为快速失败,就是返回给页面Sentinel自带的请求失败信息。
原因:QPS是每秒钟的请求数量,而我们阈值为1,表明每秒请求数量最多为1,且流控模式为直接,流控效果为快速失败( Sentinel有默认快速失败效果,我们也可以自定义)。
后端代码:
如图:每秒点击一次,则正常运行:
而每秒点击超过阈值,则直接快速失败
2,流控模式–关联:
例如:如果支付模块达到阈值之后,就限流下订单模块,如下:
**限流表现:**当关联的资源达到阈值时就会限流自己,如:我们配置的访问/testB就有可能限流/testA。而我们的限流效果是快速失败,就是返回给页面Sentinel自带的请求失败信息
后端代码:
测试我们需要使用postman进行并发请求/testB,我们自己在浏览器上请求/testA
我们在请求/testA,就会发现其被限流了
3,流控模式–链路:
**限流表现:**然后再发送请求至"host:port/testA"时,如果1秒内请求次数超过1次,就会自动触发限流。此外,通过其他微服务模块请求testA时,如果1秒内请求次数超过1次,同样会触发限流。
二,服务限流-三种流控效果
1,流控效果–预热快速失败:
就是被限流时,返回失败信息到页面:
2,流控效果–预热Warm UP:
默认coldFactor冷加载因子为3,即请求QPS从(请求总数/3)开始,经过我们设置的时间才逐渐升至设定的QPS阈值。
例如:阈值为10+预热时长设置为5秒
限流效果:系统初始化的阈值为10/3等于3.即阈值刚开始为3.如果刚开始每秒请求数大于3则默认失败。过了5秒后阈值才慢慢升高恢复到10,即5秒后能承受大于3但是仍要小于10的请求,才不会被限流
3,流控效果–排队等待:
后端代码:
1使用postman请求/testB进行测试,请求20次,每0.1秒请求一次
限流效果:
虽然0.1秒发送过来一个请求,但是我后台不报错,而是把这20个请求积累下来,每秒处理一个请求,一共花费20秒才处理完
更多推荐
所有评论(0)