造成雪崩的真实场景
1.4.1 服务提供者不可用
-
硬件故障:
如网络故障、硬盘损坏等。 -
程序的 bug:
如算法需要占用大量 CPU 的计算时间导致 CPU 使用率过高。 -
缓存击穿:
比如应用刚重启,短时间内缓存是失效的,导致大量请求直接访问到了数据库,数据库不堪重负,服务不可用。 -
秒杀和大促:
服务短时间承载不了那么多请求量。
1.4.2 重试加大流量
-
用户连续重试:
比如用户看到界面上没有响应,所以又操作了一遍,结果又增加了一倍请求量。 -
程序重试机制:
比如代码中有多次重试的逻辑,一次失败后,过几秒后再重试,重试个三次就取消重试,走异常处理分支了。也是增加了请求量。
五、如何防止雪崩
方案
出问题前预防:限流、主动降级、隔离
出问题后修复:熔断、被动降级
「本篇主要来讲解熔断机制。」 后续几篇会讲解其他方案。