缓存雪崩
因为缓存服务挂掉或者热点缓存失效,所有请求都去查数据库,导致数据库连接不够或者
数据库处理不过来,从而导致整个系统不可用。
解决方案:
加锁排队、 设置过期标志更新缓存 、 设置过期标志更新缓存 、二级缓存(引入一致性问
题)、 预热、 缓存与服务降级。
1.
线程互斥:只让一个线程构建缓存,其他线程等待构建缓存的线程执行完,重新从缓存
获取数据才可以,每个时刻只有一个线程在执行请求,减轻了
db
的压力,但缺点也很明
显,降低了系统的
qps
。
2.
交错失效时间:这种方法时间比较简单粗暴,既然在同一时间失效会造成请求过多雪崩,
那我们错开不同的失效时间即可从一定长度上避免这种问题,在缓存进行失效时间设置的
时候,从某个适当的值域中随机一个时间作为失效时间即可。
评论