面试题答案
一键面试缓存穿透的影响
- 增加后端压力:大量不存在的数据请求绕过缓存直接访问后端数据源,可能导致后端服务负载过高,甚至崩溃。
- 影响系统性能:由于每次请求都需查询后端,响应时间变长,降低系统整体性能。
- 可能引发连锁反应:后端过载可能影响依赖它的其他服务,引发级联故障。
解决方案及适用场景
- 布隆过滤器
- 原理:使用布隆过滤器来存储所有可能存在的键。当请求到来时,先通过布隆过滤器判断该键是否可能存在,若不存在则直接返回,避免访问后端。
- 适用场景:适用于数据量较大且数据相对固定的场景。例如配置中心的数据变动频率较低,适合使用布隆过滤器,可有效拦截大部分不存在的请求,减少后端压力。
- 缓存空值
- 原理:当后端查询到数据不存在时,也将空值缓存起来,并设置一个较短的过期时间。下次相同请求到来时,直接从缓存获取空值,避免重复查询后端。
- 适用场景:适用于数据存在一定的变动性,但变动频率不是极高的场景。比如配置中心偶尔会新增配置项,缓存空值能在一定时间内防止穿透,同时又不会因长期缓存空值而影响新数据的写入。