本文列举了应用防护规则常见的问题。

  1. 请求链路页面添加规则是给单台机器添加还是给所有机器都添加?

    添加规则会推送到所有机器。

  2. 流控规则中的来源应用是什么意思?

    Sentinel支持按调用来源限流。流控规则中来源应用(针对应用)指的是调用该资源的调用方标识,例如在Dubbo中就对应Dubbo Consumer的应用名称。默认来源应用设为default,代表不区分来源应用。

  3. 流控规则中的每种流控模式是什么意思?

    • 直接:直接按照当前资源的调用来源进行限流,若来源为default则不区分调用来源。
    • 关联:当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联。关联限流会根据当前资源的关联资源进行限流。

      比如read_db和write_db这两个资源分别代表数据库读写,我们可以给read_db设置限流规则来达到写优先的目的:设置关联资源为write_db。这样当写库操作过于频繁时,读数据的请求会被限流。

    • 链路:根据调用链路入口限流。需要在规则中配置入口资源,即该调用链路入口的上下文名称。
  4. 流控规则中的每种流控方式是什么意思?

    • 快速失败:达到阈值时,立即拦截请求。
    • Warm Up:当流量突然增大的时候,希望系统从空闲状态到繁忙状态的切换的时间长一些,即如果系统在此之前长期处于空闲的状态,希望处理请求的速率缓慢增加,经过预期的时间以后,到达系统处理请求速率的设定值;默认会从配置QPS阈值的1/3开始慢慢往上增加QPS。
    • 排队等待:请求匀速通过,允许排队等待,通常用于消息队列削峰填谷等场景。比如配置了QPS为5,则代表请求每200 ms才能通过一个,多出的请求将排队等待通过。超时时间代表最大排队时间,超出最大排队时间的请求将会直接被拒绝。注意排队等待模式下QPS不要超过1000(请求间隔1 ms)。
  5. 降级规则中的RT模式、异常比例模式是什么意思?

    Sentinel熔断降级支持两种策略:

    • RT:按照秒级的平均响应时间进行降级,单位是毫秒。如果持续进入5个请求,对应的平均RT都持续超过降级阈值,则会被自动降级。
    • 异常比例:按照秒级的异常比例进行降级。当资源的每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态。

    资源进入降级状态后,在配置的降级窗口时间内,请求都会快速失败。

  6. 什么是系统保护规则?

    系统保护规则可以从系统指标维度(入口QPS、RT、线程数、Load等)来进行流量控制,让系统尽可能跑在最大吞吐量水位的同时保证系统整体的稳定性。系统保护规则是整体维度的而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量,比如Web服务或Dubbo服务端接收的请求,都属于入口流量。

    系统规则支持的种类有以下几种:

    • 系统Loadload1):按照系统load1以及实时的吞吐量进行流量控制。
    • 总体平均RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护。
    • 总体QPS:当单台机器上所有入口流量的QPS达到阈值即触发系统保护。
    • 总体线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。

    对于一个应用来说,每种相同的系统保护规则最多只能存在一条。