Skip to content

概念卡片:Sentinel 熔断限流降级

一句话机制:Sentinel 是流量治理组件——把接口定义成「资源」,挂上「规则」来控制流量:限流(QPS/线程数超阈值就拒)、熔断(异常/慢调用达阈值就断开)、降级(返回兜底),核心概念是「资源 + 规则 + 上下文 + 槽链(责任链)」。

核心概念

概念说明
资源 Resource被保护的接口/方法(如 /api/user/query,用 @SentinelResource 标注)
规则 Rule流控/熔断/系统保护规则,控制台动态配置
上下文 Context调用来源、API 路径等环境
槽链 Slot Chain责任链模式,逐个处理统计、规则校验

熔断降级策略

熔断条件(三选一):

  • 慢调用比例:响应时间超阈值且比例达标
  • 异常比例:请求异常比例超阈值
  • 异常数:单位时间异常数超阈值

熔断三态(状态机):

Closed(正常) ──触发熔断──> Open(直接拒绝)
   ↑                          ↓ 等待冷却
   └──── 恢复 ──── Half-Open(放行部分请求探测)

三种流量治理动作

动作触发行为
限流QPS/并发超阈值拒绝或排队
熔断异常/慢调用达阈值直接拒绝,快速失败
降级熔断/异常时返回兜底结果(fallback)

Sentinel vs Hystrix

SentinelHystrix
状态活跃维护已停止维护(进入维护模式)
功能限流 + 熔断 + 降级 + 热点 + 系统保护主要是熔断降级
控制台有(实时监控 + 动态规则)有(较简陋)

不变量(必须成立的约束)

  • 限流解决「流量超载」,熔断解决「下游故障快速失败」,降级解决「故障时兜底」,三者是不同手段,常组合用。
  • 熔断要经过 Closed → Open → Half-Open → Closed 状态机,不能跳过 Half-Open 探测直接恢复
  • 规则可动态调整 + 持久化(默认内存,重启丢失,需配 Nacos 等持久化)。

踩坑案例

  • 现象:重启服务后 Sentinel 规则全丢了。 原因:规则默认存内存,重启即失。解决:配置规则持久化(推送到 Nacos 等)。

常见误解

  • 以为熔断和降级是一回事 → 熔断是「断开调用快速失败」,降级是「返回兜底结果」,熔断后往往触发降级。
  • 以为 Sentinel 只做限流 → 它还做熔断、降级、热点参数限流、系统自适应保护、监控。

关联

最近更新