主题
概念卡片:Sentinel 熔断限流降级
一句话机制:Sentinel 是流量治理组件——把接口定义成「资源」,挂上「规则」来控制流量:限流(QPS/线程数超阈值就拒)、熔断(异常/慢调用达阈值就断开)、降级(返回兜底),核心概念是「资源 + 规则 + 上下文 + 槽链(责任链)」。
核心概念
| 概念 | 说明 |
|---|---|
| 资源 Resource | 被保护的接口/方法(如 /api/user/query,用 @SentinelResource 标注) |
| 规则 Rule | 流控/熔断/系统保护规则,控制台动态配置 |
| 上下文 Context | 调用来源、API 路径等环境 |
| 槽链 Slot Chain | 责任链模式,逐个处理统计、规则校验 |
熔断降级策略
熔断条件(三选一):
- 慢调用比例:响应时间超阈值且比例达标
- 异常比例:请求异常比例超阈值
- 异常数:单位时间异常数超阈值
熔断三态(状态机):
Closed(正常) ──触发熔断──> Open(直接拒绝)
↑ ↓ 等待冷却
└──── 恢复 ──── Half-Open(放行部分请求探测)三种流量治理动作
| 动作 | 触发 | 行为 |
|---|---|---|
| 限流 | QPS/并发超阈值 | 拒绝或排队 |
| 熔断 | 异常/慢调用达阈值 | 直接拒绝,快速失败 |
| 降级 | 熔断/异常时 | 返回兜底结果(fallback) |
Sentinel vs Hystrix
| Sentinel | Hystrix | |
|---|---|---|
| 状态 | 活跃维护 | 已停止维护(进入维护模式) |
| 功能 | 限流 + 熔断 + 降级 + 热点 + 系统保护 | 主要是熔断降级 |
| 控制台 | 有(实时监控 + 动态规则) | 有(较简陋) |
不变量(必须成立的约束)
- 限流解决「流量超载」,熔断解决「下游故障快速失败」,降级解决「故障时兜底」,三者是不同手段,常组合用。
- 熔断要经过 Closed → Open → Half-Open → Closed 状态机,不能跳过 Half-Open 探测直接恢复。
- 规则可动态调整 + 持久化(默认内存,重启丢失,需配 Nacos 等持久化)。
踩坑案例
- 现象:重启服务后 Sentinel 规则全丢了。 原因:规则默认存内存,重启即失。解决:配置规则持久化(推送到 Nacos 等)。
常见误解
- 以为熔断和降级是一回事 → 熔断是「断开调用快速失败」,降级是「返回兜底结果」,熔断后往往触发降级。
- 以为 Sentinel 只做限流 → 它还做熔断、降级、热点参数限流、系统自适应保护、监控。
关联
- 总览:微服务技术栈总览
- 网关:概念卡片:Gateway网关
- 源:
B40-资源/语雀-Leo的知识库/微服务/01_SpringCloudAlibaba/10_Sentinel(14 篇)