SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果

相比于豪猪哥的优点之一:能够在后台服务不重启的情况下动态配置流量访问规则。Sentinel8080监控平台和我们的业务逻辑是分开的。

一,服务限流-三种流控模式

限流规则
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第1张图片
1,流控模式–直接:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第2张图片
**限流表现:当超过阀值,就会被降级。**就是不论你点击多少次,**每秒只能由一个请求是给你通过的。**多的请求就是给你返回默认报错,默认方式为快速失败,就是返回给页面Sentinel自带的请求失败信息

原因:QPS是每秒钟的请求数量,而我们阈值为1,表明每秒请求数量最多为1,且流控模式为直接,流控效果为快速失败( Sentinel有默认快速失败效果,我们也可以自定义)。
后端代码:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第3张图片

如图:每秒点击一次,则正常运行:
在这里插入图片描述
而每秒点击超过阈值,则直接快速失败
在这里插入图片描述

2,流控模式–关联:
例如:如果支付模块达到阈值之后,就限流下订单模块,如下:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第4张图片
**限流表现:**当关联的资源达到阈值时就会限流自己,如:我们配置的访问/testB就有可能限流/testA。而我们的限流效果是快速失败,就是返回给页面Sentinel自带的请求失败信息
后端代码:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第5张图片
测试我们需要使用postman进行并发请求/testB,我们自己在浏览器上请求/testA
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第6张图片
我们在请求/testA,就会发现其被限流了
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第7张图片

3,流控模式–链路:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第8张图片
**限流表现:**然后再发送请求至"host:port/testA"时,如果1秒内请求次数超过1次,就会自动触发限流。此外,通过其他微服务模块请求testA时,如果1秒内请求次数超过1次,同样会触发限流。

二,服务限流-三种流控效果

1,流控效果–预热快速失败:
就是被限流时,返回失败信息到页面:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第9张图片

2,流控效果–预热Warm UP:
默认coldFactor冷加载因子为3,即请求QPS从(请求总数/3)开始,经过我们设置的时间才逐渐升至设定的QPS阈值。

例如:阈值为10+预热时长设置为5秒
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第10张图片

限流效果:系统初始化的阈值为10/3等于3.即阈值刚开始为3.如果刚开始每秒请求数大于3则默认失败。过了5秒后阈值才慢慢升高恢复到10,即5秒后能承受大于3但是仍要小于10的请求,才不会被限流

3,流控效果–排队等待:
在这里插入图片描述
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第11张图片

后端代码:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第12张图片
1使用postman请求/testB进行测试,请求20次,每0.1秒请求一次
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第13张图片
限流效果:
SpringCloud Alibaba Sentinel服务限流-三种流控模式,和流控效果_第14张图片
虽然0.1秒发送过来一个请求,但是我后台不报错,而是把这20个请求积累下来,每秒处理一个请求,一共花费20秒才处理完

你可能感兴趣的:(springcloud,java,nginx,数据库,python,linux)