穿透 vs 击穿 vs 雪崩按影响范围递增:穿透是数据"根本不存在"(恶意攻击或查不存在的 ID),击穿是"单个热点 key 过期瞬间"被打穿,
雪崩是"大量 key 同时过期"导致请求全部打到 DB。口诀:
穿透挡一下(缓存空值/布隆过滤器)、击穿锁住点(互斥锁 setnx)、雪崩分散开(过期时间加随机值)。前置条件:缓存 + DB 架构,缓存作为 DB 前置挡板。
K8s 为何区分 Liveness 和 Readiness
Liveness 和 Readiness 不可合并因为恢复动作不同:Liveness 判定容器"已死"(死锁、内存泄漏、进程假死),恢复动作是"重启";
Readiness 判定容器"暂时不能服务"(加载配置、依赖 DB 超时、缓存预热),恢复动作是"摘流量不重启"。两者是不同维度的故障判定,合并会导致:
只有 Liveness 时慢启动应用 CrashLoopBackOff 永远起不来;只有 Readiness 时内存泄漏等不可恢复故障无法自愈。关键场景:
滚动更新零停机部署需要 Readiness 做流量级别控制(新 Pod 未就绪前不接入流量),Liveness 失败重启无法实现这种平滑过渡。前置条件:
Pod 配置了对应探针。