## 适用场景
小程序的流量形状很特别:平时安静,活动一开闸瞬间涌进高峰,领取、秒杀、投票类玩法在几分钟内打满服务器。为几分钟的峰值常态持有大配置不划算,扛不住峰值又直接损失活动效果,解法是缓存分层加准入控制,把尖峰在到达数据库之前削平。
## 步骤清单
第一步梳理流量路径,标出每类请求落在哪层:静态资源、可缓存的读接口、必须落库的写操作。第二步建两级缓存:页面级缓存与对象缓存。活动页与商品详情这类读多写少的内容做页面或片段缓存,命中即返回,不打到后端;热点数据如库存展示、榜单读数放对象缓存,设短过期时间,过期再回源刷新。
第三步上准入控制:入口处限流,按接口设每秒请求上限,超出的返回友好排队提示;写操作再加一层用户级频控,同一用户同类操作限定频率,防脚本刷量。库存类强竞争场景,扣减动作原子化并在缓存层预扣,真正的落库按队列匀速进行。
location /activity/page {
proxy_cache activity;
proxy_cache_valid 200 30s;
limit_req zone=burst burst=100 nodelay;
}
## 验证方法
上线前必须压测,而且按活动形状压:瞬间并发打进来而不是匀速爬升,观察缓存命中率、限流触发率与数据库负载。验收标准写明:峰值请求量下,后端实际压力不超过日常容量的一定倍数,限流用户体验符合预期。
## 注意事项
限流阈值与缓存过期时间要在真实数据上调,拍脑袋的参数要么拦不住要么拦太狠。活动前预留临时升配窗口,缓存与限流是主防线,升配是备用弹药。顺云云服务器承接小程序后端时,把活动日的流量预案写成清单,峰值来了照单执行,不靠现场急智。
活动结束后还有一步复盘:限流触发的分布、缓存命中率的峰值、真实的容量拐点,三项数据归档。下次活动的参数调整依据这次的数据,预案一轮比一轮精确,这就是活动型业务的经验资产。