SpringCloud实战三十六:sentinel服务熔断降级

  作者:记性不好的阁主

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次报错后,进入熔断后降级。



相关推荐

评论 抢沙发

表情

分类选择