服务限流与熔断
time: 1 hours
服务雪崩
问题
三个阶段:
- 服务不可用
- 重试加大流量
- 服务调用者不可用
应对策略
- 应用扩容
- 流控
- 拒绝
- 排队等待
- 缓存
- 服务降级
与服务不可用相比,使部分用户不可用更加可以让用户接受,即服务降级 - 服务熔断
A服务访问B服务,B服务慢-B服务压力过大,导致错误请求,超时重试,B服务流量增大很容易崩。
调用方如果有熔断机制,可以让调用方加一个机制:- 发现大部分请求慢
- 请求错误
- 短时间内错误数据很多
那么可以加熔断机制,与以下机制很像: - 保险丝
- 股市熔断
常用组件
- Sentinel
- Hystrix
Sentinel
限流
限流策略
- 基于qps的限流
短时并发,1w/1s并发可分解为1000/100ms
- 冷启动
拒绝方式
- 拒绝
超过qps则拒绝
- 匀速通过
计算,将流量平均到具体的ms中
熔断降级
熔断器状态机
- closed
- open
- half open
策略
静默期,资源小于静默数,不计数
-
慢调用比例
-
错误比例
-
错误计数
熔断器一般应用场景
-
外部服务
-
数据库慢调用
-
服务降级