四个交互演示:① 架构图 · ② 超卖对比 · ③ 限流可视化 · ④ 完整流程动画
点击任意组件查看说明,或点「▶ 开始模拟」看一个请求逐层穿过的过程:
架构核心思想:把数据库前面所有能挡的都挡住。每经过一层,流量都被削掉一大块,最终到 MySQL 时 QPS 已经在可承受范围。
两边初始库存相同,并发请求数相同。看 V1 怎么把库存「扣穿」到负数:
每来一个请求 ZADD ts uuid,先 ZREMRANGEBYSCORE 清掉窗口外的,再数 ZSet 长度判断是否超限:
ZREMRANGEBYSCORE 0 (now-window) 把过期的清掉;
③ 整段「清理 + 计数 + 加入」用 Lua 包成原子,并发安全。
50 个用户同时点「抢」按钮,每个请求经过 5 个步骤。颜色标记当前所在阶段: