我们打开Sentinel控制台,新增一个降级规则,可以看到有三个维度的降级规则:分别是慢调用比例、异常比例和异常数。
image.png
那么分别代表什么意思呢?可以看一下官网的解释。
image.png
Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时过异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其他的资源而导致级联错误。
当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都会自动熔断(默认行为是抛出DegradeException)
1.慢调用比例
我们先让A接口睡上2秒钟,方便我们测试
再接着新增 一个降级规则
image.png
可以看到我们这个规则的意思是:在1000ms的时间段中,至少有五个请求,并且请求响应时间超过200ms的比例达到了1:1,那么就会触发熔断,熔断时间为3秒钟。
我们同样需要postman来进行多次发送请求。
我设置了20次请求,每0.2秒发送一个(因为要在1秒内达到五个请求才会触发降级)。
image.png
我们在postma循环发送的过程中,再通过浏览器发送请求,就可以看到降级的效果啦。
2.异常比例
由于要发生异常,因此我们新增一个有异常的接口,比如10/0这种。
image.png
接下来我们新增一个降级规则
image.png
我们还是当异常比例达到20%的时候产生触发熔断。
同样使用postman来循环发送请求。
我设置的是发送20个请求,每个请求间隔0.1s,也就是一秒钟10个请求
image.png
我们看一下结果
可以看到异常都是500,而在循环发送请求的期间,我们通过浏览器再访问C看到的就是熔断的效果了。
image.png
可以看到前6的请求返回的都是500异常,而当第七个请求开始返回的就是200了,说明从这开始我们的请求就被熔断了。
3.异常数
异常数就很简单了,当达到指定的异常数阈值时,服务就会发生熔断
我们来修改一下降级规则
image.png
修改好后直接在浏览器点击即可,当第六次就会发生熔断。