1.8 Sentinel熔断降级,熔断状态(OPEN、HALF_OPEN、CLOSED)

ps 官方文档:https://www.cnblogs.com/mrhelloworld/p/sentinel.html

1、下载地址:https://github.com/alibaba/Sentinel/releases根据自己需要下载对应版本,这里以sentinel-dashboard-1.8.0.jar为例

2、上传控制台jar包至linux服务器,启动sentinel控制台命(端口被占用请修改端口):

nohup java -Dserver.port=8081 -Dcsp.sentinel.dashboard.server=localhost:8081 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar &

3、访问后台:http://localhost:8081,用户名、密码默认都为:sentinel,也可在启动命令中自行配置

4.熔断降级

1.8 Sentinel熔断降级,熔断状态(OPEN、HALF_OPEN、CLOSED)_第1张图片

 

Sentinel在1.8.0版本对熔断降级做了大的调整,可以定义任意时长的熔断时间,引入了半开启恢复支持。下面梳理下相关特性

5、熔断状态

熔断有三种状态,分别为OPEN、HALF_OPEN、CLOSED

1.8 Sentinel熔断降级,熔断状态(OPEN、HALF_OPEN、CLOSED)_第2张图片

 

6、熔断策略

熔断降级支持慢调用比例、异常比例、异常数三种熔断策略

先明确下面两个概念:慢调用:指耗时大于阈值RT的请求称为慢调用,阈值RT由用户设置

**最小请求数:**允许通过的最小请求数量,在最小请求数量内不发生熔断,由用户设置

6.1.慢调用比例

 

执行逻辑

熔断(OPEN):请求数大于最小请求数并且慢调用的比率大于比例阈值则发生熔断,熔断时长为用户自定义设置。

探测(HALFOPEN):当熔断过了定义的熔断时长,状态由熔断(OPEN)变为探测(HALFOPEN)。

如果接下来的一个请求小于最大RT,说明慢调用已经恢复,结束熔断,状态由探测(HALF_OPEN)变更为关闭(CLOSED)

如果接下来的一个请求大于最大RT,说明慢调用未恢复,继续熔断,熔断时长保持一致

注意Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项-Dcsp.sentinel.statistic.max.rt=xxx来配置

6.2.异常比例

通过计算异常比例与设置阈值对比的一种策略。

当资源的每秒请求数大于等于最小请求数,并且异常总数占通过量的比例超过比例阈值时,资源进入降级状态。

 

执行逻辑

熔断(OPEN):当请求数大于最小请求并且异常比例大于设置的阈值时触发熔断,熔断时长由用户设置。

探测(HALFOPEN):当超过熔断时长时,由熔断(OPEN)转为探测(HALFOPEN)

如果接下来的一个请求未发生错误,说明应用恢复,结束熔断,状态由探测(HALF_OPEN)变更为关闭(CLOSED)

如果接下来的一个请求继续发生错误,说明应用未恢复,继续熔断,熔断时长保持一致

6.3异常数

通过计算发生异常的请求数与设置阈值对比的一种策略

当资源近1分钟的异常数目超过阈值(异常数)之后会进行服务降级。注意由于统计时间窗口是分钟级别的,若熔断时长小于60s,则结束熔断状态后仍可能再次进入熔断状态。

1.8 Sentinel熔断降级,熔断状态(OPEN、HALF_OPEN、CLOSED)_第3张图片

 

 

执行逻辑

熔断(OPEN):当请求数大于最小请求并且异常数量大于设置的阈值时触发熔断,熔断时长由用户设置。

**探测(HALFOPEN):**当超过熔断时长时,由熔断(OPEN)转为探测(HALFOPEN)

如果接下来的一个请求未发生错误,说明应用恢复,结束熔断,状态由探测(HALF_OPEN)变更为关闭(CLOSED)

如果接下来的一个请求继续发生错误,说明应用未恢复,继续熔断,熔断时长保持一致

7.持久化json规则说明

熔断降级DegradeRule中的属性进行说明

属性说明

resource资源名称

grade降级策略 0:慢调用比例 1:异常比例 2:异常数量

count用户设置的阈值,根据不同的策略分别表示最大RT、异常比例阈值、异常数阈值

timeWindow熔断时长

minRequestAmount最小请求数,默认为5

slowRatioThreshold慢调用比率阈值,默认为1.0

statIntervalMs熔断时长,默认为1秒

四、规则格式示例

1.慢调用策略

[

    {

"count":3000,

"grade":0,

"limitApp":"default",

"minRequestAmount":100,

"resource":"degrade01",

"slowRatioThreshold":0.5,

"statIntervalMs":1000,

"timeWindow":5

    }

]

2.异常比例

{

"count":0.3,

"grade":1,

"limitApp":"default",

"minRequestAmount":200,

"resource":"degrade02",

"slowRatioThreshold":1,

"statIntervalMs":1000,

"timeWindow":5

}

3.异常数

{

"count":1000,

"grade":2,

"limitApp":"default",

"minRequestAmount":300,

"resource":"degrade03",

"slowRatioThreshold":1,

"statIntervalMs":1000,

"timeWindow":5

}



作者:屾来迟
链接:https://www.jianshu.com/p/a80972d95ed6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(1.8 Sentinel熔断降级,熔断状态(OPEN、HALF_OPEN、CLOSED))