一、Sentinel 是什么(正确认知)
Sentinel 是阿里开源的:
👉 分布式流量防护组件
核心能力:
- 限流(Flow Control)
- 熔断(Circuit Breaker)
- 降级(Fallback)
- 热点参数限流
- 系统自适应保护
🧠 一句话理解:
Sentinel = 微服务的"流量保险丝 + 安全阀门"
二、为什么必须要 Sentinel(生产真实问题)
如果没有 Sentinel:
订单服务
↓
用户服务挂了
↓
线程阻塞
↓
Tomcat线程池耗尽
↓
整个系统崩溃(雪崩)
🚨 真实生产问题:
1️⃣ 突发流量(秒杀)
10万请求瞬间打进来
系统直接崩
2️⃣ 下游服务宕机
支付服务挂了
→ 订单服务全部卡死
3️⃣ 慢请求拖垮系统
数据库慢查询
→ 线程阻塞
→ CPU 100%
🧩 三、Sentinel 的核心架构
请求
↓
Slot链(核心)
↓
限流 / 熔断 / 系统保护
↓
是否放行
核心概念:
| 概念 | 作用 |
|---|---|
| Resource | 资源(接口/方法) |
| Slot | 拦截器链 |
| Context | 请求上下文 |
| Rule | 规则 |
🚦 四、限流(Flow Control)
1️⃣ 限流原理
Sentinel 使用:
✔ 滑动窗口算法(核心)
示例:
1秒最多 100 请求
超过:
直接拒绝(BlockException)
2️⃣ 三种限流模式
✅ (1)QPS限流(最常用)
@SentinelResource(value = "orderApi", blockHandler = "blockHandler")
public String createOrder(){
return "success";
}
public String blockHandler(BlockException e){
return "请求过于频繁";
}
📌 规则:
QPS > 10 → 拒绝
✅ (2)并发线程数限流
最多 20 个线程同时执行
适用于:
- 慢接口
- DB压力接口
✅ (3)热点参数限流(非常重要)
@SentinelResource(value = "hotKey")
public String getProduct(Long id){
return "商品:" + id;
}
规则:
id = 1 → 限流更严格(爆款商品)
👉 秒杀系统核心能力
🔥 五、熔断(Circuit Breaker)
1️⃣ 熔断是什么
调用失败太多 → 直接不调用
类比:
电路保险丝
2️⃣ 三种状态(必须背)
CLOSED(关闭) → 正常调用
OPEN(打开) → 直接拒绝
HALF_OPEN(半开)→ 尝试恢复
3️⃣ 熔断触发条件
失败比例 > 50%
或
异常数 > 阈值
4️⃣ 生产级示例
@SentinelResource(
value = "userApi",
fallback = "fallback",
blockHandler = "blockHandler"
)
public String getUser(Long id){
if(id == 1){
throw new RuntimeException("模拟异常");
}
return "user";
}
fallback(业务异常)
public String fallback(Long id){
return "系统降级返回";
}
blockHandler(限流异常)
public String blockHandler(Long id, BlockException e){
return "流量过大";
}
🧠 六、限流 vs 熔断(核心区别)
| 类型 | 作用 |
|---|---|
| 限流 | 控制请求进入 |
| 熔断 | 阻止调用下游 |
例子:
限流:入口控制(门禁)
熔断:发现坏服务直接断开
🧱 七、降级(Fallback)
1️⃣ 降级场景
- DB慢
- RPC失败
- 第三方接口挂了
示例:
return "缓存数据 / 默认数据 / 静态数据";
🚨 八、Sentinel 生产级架构(重点)
Gateway
↓
Sentinel(网关限流)
↓
Feign调用
↓
Sentinel(服务级限流)
↓
DB / Redis / MQ
⚙️ 九、Sentinel + Gateway(企业常用)
1️⃣ 网关限流
spring:
cloud:
gateway:
routes:
- id: order
uri: lb://order-service
predicates:
- Path=/order/**
filters:
- name: RequestRateLimiter
2️⃣ Sentinel网关整合
API网关统一限流入口
🧠 十、热点商品限流(秒杀核心)
场景:
商品ID = 1(爆款)
规则:
普通商品:10 QPS
爆款商品:1 QPS
🧨 十一、真实秒杀系统(重点)
架构:
Gateway限流
↓
Redis库存预扣
↓
Sentinel保护
↓
MQ异步下单
↓
DB落库
防止超卖:
Redis原子扣减库存
🚨 十二、生产级风控结合 Sentinel
1️⃣ IP限流
同IP 1秒 10次
2️⃣ 用户限流
userId + API
3️⃣ 黑名单
黑名单IP直接拒绝
4️⃣ 防刷组合
Sentinel + Redis + Gateway + JWT
🔥 十三、面试标准回答(必须背)
❓ Sentinel作用?
👉 标准回答:
Sentinel 是一个流量控制组件,用于实现微服务的限流、熔断和降级。
它通过 Slot 责任链机制,对请求进行实时统计,基于滑动窗口算法实现 QPS 限流,同时支持基于响应时间和错误比例的熔断机制。
在生产环境中,Sentinel 通常与 Gateway、Feign 结合使用,实现入口限流和服务级保护,防止系统雪崩。
❓ 限流 vs 熔断区别?
限流是控制请求进入系统,熔断是保护下游服务,当错误率过高时直接拒绝请求