Sentinel 流控界面
流控规则.png-
流控模式:
- 直接:api达到限流条件时,直接限流
- 关联:当关联的资源达到阈值时,就限流自己
- 链路:只记录指定链路上的流量(指资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】
-
资源名:唯一名称,默认请求路径
-
QPS (每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流
-
线程数:当调用该 api 的线程数达到阈值的时候,进行限流
流控模式---直接(默认)---阈值类型[QPS]
其他请求被挡在外面.png阈值类型 QPS,访问被挡在外面
- 新增流控规则
新增流控(QPS).png表示1秒钟内访问1次就OK,若超过1次,就直接-快速失败,报默认错误
测试正常结果.png 测试流量结果.png如果快速点击访问,就会直接报错,因为1秒内超过了1次。
- 随时修改流控规则,随时生效。
流控模式---直接(默认)---阈值类型[线程数]
其他请求放进来,但是处理线程有限若当前线程没有处理完当前请求,再次来一个请求就会直接报错
-
新增流控规则
新增流控(并发线程数) - 控制层处理程序睡眠一秒,
@GetMapping(value = "/testA")
public String testA(){
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "testA";
}
- 测试,访问
image.png image.png若当前线程没有处理完当前请求,再次来一个请求就会直接报错
流控模式---关联--阈值类型[QPS]
当关联的资源 /testB达到阈值后,就限流 /testA
简单来说就是:B惹事,A挂了
比如就是说:支付接口达到阈值时,就限流下订单的接口
-
新建流控规则
阈值类型阈值类型[QPS] -
测试,持续访问 /testB 使之达到QPS阈值,同时去访问 /testA 发现被限流
测试结果
流控模式---关联--阈值类型[线程数]
-
新建流控规则
阈值类型[并发线程数] -
使用同理方法:让处理程序睡眠一秒
@RestController
public class FlowLimitController {
@GetMapping(value = "/testA")
public String testA(){
return "testA";
}
@GetMapping(value = "/testB")
public String testB(){
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "testB";
}
}
-
测试,持续访问 /testB 使之达到QPS阈值,同时去访问 /testA 发现被限流
测试结果
流控模式---链路--阈值类型[QPS]
-
新建流控规则
阈值类型阈值类型[QPS]
流控模式---链路--阈值类型[并发线程数]
-
新建流控规则
阈值类型阈值类型[并发线程数]
网友评论