1.雪崩问题
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用
2.雪崩问题产生的常见原因
(1)微服务相互调用,服务提供者出现故障或阻塞
(2)服务调用者没有做好异常处理,导致自身故障
(3)调用链中所有服务级联失败,导致整个集群故障
3.雪崩问题的常见解决方案
解决方案 | 描述 |
---|---|
请求限流 | 通过限流器限制访问微服务的请求并发量,避免服务因流量激增出现故障 |
线程隔离 | 又称为舱壁模式,通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散 |
服务熔断 | 由断路器统计请求的异常比例或慢调用比例,如果超出阈值则会熔断该业务,即拦截该接口的请求 |
失败处理 | 定义fallback逻辑,让业务失败时不再抛出异常,而是返回默认数据或友好提示 |
4.Sentinel和Hystrix技术对比
Sentinel | Hystrix | |
---|---|---|
线程隔离 | 信号量隔离 | 线程池隔离/信号量隔离 |
熔断策略 | 基于慢调用比例或异常比例 | 基于异常比例 |
限流 | 基于OPS,支持流量整型 | 有限的支持 |
Fallback | 支持 | 支持 |
控制台 | 开箱即用,可配置规则,查看秒级监控,机器发现等 | 不完善 |
配置方式 | 基于控制台,重启后失效 | 基于注解或配置文件,永久生效 |