# 6.11 Client Sentinel

# 范式

参考地址 (opens new window)

# SentinelConfig

# 示例

[jupiter.sentinel]
  enable = true
  datasource = "files"
  cbKey = "/wsd-sentinel/go/%s/%s/%s/degrade"
  etcdRawKey = "app.registry.etcd"
[[jupiter.sentinel.cbRules]]
  enable = true
  resource = "recomend"
  strategy = 0
  retryTimeoutMs = 3000
  minRequestAmount = 10
  statIntervalMs = 5000
  maxAllowedRtMs = 1000
  statSlidingWindowBucketCount = 10
  threshold = 0.4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 配置项

sentinel具体字段解析:

  • enable:表示是否开启熔断降级功能,默认为 false
  • datasource: 表示规则来源类型,可选etcd和files,默认是 etcd
  • cbKey:熔断降级etcd的key规则,只在datasource为etcd时有效,默认为/wsd-sentinel/go/%s/%s/%s/degrade
  • etcdRawKey:etcd的配置名,只在datasource为etcd时有效,默认为app.registry.etcd

cbRules具体字段解析:

  • Enable: 表示是否开启此熔断规则。
  • Resource: 熔断器规则生效的埋点资源的名称;
  • Strategy: 熔断策略,目前支持SlowRequestRatio、ErrorRatio、ErrorCount三种;
    1. 选择以慢调用比例 (SlowRequestRatio) 作为阈值,需要设置允许的最大响应时间(MaxAllowedRtMs),请求的响应时间大于该值则统计为慢调用。通过 Threshold 字段设置触发熔断的慢调用比例,取值范围为 [0.0, 1.0]。规则配置后,在单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的最大 RT 则结束熔断,若大于设置的最大 RT 则会再次被熔断。
    2. 选择以错误比例 (ErrorRatio) 作为阈值,需要设置触发熔断的异常比例(Threshold),取值范围为 [0.0, 1.0]。规则配置后,在单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求没有错误则结束熔断,否则会再次被熔断。代码中可以通过 api.TraceError(entry, err) 函数来记录 error。
    3. 选择以错误比例 (ErrorCount) 作为阈值,需要设置触发熔断的异常比例(Threshold),取值范围为 [1, $]。规则配置后,在单位统计时长内请求数目大于设置的最小请求数目,并且异常的次数大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求没有错误则结束熔断,否则会再次被熔断。代码中可以通过 api.TraceError(entry, err) 函数来记录 error。
  • RetryTimeoutMs: 即熔断触发后持续的时间(单位为 ms)。资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。熔断结束后进入探测恢复模式(HALF-OPEN)。
  • MinRequestAmount: 静默数量,如果当前统计周期内对资源的访问数量小于静默数量,那么熔断器就处于静默期。换言之,也就是触发熔断的最小请求数目,若当前统计周期内的请求数小于此值,即使达到熔断条件规则也不会触发。
  • StatIntervalMs: 统计的时间窗口长度(单位为 ms)。
  • MaxAllowedRtMs: 仅对慢调用熔断策略生效,MaxAllowedRtMs 是判断请求是否是慢调用的临界值,也就是如果请求的response time小于或等于MaxAllowedRtMs,那么就不是慢调用;如果response time大于MaxAllowedRtMs,那么当前请求就属于慢调用。
  • Threshold: 对于慢调用熔断策略, Threshold表示是慢调用比例的阈值(小数表示,比如0.1表示10%),也就是如果当前资源的慢调用比例如果高于Threshold,那么熔断器就会断开;否则保持闭合状态。 对于错误比例策略,Threshold表示的是错误比例的阈值(小数表示,比如0.1表示10%)。对于错误数策略,Threshold是错误计数的阈值。