1、配置RT降级
示意图:
testD接口
@GetMapping("/testD")
public String testD(){
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(1);
}catch (InterruptedException e){
e.printStackTrace();
}
return "-----testD";
}
说明:
永远一秒钟打进来10个线程(大于5个了)调用 testD,我们希望200毫秒处理完本次任务,
如果超过200毫秒还没处理完,在未来1秒钟的时间窗口内,断路器打开(保险丝跳闸)微服务不可用,保险丝跳闸断电了
后续我停止 jmeter,没有这么大的访问量了,断路器关闭(保险丝恢复,微服务恢复OK
2、异常比例
示意图:
testD接口:
@GetMapping("/testD")
public String testD(){
//暂停几秒钟线程
// try {
// TimeUnit.SECONDS.sleep(1);
// }catch (InterruptedException e){
// e.printStackTrace();
// }
int 10 / 0;
return "-----testD";
}
说明:
按照上述配置,
单独访问一次,必然来一次报错一次( int age=10/0),调一次错一次;
异常比例( DEGRADE GRADE EXCEPTION RATIO):当资源的每秒请求量>=5,并且每秒异常总数占通
过量的比值超过阈值( DegradeRule中的 count)之后,资源进入降级状态,即在接下的时间窗口
( DegradeRule中的 timewindow,以s为单位)之内,对这个方法的调用都会自动地返回。异常
比率的阈值范围是[0.0,1.0],代表0%-100%。
开启 jmeter后,直接高并发发送请求,多次调用达到我们的配置条件了。
断路器开启(保险丝跳闱闸),微服务不可用了,不再报错eror而是服务降级了。
3、异常数
示意图:
注意:
异常数( DEGRADE GRADE EXCEPTION COUNT):当资源近1分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若 timewindow小于60s,则结束熔断状态后仍可能再进入熔断状态。
时间窗口一定要大于等于60秒。
说明:
http://localhost:8401/testD第一次访问绝对报错,因为除数不能为零,
我们看到err窗口,但是一分钟内达到5次报错后,进入熔断后降级。