4. 网关缓存与性能优化:本地缓存、分布式缓存、缓存穿透/雪崩/击穿

核心能力:掌握缓存分层设计、热点数据保护、缓存一致性及三高场景下的防御策略。

📊 缓存三大问题与防御策略图

缓存穿透 缓存雪崩 缓存击穿 布隆过滤器 + 空值缓存(短TTL) 过期时间随机化 + 多级缓存 / 限流降级 互斥锁(SETNX) + 逻辑过期 / 热点预加载 ⭐ 接口限流 + 参数校验 ⭐ 缓存预热 + 持久化备份 ⭐ 手动过期 + 二级缓存兜底 ---

🎯 面试问答卡片

Q1:网关本地缓存与分布式缓存如何选型?

面试官考察点:缓存分层意识、性能与一致性权衡、对网关场景的理解。

回答框架:分层定位 → 选型对比 → 场景举例 → 一致性策略

示例回答:本地缓存(Caffeine)适合高频只读数据(如路由规则),延迟<1ms,但集群不一致。分布式缓存(Redis)适合共享数据(如 ),支持过期、持久化,但网络开销1-5ms。网关通常本地+分布式两级缓存,本地兜底,Redis回源时异步刷新。

可能追问:① 如何保证两级缓存一致性?② 本地缓存最大容量怎么定?

避坑提醒:不要只说“只用Redis”,网关TPS高时本地缓存可减少90% Redis连接,必须体现分层思想。

Q2:如何预防缓存穿透?

面试官考察点:对穿透原因的分析、布隆过滤器原理、空值缓存细节。

回答框架:原因 → 方案 → 选型对比 → 兜底措施

示例回答:穿透指查询不存在数据绕过缓存直击DB。方案一:布隆过滤器拦截非法key(误判率<1%,需定期重置)。方案二:空值缓存,key-value设为null,TTL 30-60s。网关层结合参数校验和限流,对高频空key自动上报告警。

可能追问:① 布隆过滤器误判如何处理?② 空值缓存大量占用内存怎么办?

避坑提醒:避免只提一种方案;布隆过滤器需结合业务key模式设计,空值缓存必须设置短TTL防内存泄露。

Q3:缓存雪崩与击穿的区别及应对?

面试官考察点:概念辨析、差异化防御、热点数据识别。

回答框架:定义区别 → 雪崩对策 → 击穿对策 → 网关落地

示例回答:雪崩是大批量缓存同时过期导致流量打穿DB,对策:过期时间加随机数(±20%)、多级缓存、限流。击穿是单个热点key失效瞬间高并发,对策:互斥锁(SETNX)只允许一个线程重建缓存,其他等待;或逻辑过期+异步刷新。网关层对热点key自动检测并延长TTL。

可能追问:① 互斥锁等待时间设多少合适?② 如何自动识别热点key?

避坑提醒:不要把雪崩和击穿混为一谈;击穿一定要提“互斥锁”和“逻辑过期”两种主流方案,并对比优缺点。
---

📁 项目案例:统一网关缓存治理平台

项目名称统一网关缓存治理平台
业务背景网关承载公司80%南北向流量,缓存命中率仅70%,多次因缓存穿透/雪崩导致DB打挂。
规模指标日均请求20亿,峰值QPS 50万,缓存节点50台(本地Caffeine + 集群Redis),DB查询降低90%。
技术栈Caffeine + Redis Cluster + 布隆过滤器(Guava) + Sentinel限流 + Nacos配置中心
核心难点① 热点key动态识别与自动降级;② 两级缓存一致性(最终一致);③ 布隆过滤器误判导致正常请求被拦截。
面试高频追问1. 热点key检测算法(滑动窗口计数 vs LRU);
2. 缓存一致性如何保证(MQ异步通知刷新本地缓存);
3. 布隆过滤器重置策略(定长bitmap + 定时重建)
可迁移话术“我们采用本地缓存+分布式缓存两层架构,通过配置中心动态调整TTL和限流阈值;对热点key使用预热+手动过期+互斥锁三重保护,确保网关高可用。”

📌 项目STAR结构化表达

S 背景 日请求20亿 缓存命中率70% DB频繁被打 T 任务 缓存命中率>90% 零穿透/雪崩事故 延迟<10ms A 行动 双层缓存架构 布隆过滤器+限流 热点自动检测 R 结果 命中率95%+ DB查询降90% 事故归零 加分点:布隆过滤器误判率<0.5% / 本地缓存1ms响应 / 自动降级至限流
面试贴士:项目案例 STAR 图帮助你快速构建回答结构,面试时按“背景-任务-行动-结果”展开,每个节点用 3 个关键词锚定记忆点。

📋 缓存策略对比表

策略适用场景优点缺点网关推荐
本地缓存(Caffeine)路由规则、限流配置极低延迟、无网络开销集群不一致、容量有限只缓存静态/低频修改数据
分布式缓存(Redis)会话、热点数据高可用、持久化、共享网络延迟、单点瓶颈搭配本地缓存做两级
布隆过滤器防穿透内存占用小误判、不支持删除针对非法key场景
多级缓存雪崩/击穿高可靠、分层防护一致性维护复杂网关标配架构
高频考点:请务必掌握布隆过滤器的位图原理、互斥锁的 SETNX 与 Lua 脚本结合、以及本地缓存的 Caffeine 淘汰策略(W-TinyLFU)。