9. Alibaba Sentinel 熔断策略之异常比例

1. 概念解释

熔断策略异常比例是以请求异常数量的比例作为阈值,当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且异常请求数的比例大于比例阈值,则接下来的请求会自动熔断,熔断时间为设置的熔断时长。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若在HALF-OPEN状态下有一个请求正常响应 则结束熔断,否则继续熔断。

具体设置如下图:

字段说明表格

字段名说明
资源名访问的请求路径
熔断策略熔断规则配置后,进行熔断的方式策略,本文主要分析异常比例
比例阈值统计时长内异常请求数和总请求数的比例,是触发熔断的其中一个条件
熔断时长当条件满足后需要进行熔断的熔断时长,单位:秒
最小请求数在统计时长的时间内,请求数要大于该值,才会判断异常请求比例是否大于比例阈值, 所以最小请求数是触发熔断的另外一个条件
统计时长触发熔断需要统计请求数的时长,单位:毫秒

帮助理解图

2. 案例演示

首先我们需要添加一个控制器,这个控制器中的调用资源方法中会抛出异常,方便被Sentinel标记成异常请求, 同时支持没有异常请求,isException=false时

@GetMapping("/testA")
public String testA(boolean isException) {
    if(isException) {
        throw new RuntimeException("request exception");
    }
    return "-----testA - ";
}

设置熔断规则

上面的熔断规则表示说: 访问/testA资源时,如果在1000毫秒内,请求数量超过5,并且这些数量中异常的请求数量的比例超过0.3则熔断10秒,10秒后进入半开状态,如果半开状态中有一个请求没有异常,则取消熔断,否则继续熔断

3. 理论实践

为了展示效果

  1. 我们要支持在同一个资源上支持有异常请求(参数isException=true)和无异常请求(isException=false)
    慢调用地址http://127.0.0.1:8401/testA?isSlow=true
    非慢调用地址http://127.0.0.1:8401/testA?isSlow=false
  2. 在JMeter中开启10个线程同时请求有异常地址,并启动JMeter
  3. 这时候,/testA资源会进入一个10秒的熔断时长。 我们在这个时间内就算请求无异常地址,也是熔断状态

  4. 测试完以上情况后,停止JMeter,在10秒后再次请求有异常地址,那么会继续熔断

  5. 测试完以上情况后,停止JMeter,那么会在10秒后请求无异常地址自动取消熔断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值