# 背景
保证服务调用方线程不被长时间,不必要的占用,避免故障在微服务系统中蔓延,防止系统雪崩效应
# 目标
- 保护线程资源
- 快速失败机制
- 提供降级方案
- 防止故障扩散:熔断
- 监控功能
# 能力
线程池隔离
信号量隔离
熔断
降级回退
# 降级
场景:程序运行异常,服务超时,熔断器打开状态,线程池资源耗尽
- 压力剧增,根据业务及流量,对不重要不紧急服务有策略的进行不处理或简单处理,释放服务器资源以保证核心服务正常
- 服务不可用时,主动执行备用降级逻辑,保证主体业务不受影响
# 熔断
状态:
- 熔断关闭
- 熔断开启:接口调用出错比率到一个阈值(默认50%),进行熔断开启状态,后续调用切断执行本地降级方法
- 半熔断:开启熔断一段时间后,尝试恢复服务调用方对服务的调用,允许部分请求调用服务,监控成功率,如达到预期,则进行熔断关闭状态,否则重新进行关闭状态
参数 | ||
---|---|---|
metrics.rollingStats.timeInMilliseconds | 统计时间窗 | |
circuitBreaker.sleepWindowInMilliseconds | 休眠时间窗口,默认5s | |
circuitBreaker.requestVolumeThreshold | 请求总数阀值,默认20 | |
circuitBreaker.errorThresholdPercentage | 错误百分比阈值,默认50 |
# 线程池隔离
优点:
# 参考资料:
← Spring AOP 线程 →