我们在九、springCloudAlibaba-sentinel控制台的使用和统一异常处理测试的是直接流控,现在来看下关联流控是啥意思,如下图配置
上面的配置意思是,假设我们有一个/order/add
资源,一个/order/get
资源,我们给/order/get资源设置流控规则,但是这个流控规则的触发是靠关联的/order/add
资源来控制的,也就是在/order/add
资源访问线程超过1的时候,/order/add
资源没有问题,但是/order/get
资源会被流控。
这样的目的是为了对其它不重要的资源进行限流释放服务器资源来保证重要的资源。测试代码如下
@RequestMapping("/add")
public String add(String id) throws InterruptedException {
Thread.sleep(10000);
return "新增订单成功"+id;
}
@RequestMapping("/get")
public String get(String id) throws InterruptedException {
return "查询订单"+id;
}
这里用线程数的类型来模拟,如果用QPS建议用jmeter等工具来模拟请求,我们先访问/order/add,由于该资源休眠10秒,线程一直被占用,所以导致/order/get资源被限流了。