前言
雪崩问题
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。
雪崩问题产生的原因是什么?
- 微服务相互调用,服务提供者出现故障或阻塞。
- 服务调用者没有做好异常处理,导致自身故障。
- 调用链中的所有服务级联失败,导致整个集群故障
解决问题的思路有哪些?
- 尽量避免服务出现故障或阻塞。
-
- 保证代码的健壮性;
- 保证网络畅通;
- 能应对较高的并发请求;
- 服务调用者做好远程调用异常的后备方案,避免故障扩散
解决方案
请求限流
线程隔离
失败处理
服务熔断
面试题
解决雪崩问题的常见方案有哪些?
- 请求限流:限制流量在服务可以处理的范围,避免因突发流量而故障
- 线程隔离:控制业务可用的线程数量,将故障隔离在一定范围
- 服务熔断:将异常比例过高的接口断开,拒绝所有请求,直接走fallback
- 失败处理:定义fallback逻辑,让业务失败时不再抛出异常,而是返回默认数据或友好提示
Sentinel和Hystrix对比
简介
Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址: home | Sentinel,它就是专门解决雪崩问题的.