Sentinel流控规则-流控模式

2021-09-06  本文已影响0人  CodeYang

Sentinel 流控界面

官方流量控制地址

流控规则.png

流控模式---直接(默认)---阈值类型[QPS]

阈值类型 QPS,访问被挡在外面

其他请求被挡在外面.png
  1. 新增流控规则

表示1秒钟内访问1次就OK,若超过1次,就直接-快速失败,报默认错误

新增流控(QPS).png
  1. 测试,访问:http://localhost:8401/testA

如果快速点击访问,就会直接报错,因为1秒内超过了1次。

测试正常结果.png 测试流量结果.png
  1. 随时修改流控规则,随时生效。

流控模式---直接(默认)---阈值类型[线程数]

若当前线程没有处理完当前请求,再次来一个请求就会直接报错

其他请求放进来,但是处理线程有限
  1. 新增流控规则


    新增流控(并发线程数)
  2. 控制层处理程序睡眠一秒,
 @GetMapping(value = "/testA")
    public String testA(){
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "testA";
    }
  1. 测试,访问

若当前线程没有处理完当前请求,再次来一个请求就会直接报错

image.png image.png

流控模式---关联--阈值类型[QPS]

当关联的资源 /testB达到阈值后,就限流 /testA
简单来说就是:B惹事,A挂了

比如就是说:支付接口达到阈值时,就限流下订单的接口

  1. 新建流控规则


    阈值类型阈值类型[QPS]
  2. 测试,持续访问 /testB 使之达到QPS阈值,同时去访问 /testA 发现被限流


    测试结果

流控模式---关联--阈值类型[线程数]

  1. 新建流控规则


    阈值类型[并发线程数]
  2. 使用同理方法:让处理程序睡眠一秒

@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";
    }
}
  1. 测试,持续访问 /testB 使之达到QPS阈值,同时去访问 /testA 发现被限流


    测试结果

流控模式---链路--阈值类型[QPS]

  1. 新建流控规则


    阈值类型阈值类型[QPS]

流控模式---链路--阈值类型[并发线程数]

  1. 新建流控规则


    阈值类型阈值类型[并发线程数]
上一篇 下一篇

猜你喜欢

热点阅读