面试必备:简单聊聊缓存雪崩及解决方案?
简述:
如果缓存在一段时间内同时失效,例如我们在设置缓存时,采用了相同的过期时间,导致在某一时刻所有缓存同时失效,请求全部到数据库上,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。
解决方案:
缓存雪崩对底层系统的冲击非常可怕,造成的损失巨大。遗憾的是目前并没有比较完美的解决方案。
1.“加锁”或者“队列”方式,“加锁”或者“队列”方式保证缓存的单线程(进程)写,从而避免大量并发请求落到底层存储系统上。比如某个Key只允许一个线程查询和写缓存,其他线程等待。
2.设置分散缓存失效时间,这个是个比较简单处理方案,就是将缓存失效时间分散开,比如我们在原有失效时间上增加一个随机值,如1~6分钟随机,尽量让缓存不要同时失效,从而尽量避免缓存雪崩。
3. 单独处理热门数据, 对于一些热门数据的持续读取,这种缓存数据也可以采取定时更新的方式来刷新缓存,避免自动失效。
4. 从服务器和接口处解决。如果服务和接口都有限流机制,就算缓存全部失效了,但是请求的总量是有限制的,可以在承受范围之内,这样短时间内系统响应慢点,但不至于挂掉,影响整个系统。
版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
支持小微:
腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。
轻量 1C2G6M 60GB SSD盘297元/3年
链接:https://curl.qcloud.com/bR8ycXZa
右下角,您点一下在看图片
小微工资涨1毛
商务合作QQ:185601686
评论