Sentinel 限流熔断组件

zjc 于 2026-08-20 发布

Sentinel 在这套系统里主要守在 Gateway:按接口做 QPS 限流,按客户端 IP 做参数流控,并为路由配置异常比例和慢请求熔断。

一、规则配置化

zjc:
  gateway:
    sentinel:
      enabled: true
      interfaces:
        - name: provider-user-detail
          pattern: /api/[^/]+/provider/user/\d+
          total-qps: 100
          per-ip-qps: 10
          interval-sec: 1

https://github.com/springvortex/spring-cloud-alibaba/blob/release/v1.0.0/service-gateway/src/main/resources/config/application-sentinel.yaml

同一条接口规则同时生成全局 QPS 和单 IP QPS 限制。阈值写在配置里,代码负责装配和校验规则。

二、两种资源不能混

Sentinel Gateway Filter 按“路由 + API 分组”建立资源,用于接口限流;路由熔断由 Reactive CircuitBreaker 单独建立资源。两条链路语义不同,项目里刻意保持分离。

三、拒绝响应要统一

被限流或熔断拒绝时,Gateway 返回统一 JSON 结构,而不是把框架内部信息直接抛给调用方。这样调用方能按稳定错误码处理。

四、避坑点

  1. 单 IP 限流必须确认客户端 IP 来源,不能盲信 X-Forwarded-For
  2. 熔断阈值要有最小请求数,避免低流量时误判。
  3. 限流是保护手段,不能替代容量规划。
  4. 规则越具体越容易失控,先守关键入口,再逐步细化。

五、经验总结

Sentinel 把“流量异常”变成可配置的规则。项目把它放在网关层,先保护系统总入口,再考虑服务内部更细粒度的治理。