Sentinel通过QPS和线程数两种阈值控制、直接/关联/链路三种流控模式及快速失败/预热/匀速排队三种效果,在流量到达业务逻辑前实时拦截整形,结合滑动窗口与插槽链机制实现毫秒级流控。

Sentinel 通过流控规则在流量真正打到业务逻辑前就进行拦截和整形,把不可控的突发流量转化成系统能平稳处理的节奏,从而避免线程堆积、资源耗尽、响应延迟飙升甚至服务宕机。
核心是两种阈值控制方式
流控规则主要依据两个关键指标做实时判断:
- QPS(每秒请求数)限流:适用于接口级防护。比如将 /order/create 接口设为 QPS=50,超过的请求直接拒绝,防止瞬时万级下单压垮订单服务。
- 并发线程数限流:更贴近底层资源消耗。当某个接口正在处理的线程数达到阈值(如20),新请求就会被阻断,避免 Tomcat 线程池被占满,导致其他接口也无法响应。
三种流控模式适配不同依赖关系
不只是“自己扛不住”,还要考虑调用链路中的协作关系:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 直接限流:最常用,资源自身 QPS 或线程数超阈值就触发。
- 关联限流:当关联资源(如 /user/info)QPS 飙升时,主动限制当前资源(如 /user/update),防止因读服务过载拖垮写服务。
- 链路限流:针对同一个接口被不同上游调用的情况(如 A 服务和 B 服务都调 /api/pay),可单独限制某条入口链路的流量,实现精细化分流。
三种流控效果应对不同业务场景
拒绝不是唯一选项,Sentinel 提供柔性处理策略:
立即学习“Java免费学习笔记(深入)”;
- 快速失败:QPS 超阈值立即抛 FlowException,适合压测后水位明确、必须硬隔离的场景。
- 预热(Warm Up):系统空闲后突遇高峰,比如从 1 QPS 拉升到 100 QPS,设置预热 60 秒,让通过量逐步上升,避免冷启动瞬间打满 CPU。
- 匀速排队:把突发请求排成队列,按固定间隔放行(如每 200ms 放一个),适合消息类、日志类等允许延迟但不能丢弃的请求。
规则生效靠实时统计与插槽链机制
不是简单计数器,Sentinel 使用滑动时间窗口算法(例如把 1 秒切分为 10 个 100ms 小窗口),持续滚动统计 QPS 和并发线程数;所有规则检查都嵌入在“插槽链”中——每个资源访问都会依次经过统计插槽、流控插槽、熔断插槽等,层层校验,毫秒级响应。

















