知识卡片
缓存雪崩——更新锁与后台更新两种方案
内容
缓存雪崩指热点缓存过期瞬间,大量并发请求同时涌向存储系统重新加载数据,压垮存储层甚至引发连锁宕机。两种解法:更新锁——只让一个线程更新缓存,其余等待或返回默认值,分布式场景需借助ZooKeeper锁;后台更新——缓存设为永不过期,由后台线程定时刷新,避免线程抢锁,还能用于上线时的缓存预热。发散:区别是”谁承担重建责任”——后台更新把重建职责挪出请求路径,复杂度更低。
参考来源
- 位置:《从0开始学架构》第21章《17|高性能缓存架构》"缓存雪崩"一节(源文件:_epub-src/OEBPS/Text/part0020_split_003.html)
- 结论依据:原文明确"对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新……分布式集群的业务系统要实现更新锁机制,需要用到分布式锁,如ZooKeeper",并说明"后台更新机制还适合业务刚上线的时候进行缓存预热"。
- 原始内容:对缓存更新操作进行加锁保护,保证只有一个线程能够进行缓存更新,未能获取更新锁的线程要么等待锁释放后重新读取缓存,要么就返回空值或者默认值……分布式集群的业务系统要实现更新锁机制,需要用到分布式锁,如ZooKeeper……后台更新机制还适合业务刚上线的时候进行缓存预热。