我们从字面上去分析这两个场景的含义
"击穿",突出的是"击"这个动作,就是“击打”“攻击”的意思,想象一下就是密集的雨点持续不断的落下来,沉重的铁锤一下一下越来越快,乱劈风吹法,持续不断且是高密度的攻击,这种高频次的攻击最终导致"穿",所以“击穿”对应的场景是高并发,大量的请求过来,在缓存失效的一瞬间,全部涌入数据库。
解决方案:
- 持续加固防御:及时修补城墙的每一处破损,让城墙永不倒塌(设置永不过期或提前续期)
- 限制通道宽度:即使城墙被击穿,也只容一人通过,达到一夫当关万夫莫开的效果(加锁机制)
"穿透",强调的是"透"的效果,一下就透了,噗呲一下,一针见血,畅通无阻,直达数据库,所以,“穿透”对应的场景就是缓存起不到效果,有缓存和没有都一样,不拦着,碰到拿着圣旨(不存在的数据)的人就放过去,也不判断一下真伪(布隆过滤器)
解决方案:
- 以貌取人:兽头人身明显不是人禁止进城(参数校验)
- 架设照妖镜:用"照妖镜"确认身份(布隆过滤器验证不存在的数据)
- 建立备案制度:只放行已知的"圣旨"(缓存空结果)