雪崩问题
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
解决雪崩方式
常见方式有四种:
- 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。这模式只是缓解雪崩问题,但如果请求释放速度没有请求进入的速度快,最终服务器资源也会被耗尽,所以只能是缓解了雪崩。
- 舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。虽然这模式能解决雪崩问题,但也有些弊端,就是会浪费给定的线程数的资源
- 熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。这方式比较好解决雪崩问题
- 流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。这方式可以预防雪崩问题
总结雪崩
什么是雪崩问题?
微服务之间互相调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。
如何避免因瞬间高并发流量而导致服务故障?
流量控制
如何避免因服务故障引起的雪崩问题?
- 超时处理
- 线程隔离
- 降级熔断