缓存工程师的无障碍建站运维避坑指南
|
我原以为去年八月份那个活动上线前半小时清缓存就完事了,结果十分钟没撑住——首页 banner 图还是上个月七夕的,用户点进去领券页面直接 502。李薇在群里连刷六条“@所有人”,手机震得我手背发麻,可后台数字每几分钟自动刷新一次,绿的,红的,黄的,全在那儿跳,谁也顾不上看。 那会儿王磊还在打印物料,打印机卡纸第三次,他蹲着掏纸屑,头都没抬;饮水机在换桶,新桶刚扣上,咕咚一声,水线还没上来;我桌上那张手写的排期被茶水浸了,字晕开,只剩“CDN回源策略”几个字能认出来,其余全是蓝灰毛边。 真不是吹,这事儿跟我干了二十年缓存的关系不大,跟“无障碍建站运维避坑指南”更没关系——它压根就不是个指南,是筛子。筛人,筛流程,筛那些以为“加个 CDN 就能扛住”的幻觉。优胜劣汰,就这么赤裸裸摆着:留下的系统自己会呼吸,挂掉的连 fallback 都没配好。 你记得不?那次活动砸了的复盘,张工把 Nginx 缓存层级拆到第七层,说“再加一层 proxy_cache_lock 就稳了”。我当场就笑出声。笑完自己愣住——我原以为他是想压流量,结果他根本没动过 origin,光在 proxy_pass 里套了四层 if 指令判断 UA,最后缓存 key 里连 device_type 都没塞进去。iOS 和安卓点同一张图,缓存 miss 率差 37%,漏斗底端数据看着都像两场活动。他还在改配置,我盯着 monitor 上的 request/sec 曲线,像看心电图,一平,一抖,一掉——掉了就没了,再也没回来。 所以我说它是筛子。不是筛技术,是筛敢不敢承认“这个方案跑不过 AB 测试第一轮”的人。有人把“缓存穿透防护”当 PPT 单页讲得滴水不漏,结果线上用布隆过滤器判空,key 拼错了俩字符,每天十亿次请求打穿 Redis 直奔 DB,监控报警邮件标题写着“疑似爬虫”,没人点开附件看日志后缀。这不是疏忽,是认知没对齐。而对齐的人,早就默默把预热脚本写进 Jenkins pipeline,凌晨三点自动跑,跑完截图钉群里,附一行字:“冷缓存已填,首刷 TTL=1800s”。 群里一直在 @ 人,可真正看日志的人不到三个。赵敏去测 push 推送时发现落地页加载慢,查到最后是静态资源缓存头里 max-age 写成 -1,浏览器真信了,每次都要 revalidate;我顺手扫了眼她本地 devtools 的 Network 标签页,状态码列全红——304 都没捞着一个,全是 200。我当场改了配置推上 test 环境,她说“先别动线上”,我说“你刚点的测试链接根本没走线上”。她眨眨眼,手机电量掉到十几个点,充电线插在工位最底下那个接口,缠了三圈。 其实真不用那么神叨叨。什么“边缘节点动态降级”“多级缓存协同淘汰”,听着吓人,实际就三件事:第一,所有带 query 的 url,必须参与 cache key 计算,哪怕只是 utm_source;第二,任何 fallback 逻辑,必须能独立验证,比如 fallback 到本地静态文件,就得提前跑 md5 校验;第三,缓存失效不能靠人手动删,得靠事件驱动,删错一个 tag,整块业务的留存就飘。去年八月那次,删的是整个 user: 的 namespace,结果新用户注册成功弹窗都延迟三秒——因为弹窗文案也是从缓存里捞的,和头像、昵称共用一个 key 前缀。 会议室一直被占着,我们最后蹲在茶水间白板前画拓扑,马克笔没墨了,拿红笔凑合,把“CDN → WAF → LB → API Gateway → Redis Cluster → DB”一路标下来,标到 Redis 那儿停住。我说“这里该加读写分离”,张工摇头:“写太多,主从同步有 lag,读从库容易脏。”我没接话。我知道他说得对。但我更知道,那天上午产品突然加了个“实时显示邀请人数”的需求,后端直接 on db count(),连 cache 脚本都懒得写——所以后来爆了,爆得理直气壮。 我原以为只要监控覆盖率够高,就能防住所有问题。结果那十分钟里,Prometheus 里所有告警指标都绿着,就 latency 分位线突然拱起一座小山包,峰值比平时高 2.3 倍,但没人盯。因为那是“P99”啊,我们只盯“P95”,P95 还在阈值里晃悠呢。谁规定一定要盯 P99?没人规定。可等你反应过来,用户已经退订了推送,客服电话响了十七通,而我们还在讨论是不是 DNS 解析有问题。 赵敏昨天问我下周要不要参加产品排期会,我说不去,她翻白眼。我说你让设计把按钮文案再调小两个像素吧,她骂我有病。李薇转发了一篇《大促前的 21 个缓存 Checklist》,我滑到底,看到第 17 条写着“确认所有缓存命中率不低于 85%”。我关了网页。我们上周三测过,命中率 72%。谁也没提,因为那天是周四,老板在拉周报,我们要交“渠道投放 ROI 预估”,不是“缓存健康度诊断报告”。
文章配图,仅供参考 算了,先重配一下 cache-control 的 s-maxage 吧。不对,等等——先确认下今天是不是要上新素材。王磊刚印出来的单页上,优惠券 code 是 2024SUMMER,可活动规则里写的明明是 2024AUG。这事儿我不管,我只管它有没有进缓存。(编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |





浙公网安备 33038102330470号