Sentinel系列 熔断降级

x33g5p2x  于2021-12-21 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(331)

熔断降级

概述

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。
Sentinel的熔断降价98%和hystrix是一样的,唯一的区别在于Sentinel没有半开状态,即出现熔断的时候都不能使用,只有过了设置的时间窗口才能再次使用。

降级策略

Sentinel中包含三种衡量资源是否处于稳定的状态的方式:

平均响应时间(RT)

官方解释:当资源的平均响应时间超过阈值(DegradeRule 中的 count,以 ms 为单位)之后,资源进入准降级状态。接下来如果持续进入 5 个请求,它们的 RT 都持续超过这个阈值,那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回(抛出 DegradeException)。

根据官方的说明,实际的意思是:在1s中请求数大于5且他们的RT 都持续超过这个RT阈值,则会进入服务降级。如果1s内的请求数小于5,即使RT超过设置的阈值,也不会进入服务降级。
注意 Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。

异常比例

官方解释:当资源的每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

异常比例根据官方的解释比较好理解,即,每秒内的请求异常数达到异常的比例值,则进行服务降级。在时间窗口之后恢复服务。

异常数

官方解释:当资源近 1 分钟的异常数目超过阈值之后会进行熔断。

异常数也是比较好理解的:在一分钟异常数超过阈值的时候,服务进入降级状态,这里需要注意的是时间窗口必须大于60s,防止服务一直在降级状态无法恢复。

上一篇:流控规则详解
下一篇:热点参数限流

相关文章