赞
踩
介绍
对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。那么这些查不到的请求就会将数据库打死,缓存失效。
举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请求 id 全部都是负数。这样的话,缓存中不会有,请求每次都“视缓存于无物”,直接查询数据库。这种恶意攻击场景的缓存穿透就会直接把数据库给打死。
导致的问题
解决
介绍
解决
介绍
对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。
这就是缓存雪崩。
按阶段解决
事前
事中
事后
按方法解决
加锁或者队列
将缓存失效时间分散开
设置过期标志更新缓存
还有一种被称为“二级缓存”的解决方法(本地 ehcache 缓存)
原理
好处
链接: 思维导图源文件 提取码: ybqh
链接: https://pan.baidu.com/s/16wRs6qsJBubAD0ytvEH8aQ 提取码: ybqh 复制这段内容后打开百度网盘手机App,操作更方便哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。