spring cloud - sentinel

151 阅读3分钟

quick start

sentinel 使用介绍

sentinel 流控规则

概述

控制资源流量

image.png

配置说明

Field说明默认值
resource资源名,资源名是限流规则的作用对象
count限流阀值
grade限流阀值类型:Qps或者线程数模式QPS
limitApp流控针对的调用来源default,代表不区分调用来源
strategy流控模式:直接,关联,链路直接
controlBehavior流控效果:快速失败,warm up ,排队等待直接拒绝

controlBehavior 流控效果

  • 快速失败 : 这个容易理解

  • warm up : 渐进式流控,如下图

单机阀值是指每秒设计只能处理20个请求,如果请求超过20,那么经过10秒的预热后,才会开始每秒接受20个请求,初始接受请求数20/3,其他请求直接抛弃。慢慢的变多,10秒的预热后,才能接受20个

image.png

  • 排队等待: 如下图

    单机阈值是指设定每秒只能处理20条请求,如果超过20条就排队等待,等待超过3000毫秒的,直接抛弃。 image.png

sentinel 降级规则

概述

也称为熔断,当服务不可用时执行快速失败方法,快速释放链接。

image.png

配置说明

  • 慢调用比例 每秒【待确认】内请求超过5,并且有50%的请求返回时间都大于最大RT时间,则触发降级,打开熔断器,熔断窗口期为10S

image.png

  • 异常比例

每秒【待确认】内请求超过5,且50%的请求都抛出异常,则触发熔断,程序降级,熔断时常10S,超过10S恢复 image.png

  • 异常数

每秒【待确认】请求超过5,且异常数大于2,则触发熔断,程序降级,熔断时间10S,超过10S恢复 image.png

sentinel 热点规则

概述

更精细化的控制,如单个接口不同的请求参数对应不同流控。应用场景为热点数据和非热点数据限流

image.png

配置说明

  • 资源名 : 对应@SentinelResource(value = “getProductDetail”) 中的 value 值

  • 参数索引 : 针对该接口的第0个参数

  • 单机阀值 : 非 1 情况下,允许的QPS 就是10【待确定】

  • 参数类型 : 索引位置是0 的参数的类型是int

  • 参数值 : 第0个参数值

  • 限流阀值 : 允许的QPS

  • 统计时间窗口 : 统计的时间单位,一般为1S

sentinel 系统规则

概述

系统规则和热点规则不一样,热点规则是针对方法设定的,系统规则是针对一个应用设定的;

发生系统规则中配置的情况的时候,会把整个应用都断掉,所有的接口对不能对外提供服务了,这个设计很少用,因为粒度太大了,用 Sentinel 一般都是做细粒度的维护,如果设置了系统规则,可能自己都不知道怎么回事,系统就用不了了 image.png

配置说明

  • LOAD:只有在 Linux 系统的机器上才会生效,可以根据当前操作系统的负载,来决定是否触发保护(把请求拒绝掉)

  • RT:这个应用上,所有请求的平均响应时间,如果超过某个值,就停止新的请求

  • 线程数:这个应用上,所有的请求消耗的线程数加起来,如果超过某个值,就停止新的请求

  • 入口 QPS:这个应用上,所有接口的 QPS 加起来,如果超过某个值,就停止新的请求

  • CPU 使用率:CPU 的使用率,如果超过一个百分比,就停止新的请求;

sentinel 授权

概述

设置应用黑白名单,限制应用访问资源

image.png

配置说明

  • resource:资源名,即限流规则的作用对象
  • limitApp:对应的黑名单/白名单,不同 origin 用逗号分隔,如 appA,appB
  • strategy:限制模式,AUTHORITY_WHITE 为白名单模式,AUTHORITY_BLACK 为黑名单模式,默认为白名单模式