概念:
服务器重启或者因为失效期造成的在同一时间内,缓存同时失效,导致一瞬间所有的请求都聚集到数据库上,从而导致的连锁反应;
缓存雪崩解决方案:
想要解决首先要找到缓存雪崩产生的原因:
主要的几种场景:
缓存服务器不可用;---对应解决方案,redis集群;保证有缓存可用(HA);
热点缓存失效;---热点缓存永不失效,例如定期去更新热点缓存等;
高峰访问器缓存失效;---对应方案一,增加服务器,平衡服务器压力(HA)或者限流模式,对服务设置qps阈值;
缓存失效时间一致导致;---失效日期随机,或者增加刷新缓存机制;
其他:
程序bug导致等,
以上为预防缓存雪崩的方案,特定的场景缓存雪崩可能还会出现,因此需要对后续进行防守,
防守方案:
1,熔断模式
a.缓存失效后,会对数据库服务器增加压力导致连锁反应,因此可用对数据库的访问增加互斥锁,减少数据库的压力。
b.通过监控服务器的指标,如cpu,线程数,长事务sql等,来对后面的请求进行阻隔;
(熔断判断算法,熔断恢复,熔断的预警)
2,隔离模式
系统的服务互相独立,这样在一个服务挂掉后,其他还能正常运转;