实战Alibaba Sentinel:深度解析微服务高并发流量治理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 熔断降级

假设服务A需要依赖服务B完成客户端的一次请求,那么服务A如果能够感知服务B的状态,在服务B不行的时候不再请求服务B,就能确保服务A自身不会受服务B的影响。如何知道服务B到底行不行呢?

如图1.2所示,假设1秒内向服务B发送230个请求,结果有30个请求发生超时异常或响应异常,根据这个数字就可以预测后续请求也大概率不能被服务B正常处理。服务B已经处理不过来了,那么后续的请求就没有必要再发送了,因为发送出去也会显示异常。

图1.2 熔断降级

当然,服务B不会一直不行,当服务B恢复之后,服务A也应该能感知到,所以熔断需要以一个时长为周期,如1秒。这个周期也被称为时间窗口。每个时间窗口都要重新计算请求总数、异常总数这些指标数据,这样熔断就会在下一个周期自动恢复。

熔断降级的常见降级策略如下。

(1)在每秒请求异常数超过多少时触发熔断降级。

(2)在每秒请求异常错误率超过多少时触发熔断降级。

(3)在每秒请求平均耗时超过多少时触发熔断降级。

提示:请求异常数越多、请求异常错误率越大或请求平均耗时越长,都说明服务的处理能力在下降。