简介
Sentinel是阿里巴巴开源的一个容错降级组件,其核心的设计思想是定义资源,然后为资源定义规则实现流控和容错降级,本文主要讨论Sentinel的规则配置。
流控规则
流控规则配置的核心类是com.alibaba.csp.sentinel.slots.block.flow.FlowRule
,主要的配置也是按照这个类的属性配置。
属性 | 必须 | 默认值 | 说明 |
---|---|---|---|
resource | 是 | - | 资源名称,表面这个规则对哪个资源生效 |
limitApp | 是 | default | 流控针对的调用来源,default表示不区分来源 |
grade | 是 | 1 | 限流阈值类型,QPS 或线程数模式,1表示QPS模式,0表示线程模式 |
count | 是 | 0 | 一旦配置了resource ,这个流量就必须配置,否则按默认值处理的话,会拦截所有流量 |
strategy | 是 | 0 | 调用关系限流策略:0: 直接、1: 关联、2: 链路 |
controlBehavior | 是 | 0 | 流控效果(0:直接拒绝、1: 慢启动模式、2:排队等待、3: 慢启动+限速模式),不支持按调用关系限流 |
- 直接拒绝:放流量通过,但是直接进入降级逻辑
- 慢启动模式:逐步增加通过流量,给服务端热身时间,达到count的阈值之后,多余的流量进入降级逻辑
- 排队等待:控制流量进入,只能以固定速率进入正常逻辑,不会进入降级逻辑
- 慢启动+限速模式:逐步增加通过流量,给服务端热身时间,达到count的阈值之后,其他请求继续等待,不会进入降级逻n辑
降级规则
降级规则配置的核心类是com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule
。
属性 | 必须 | 默认值 | 说明 |
---|---|---|---|
resource | 是 | - | 资源名称,表面这个规则对哪个资源生效 |
grade | 是 | 0 | 熔断策略,0: 慢调用比例,1:异常比例,2: 异常数 |
count | 是 | 0 | 慢调用比例下表示慢调用阈值,即超过这个值的调用计为慢调用,单位s,异常比例/异常数模式下为对应的阈值 |
timeWindow | 是 | 0 | 熔断时长,单位s |
minRequestAmount | 是 | 5 | 熔断触发的最小请求数,即请求数小于该值则不会进行熔断 |
statIntervalMs | 是 | 1000 | 统计时长,单位ms |
slowRatioThreshold | 是 | 1.0 | 慢调用比例阈值,仅慢调用比例模式有效(1.8.0引入) |