跳到主要内容

流量控制与熔断降级

流量控制限制接口的请求速率,熔断降级在后端持续异常时快速失败,避免故障扩散。两类规则都基于 Sentinel 在网关执行,按环境隔离,并动态下发到网关,无需重启。

入口​

安全管理 → 流控规则,页面包含四个页签:

页签作用
流量控制QPS 限流规则
熔断降级慢调用、异常比例、异常数熔断
接口缓存响应缓存规则,见接口缓存
IP 访问控制IP 黑白名单,见 IP 访问控制与 WAF

流量控制​

列表字段​

列说明
规则ID限流规则编号
规则名称便于识别的名称
QPS阈值每秒允许通过的请求数
关联API已绑定该规则的接口数量
创建人规则创建者
修改时间最近更新时间

列表支持按规则名称、创建人和环境筛选。

新建限流规则​

  1. 进入「流量控制」页签;
  2. 点击「新建」;
  3. 选择所属环境。环境创建后不可修改;
  4. 填写规则名称;
  5. 填写 QPS 阈值,即每秒允许的最大请求数;
  6. 保存后点击规则的「关联」,选择需要限流的接口。

关联接口按环境隔离:规则只能关联同一环境下的接口。规则创建后需关联接口才会生效。

执行逻辑​

  • 网关以 路由 ID 作为 Sentinel 资源标识,一个接口在某个环境下的发布快照对应一个资源;
  • 限流阈值按 1 秒统计窗口生效,只支持 QPS 模式;
  • 超过阈值时返回 HTTP 429,响应体业务码为 40429,提示“客户端请求频次过高,接口已被限流”;
  • 被限流的请求会写入调用日志,并标记为失败;
  • 规则写入 Redis,管理端变更后通过事件增量刷新网关规则快照,多实例部署下保持一致。

熔断降级​

三种熔断策略​

策略degradeType触发条件关键参数
慢调用比例0慢调用占比超过阈值最大响应时间(RT)、比例阈值、时间窗口、最少请求数、熔断时长
异常比例1异常请求占比超过阈值比例阈值(0.0–1.0)、时间窗口、最少请求数、熔断时长
异常数2时间窗口内异常数超过阈值异常数阈值、时间窗口、最少请求数、熔断时长

新建熔断规则​

  1. 进入「熔断降级」页签;
  2. 点击「新建」;
  3. 选择所属环境并填写规则名称;
  4. 选择熔断策略,页面会按策略显示对应字段;
  5. 填写阈值:
    • 慢调用比例:最大响应时间(毫秒)与比例阈值(0.0–1.0);
    • 异常比例:比例阈值(0.0–1.0);
    • 异常数:时间窗口内的异常次数;
  6. 填写时间窗口(秒)、最少请求数、熔断时长(秒);
  7. 保存后关联接口。

最少请求数用于避免小样本误判:时间窗口内请求数不足时不会触发熔断。

执行逻辑​

  • 熔断触发后返回 HTTP 503,业务码 40503,提示“当前服务异常,接口已被熔断”;
  • 熔断时长结束后进入半开状态,由 Sentinel 按放行结果决定恢复或继续熔断;
  • 熔断规则与限流规则可以同时关联同一接口,请求先经过限流判断,再由熔断器判断;
  • 规则变更通过 Redis 事件增量刷新,网关无需重启;规则缓存设有过期时间,管理端异常时不会永久保留过期规则。

规则生效范围与优先级​

  • 限流与熔断都作用在接口 + 环境维度,不区分调用方应用;
  • 未关联任何规则的接口不受流控影响;
  • 规则只对关联时所在环境的流量生效,切换环境后需要重新关联;
  • 网关的管理后台路由不经过开放接口流控。

运维建议​

场景建议
接口被突发流量打满先设置略高于正常峰值的 QPS,再观察日志逐步收紧
下游偶发超时使用慢调用比例熔断,RT 阈值取 P99 附近
下游持续报错使用异常比例或异常数熔断,配合告警规则
规则不生效检查环境、关联 API 数量、网关是否收到规则刷新事件
限流误伤正常调用确认 QPS 单位是“每秒”,并区分环境配置

与其他治理能力的关系​

  • 告警规则:可对超时、HTTP 状态码、错误率、连续失败配置告警,见告警规则与记录;
  • 接口缓存:缓存命中可减少下游压力,但被限流的请求不会进入缓存判断;
  • IP 访问控制:IP 拦截发生在认证前后,与流控相互独立;
  • 配额:订阅配额按应用维度按天限制调用量,与接口级 QPS 限流叠加生效。