相比于豪猪哥的优点之一:能够在后台服务不重启的情况下动态配置流量访问规则。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秒请求一次
s-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pwZjE4MTM3NjM2Mzc=,size_16,color_FFFFFF,t_70)
限流效果:
在这里插入图片描述
虽然0.1秒发送过来一个请求,但是我后台不报错,而是把这20个请求积累下来,每秒处理一个请求,一共花费20秒才处理完

GitHub 加速计划 / sentine / Sentinel
22.24 K
7.98 K
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:3 个月前 )
195150bc * fix issue 2485 which occur oom when using async servlet request. * optimize imports * 1. fix the same issue in the webmvc-v6x 2. improve based on review comments 2 个月前
b78b09d3 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐