Sentinel速览
一、核心介绍 🔴
1、是什么?
Sentinel 是面向分布式、微服务架构的流量控制、熔断降级、系统自适应保护轻量级防护组件。
2、解决什么问题?
-
解决高并发流量冲击,防止服务被打挂;
-
解决服务调用雪崩、下游故障连环卡死;
-
解决恶意刷接口、高频单点参数攻击;
-
保障服务集群稳定性、容错性。
3、核心优势(对比Hystrix)
-
轻量、低延迟、高性能;
-
实时监控 + 可视化控制台;
-
规则动态推送、实时生效;
-
功能齐全:限流、熔断、热点、授权、系统保护;
-
Hystrix停止维护,Sentinel国内唯一主流。
二、三大核心基础概念 🔴
1、资源 Resource
Sentinel管控的最小单元,接口、方法、代码段都叫资源。
标记资源方式:@SentinelResource、URL接口、硬编码 SphU.entry()
2、规则 Rule
给资源配置的防护策略,五大规则:流量、熔断、热点、授权、系统。
3、Slot责任链(底层核心)
Sentinel底层采用责任链模式,一串Slot依次校验:
责任链顺序:统计簇点 -> 限流 -> 熔断 -> 热点 -> 系统防护
一句话:所有判断全部通过,才允许放行请求。
三、五大规则 🔴
1、流量控制规则 FlowRule(最常用)
1.1 限流阈值类型
-
QPS:每秒请求数(接口限流)
-
并发线程数:同时活跃线程数(防止接口卡死、阻塞堆积)
1.2 流控模式(面试高频)
-
直接限流:对当前资源直接限制;
-
关联限流:关联接口流量大,限流当前接口(保护核心接口);
-
链路限流:只限制指定调用链入口,其他入口不拦截(精准限流)。
1.3 流控效果
-
快速失败:超出阈值直接报错;
-
预热排队:冷启动、缓慢抬升流量(秒杀防冲击);
-
匀速排队:固定间隔放行,削峰填谷。
2、熔断降级规则 DegradeRule 🔴
2.1 三种熔断策略 🔴
-
慢调用比例:超时时间自定义,超过耗时的请求比例达到阈值,熔断;
-
异常比例:抛出异常请求占比超标,熔断;
-
异常数:单位时间异常次数达到阈值,熔断。
2.2 熔断三状态(面试必考)
-
关闭 Closed:正常通行;
-
打开 Open:直接拒绝,走降级;
-
半开 Half-Open:恢复时间到,放行少量请求探测,成功恢复、失败继续熔断。
3、热点参数限流 ParamFlowRule
针对请求参数限流,专门防:单点刷爆、热门商品、恶意用户。
示例:限制同一个userId 1秒最多访问5次。
4、授权规则 AuthorityRule
黑白名单,基于origin请求来源判定:
-
白名单:仅允许指定微服务/IP访问;
-
黑名单:直接拦截恶意IP、恶意服务。
5、系统规则 SystemRule
服务器全局层面保护,不针对接口:
- CPU使用率、负载、全局QPS、最大线程、入口RT。
四、底层核心原理 🔴
1、滑动时间窗口
Sentinel 所有统计基于滑动时间窗口,而非固定窗口。
默认:1秒切分为2个窗口,每格500ms;
优点:避免临界流量突刺,统计平滑、精准,不会出现瞬间流量暴增。
2、底层数据结构
采用 CircularArray 环形数组 存储每秒请求数据,高性能、无锁、轻量化。
3、责任链Slot执行流程
-
进入资源;
-
簇点统计Slot(记录QPS、异常、耗时);
-
限流Slot判断;
-
熔断Slot判断;
-
热点、系统规则校验;
-
全部通过执行业务,失败直接抛异常。
五、注解使用 + 两种兜底区别 🟠
1、@SentinelResource 完整注解代码
|
|
2、两大兜底严格区别 🔴
-
blockHandler:只拦截Sentinel规则(限流、黑名单),不抓业务异常;
-
fallback:拦截业务异常、超时、熔断,不处理单纯限流。
六、Gateway整合Sentinel
1、使用位置
网关层做全局流量防护,所有微服务统一拦截。
2、支持限流方式
-
路由维度限流;
-
URL路径限流;
-
IP黑名单限流;
-
请求头、请求参数限流。
3、生产优势
入口拦截,不穿透到业务服务,性能最好、防护最强。
七、持久化规则(生产必须配置)
默认控制台配置重启丢失,生产必须整合Nacos持久化。
流程:控制台推送规则 -> Nacos存储 -> 服务监听动态拉取,永久保存。
八、生产常见坑点 🔴
-
没有兜底方法:直接返回报错页面,用户体验差;
-
限流熔断分不清:block和fallback乱用;
-
热点限流不生效:必须指定参数索引、基础阈值;
-
网关+服务双重限流:重复拦截,逻辑混乱;
-
未配置持久化:重启规则全部丢失;
-
线程数限流误用:IO阻塞接口适合线程数限流,普通接口用QPS。
九、Sentinel vs Hystrix 🔴
| 对比项 | Sentinel | Hystrix |
|---|---|---|
| 维护状态 | 持续更新 | 停止维护 |
| 控制台 | 可视化、中文、监控详细 | 简陋、监控弱 |
| 限流能力 | 强大(QPS、热点、链路) | 仅线程池隔离 |
| 熔断策略 | 3种策略 | 异常比例 |
| 性能 | 轻量、高性能 | 较重、线程池开销大 |
十、总结 🔴
Sentinel是阿里轻量级流量防护组件,底层采用责任链+滑动时间窗口做高性能统计;
包含流量限流、熔断降级、热点参数、授权黑白名单、系统保护五大规则;
限流分为QPS和线程数,流控模式有直接、关联、链路;
熔断包含慢调用、异常比例、异常数三种策略,存在关闭、打开、半开三种状态;
通过@SentinelResource标记资源,区分block限流兜底和fallback异常降级;
支持Nacos规则持久化,可整合Gateway做网关层限流,国内微服务目前主流首选。