序言
当微服务调用链路中的某个服务出现故障,最终将可能引起整个链路中的所有微服务都不可用,这便是雪崩问题。
解决雪崩问题,通常存在以下四种方案:
- 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待,但高并发下无法从根本上解决问题
- 舱壁模式(线程隔离):限定每个业务能使用的线程数,避免耗尽整个 Tomcat 的资源
- 熔断降级:由断路器统计业务执行的异常比例,若超出阈值则会熔断该业务,则拦截访问该业务的一切请求
- 流量控制:限制业务访问的 QPS,避免服务因流量的突增而故障。
前面三种是为了避免出错业务扩散造成雪崩效应,而最后一种是为了预防出现雪崩问题。
本文要谈的 Sentinel 使用后面三种方式来处理雪崩问题。