# 概述 缓存在高并发下易发生惊群与雪崩。本文提供互斥重建、随机 TTL 与回源限速策略,并结合版本标记与双写一致性,构建可验证的防护方案。 # 防护策略(已验证) - 互斥重建:使用分布式锁保证同一键仅一个实例回源重建; - 随机 TTL:在过期时间加入抖动,降低同时失效概率; - 回源限速:限制后端回源速率与并发,保护下游; - 只读缓存:写入路径不依赖缓存,避免一致性破坏。 # 一致性策略 - 版本标记:缓存值携带版本或时间戳,客户端仅接受新版本; - 双写一致性:更新时先写数据库,再删/更新缓存;删除优先避免旧值覆盖; - 本地+远端:L1+L2 缓存组合,并在版本标记下实现一致性。 # 示例(伪代码) ```pseudo lock(k) v = cache.get(k) if v expired: v = rebuild() cache.set(k, v, ttl=randomized()) unlock(k) ``` # 验证与监控 - 指标:回源量、锁等待、缓存命中率与一致性错误; - 演练:模拟批量过期与峰值,验证互斥重建与限速效果; # 常见误区 - 直接设置统一 TTL 导致同时失效; - 更新时先写缓存造成旧值覆盖; - 无锁与限速导致回源风暴。 # 结语 以互斥重建与随机 TTL 为基础,配合版本标记与双写一致性,并以监控与演练验证,缓存可在高并发场景下保持稳定与一致。

发表评论 取消回复