SuperAPI AI 工具集

staff-engineering-skills-thundering-herd

通用与其它

查看项目

更新于 10-16 08:11

技能介绍

用途:该技能聚焦“惊群效应”问题,即大量客户端在同一时刻产生同步请求峰值,压垮后端。适用于实现带 TTL 的缓存、定时任务调度、故障后重连逻辑之前,先评估“所有客户端同时做这件事会怎样”。

四类触发场景:缓存过期(热门键同时失效,并发请求同时回源)、服务恢复(下游恢复后积压重试同时涌入)、同步调度(多实例在同一秒触发 cron)、连接风暴(故障切换后所有客户端同时重连)。

主要能力与模式:请求合并(single-flight),未命中时仅一个请求回源,其余等待其结果;stale-while-revalidate,先返回陈旧数据、后台刷新,使缓存不出现真空;抖动 TTL,为过期时间加入随机偏移,避免大量键同时失效;抖动 cron 调度,让各实例在时间窗内随机错开;抖动重连,采用带抖动的指数退避;失效时用写穿(直接写入新值)替代删除,避免下一次读取踩踏。

使用方式:资料给出 TypeScript 示例,包括基于 inflight Map 的合并函数、SWR 读取函数、setWithJitter、cron 抖动启动、带抖动的重连退避,以及 updateConfig 的写穿写法。单实例可用进程内合并;多实例需分布式锁(如 Redis SET NX PX)保证全集群仅一个实例回源。

限制与权衡:进程内合并仅适用于单实例;SWR 可能让用户短暂看到陈旧数据,不适合金融或安全关键读取;抖动 TTL 不能防止单个热键的瞬时踩踏,只能避免大规模同时过期。资料还列出反模式:朴素 cache-aside、固定 TTL、整点 cron、热路径 cache.clear()、无退避重连。相关陷阱包括缓存失效、重试风暴、热分区与背压。具体安装命令与官方文档暂未提供。