MST
星途 面试题库

面试题:缓存设计之高级难度:缓存雪崩应对策略分析

假设你正在负责一个高并发电商系统的缓存设计,在大促活动期间,缓存雪崩可能会严重影响系统性能。请分析可能导致缓存雪崩的因素,并给出一套完整且可落地的应对策略,包括策略实施的优先级和理由。
32.0万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

可能导致缓存雪崩的因素

  1. 缓存过期时间集中:大量缓存数据设置了相近的过期时间,在大促期间流量高峰时,这些缓存同时过期,导致大量请求直接穿透到数据库,数据库压力瞬间增大,最终可能导致数据库崩溃,系统不可用。
  2. 缓存服务器故障:缓存服务器如 Redis 集群出现故障,例如部分节点宕机且未能及时恢复,导致大量缓存数据无法获取,同样大量请求会转而访问数据库,引发缓存雪崩。

应对策略

  1. 分散缓存过期时间:在设置缓存过期时间时,使用随机数在一个合理范围内(如原过期时间的±20%)进行调整,避免大量缓存同时过期。这样可以使缓存过期时间分布更为均匀,降低同一时刻大量缓存失效的风险。此策略优先级最高,因为它直接针对缓存过期时间集中这一常见且容易解决的问题,实施成本较低且效果显著。
  2. 多级缓存:构建多级缓存架构,如使用本地缓存(如 Guava Cache)和分布式缓存(如 Redis)相结合。先从本地缓存读取数据,如果本地缓存未命中,再访问分布式缓存。当分布式缓存出现故障时,本地缓存仍能提供部分数据的缓存支持,减少对数据库的直接访问压力。此策略优先级次之,它通过增加缓存层次来提高缓存可用性,但相比分散过期时间,实施复杂度有所增加。
  3. 缓存预热:在大促活动开始前,提前将热门商品等关键数据加载到缓存中,避免活动开始瞬间大量缓存未命中而导致请求冲击数据库。此策略优先级较高,因为可以在活动开始前就减少因缓存冷启动带来的风险,且实施相对简单,能有效降低数据库初期压力。
  4. 服务降级与熔断:设置服务降级机制,当数据库压力过大时,对一些非核心业务进行降级处理,如暂时屏蔽商品评论展示等功能,优先保障核心的商品展示、下单等功能。同时结合熔断机制,当请求失败率达到一定阈值时,自动熔断对数据库的访问,直接返回兜底数据(如提示“活动火爆,请稍后重试”),防止数据库被拖垮。此策略优先级相对靠后,因为服务降级意味着部分功能受限,会影响用户体验,而熔断虽然能保护数据库,但也需要合理设置阈值避免误判,实施相对复杂。
  5. 缓存高可用:搭建高可用的缓存集群,如使用 Redis Sentinel 或 Redis Cluster 等方案,确保即使部分节点出现故障,缓存服务仍能正常运行。同时,定期对缓存服务器进行健康检查和备份,以便在故障发生时能快速恢复。此策略优先级较高,能从根本上保障缓存服务的稳定性,减少因缓存服务器故障引发的雪崩风险,但搭建和维护高可用集群需要一定的技术成本和资源投入。