下载jar包双击安装:
在浏览器打开控制面板:
流控模式(直接)设置:
对/testA的url进行限流设置:
阈值类型——QPS单机阈值设置:
流控模式(直接)演示:
此时QPS大于1时,此时的请求返回:
阈值类型——线程数单机阈值设置:
当调用该api的线程数达到阈值的时候,就进行限流。
自己的理解,tomcat多个线程,当线程在处理时,又来了新的任务,此时就会触发线程数单机阈值。
流控模式(关联):
当与A关联的资源B达到阈值后,就限流A自己(支付接口达到阈值后就限流下单的接口)
对/testB的访问达到阈值(设置的QPS为1)将会导致/testA接口无法访问。
流控模式(关联)演示:
使用POSTMAN间隔300ms访问/testB
这过程中去访问/testA,此时
流控效果:
上面的演示都是基于快速失败的演示,效果是直接失败,抛出异常。
源码参考: com.alibaba.csp.sentinel.slots.block.flow.controller.DefaultController类
流控效果——预热:
coldFactor为3,即请求QOS从threshold/3开始,经预热时长逐渐升至设置的QPS阈值。
以上面的设置举例: coldFactor为3,即请求QOS从10/3开始,经过5s预热时长逐渐升至设置的QPS阈值10。应用场景:秒杀系统。
warm up相当于令牌桶算法,排队等待相当于漏桶算法
流控效果——排队等待:
匀速排队,严格控制请求通过的间隔时间,也就是让请求以均匀的速度通过,对应的是漏斗算法。
处理间隔性的突发流量,希望系统在空闲期间主键处理这些突发增加的请求,而不是在第一时间直接拒绝多余的请求。
test A2021-10-31T16:52:20.482
test A2021-10-31T16:52:21.482
test A2021-10-31T16:52:22.481
test A2021-10-31T16:52:23.482
test A2021-10-31T16:52:24.482
test A2021-10-31T16:52:25.481
test A2021-10-31T16:52:26.481
test A2021-10-31T16:52:27.481
test A2021-10-31T16:52:28.482
test A2021-10-31T16:52:29.481