流控模式:
直接:
QPS: 每秒钟
线程数:同时处理的请求最大为多少
例子:
并且做接口延时,我这个时候在1秒内快速访问2次,那么第二次就会失败,因为第一个还没有处理完成
关联:
当关联的资源达到阈值时,就限流自己
链路:
a->b->d, a->b->e, a->c->f, a->c->g均可视作链路。
假设我以a为入口资源,d为终点资源,对这条链路进行限制的话,则资源a,b,d均会被限制访问。
连接:
https://blog.csdn.net/qq_31155349/article/details/108478190
Service的一个方法:
在controller中两个接口分别调用这个方法:
配置规则:
流控效果:
直接->快速失败(默认的流控处理):
预热:
默认coldFactor为3,即请求QPS从threshold/3开始,经预热时长逐渐升至设定的QPS阈值
根据codeFactor(冷加载因子,默认为3)的值,从阈值/codeFactor,经过预热时长,才打到设置的QPS的阈值。
如:秒杀系统开启的瞬间,会有很多流量上来,很有可能会把系统打死,预热方式就是为了把系统保护起来, 可慢慢的吧流量放进来,慢慢的把阈值增加到设定的值
默认的codeFactor为3,即请求QPS从(threshold/3)开始,经过多少预热后才逐渐升至设定的QPS的阈值 案例:阈值10+预热时常设置5秒 系统初始化的阈值为10/3约等于3,即阈值刚开始为3,经过了5秒后阈值才慢慢升高到10
应用场景:
如:秒杀系统在开启瞬间,会有很多流量上来,很可能把系统打死,预热方式就是为了保护系统,可慢慢的把流量放进来,慢慢的把阈值增长到设置的阈值。
排队等待:
例子:
当在1秒内快速访问3次,第三次需要等待1秒才行,但是设置的超时时间为500 那么第三次就会失败
如果我修改配置:
那么就是在1秒内快速请求5次 第五次会失败