Sentinel-熔断降级

This commit is contained in:
bunny 2025-05-27 12:34:30 +08:00
parent f589e0751e
commit 1d1c788d1f
2 changed files with 70 additions and 0 deletions

View File

@ -669,6 +669,8 @@ public class GlobalExceptionHandler {
#### blockHandler vs fallback区别
有block先走block。
| 特性 | blockHandler | fallback |
| -------- | ------------------------ | ------------------- |
| 触发条件 | 流量控制/熔断时触发 | 业务异常时触发 |
@ -784,3 +786,71 @@ graph TD
- 需配置超时时间(毫秒)
- 不支持QPS>1000的场景
## 熔断降级
1. **熔断恢复**:系统会在熔断时间结束后自动尝试恢复,进入半开状态
2. **监控建议**建议配合Dashboard监控熔断事件设置合理的告警机制
3. **阈值设置**:需要根据实际业务场景调整阈值,过高会导致保护不足,过低可能误熔断
4. **降级策略**:应准备有意义的降级响应,如缓存数据、默认值或友好提示
熔断降级是分布式系统中重要的稳定性保障手段,主要功能包括:
- **切断不稳定调用**:自动识别并隔离故障服务
- **快速返回不积压**:避免请求堆积导致资源耗尽
- **避免雪崩效应**:防止故障在系统中级联扩散
### 典型场景
在分布式系统中如果A服务调用G服务G服务调用D服务当D服务出现性能问题时会导致整个调用链路响应变慢。通过熔断机制G服务可以快速识别D服务的异常状态直接返回预设的降级响应避免无效等待和资源浪费。
### 断路器工作原理
1. **关闭状态**:初始状态,所有请求正常通过
2. **熔断状态**:当触发熔断条件时,直接拒绝请求,快速失败
3. **半开状态**:熔断时间结束后,尝试放行少量请求测试服务是否恢复
- 成功则关闭熔断,恢复正常
- 失败则继续保持熔断状态
### 最佳实践
熔断降级作为自身保护手段,通常在客户端(调用端)进行配置:
- 针对关键依赖服务配置熔断规则
- 设置合理的熔断阈值和恢复时间
- 配合降级逻辑提供有意义的fallback响应
- 监控熔断事件,及时预警
### 实际示例
#### 慢调用比例
配置参数:
- **最大RT**1000ms超过此响应时间的请求视为慢调用
- **比例阈值**0.8当慢调用比例超过80%时触发熔断)
- **熔断时长**30s触发熔断后持续30秒
- **最小请求数**5统计窗口内至少需要5个请求才进行熔断判断
- **统计时长**5000ms滑动窗口统计的时间长度为5秒
![熔断机制示意图](./images/image-20250527122236682.png)
#### 异常比例
配置参数:
- **比例阈值**0.5当异常比例超过50%时触发熔断)
- **熔断时长**10s
- **最小请求数**10
- **统计时长**10000ms
适用场景:适用于服务依赖不稳定,可能出现大量异常的情况。
#### 异常数
配置参数:
- **异常数阈值**5当异常数量达到5次时触发熔断
- **熔断时长**60s
- **统计时长**60000ms
适用场景:适用于低流量但要求高可用的服务,可以快速响应偶发异常。

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB