三个问题的本质
穿透是查不存在的数据,击穿是热点 key 失效瞬间,雪崩是大面积同时失效。三者共同点:请求都打到了数据库。
穿透用布隆过滤器或缓存空值;击穿用互斥锁或逻辑过期;雪崩用随机 TTL 加多级缓存。
代码怎么落地
方案不难,难的是判断你的业务属于哪一种。很多时候上了布隆过滤器,其实只是 key 设计不合理。
穿透是查不存在的数据,击穿是热点 key 失效瞬间,雪崩是大面积同时失效。三者共同点:请求都打到了数据库。
穿透用布隆过滤器或缓存空值;击穿用互斥锁或逻辑过期;雪崩用随机 TTL 加多级缓存。
方案不难,难的是判断你的业务属于哪一种。很多时候上了布隆过滤器,其实只是 key 设计不合理。
光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。
连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。
请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。
评论 (1)