Sentinel 流控

流控规则基本介绍:
Sentinel 流控

  • 资源名:唯一名称,默认请求路径

  • 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)

  • 阈值类型/单机阈值:

    1. QPS(每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流
    2. 线程数:当调用该api的线程数达到阈值的时候,进行限流
  • 是否集群:(不)需要集群

  • 流控模式:

    1. 直接:api达到限流条件时,直接限流
    2. 关联:当关联的资源达到阈值时,就限流自己
    3. 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)
  • 流控效果:

    1. 快速失败:直接失败,抛异常
    2. Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。
    3. 排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS。否则无效。

流控模式——直接 快速失败
QPS:
Sentinel 流控
每秒内请求超过1次报错,这就是限流了。
Sentinel 流控
线程数:
Sentinel 流控
当调用该api的线程数达到阈值的时候,进行限流

流控模式——关联 快速失败
Sentinel 流控
当有大量并发请求打到B上,A就限流自己。

流控效果——Warm Up

Warm Up方式,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过“冷启动”,让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
Sentinel 流控
默认coldFactor为3,即请求QPS从threshold / 3开始,经预热时长逐渐升至设定的QPS阈值。
秒杀系统在开启的瞬间,会有很多流量进来,很有可能把系统打死,预热方式就是为了保护系统,可慢慢的把流量放进来,慢慢的把阈值增长到设置的阈值。
流控效果——排队等待
Sentinel 流控
Sentinel 流控