当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据 进行自动降级,也可以配置开关实现人工降级。
缓存降级的 终目的是保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算)。
在进行降级之前要对系统进行梳理,从而梳理出哪些必须誓死保护,哪些可降级;比如可以参考日志级别设置预案:
1.
一般:比如有些服务偶尔因为网络抖动或者服务正在上线而超时,可以自动降级;
2.
警告:有些服务在一段时间内成功率有波动(如在
95~100%
之间),可以自动降级或人工降级,并发送告警;
3.
错误:比如可用率低于
90%
,或者数据库连接池被打爆了,或者访问量突然猛增到系统能承受的 大阀值,此时可以根据情况自动降级或者人工降级;
4.
严重错误:比如因为特殊原因数据错误了,此时需要紧急人工降级。
服务降级的目的,是为了防止
Redis
服务故障,导致数据库跟着一起发生雪崩问题。因此,对于不重要的缓存数据,可以采取服务降级策略,例如一个比较常见的做法就是, Redis出现问题,不去数据库查询,而是直接返回默认值给用户。