高并发场景选型指南
→ 返回 高并发
按一致性要求与读写形态快速选型,再进入对应案例文档。
场景地图
| 场景 | 文档 | 读/写 | 一致性 | 首选手段 |
|---|---|---|---|---|
| 微信步数日榜 | 排行榜与实时计数 | 写+读 | 最终一致 | MQ 合并、ZSet、批量落库 |
| 12306 春运 | 12306春节高峰 | 读>>写 | 强一致库存 | 排队令牌、原子扣减、订单同步 |
| 秒杀抢购 | 秒杀与抢购 | 读+写 | 强一致库存 | 令牌、Redis Lua、幂等订单 |
| 红包雨 | 红包雨与入账峰值 | 写>>读 | 金额准确 | 分桶、NX 占位、MQ 入账 |
| 热搜突发 | 热搜与读风暴 | 读>>写 | 可短暂旧 | 多级缓存、热 key 扩散、读从库 |
| 直播弹幕 | 直播弹幕与礼物 | 写>>读 | 展示可丢 | Kafka 分区、合并推送、少落库 |
| 点赞播放 | 点赞与播放计数 | 写+读 | 可近似 | INCR、Set 去重、定时刷 DB |
| 验证码短信 | 验证码与通知洪峰 | 写>>读 | 频控准确 | 多维 NX、MQ 发码、通道限速 |
| 支付回调 | 支付回调与结算峰值 | 写突发 | 幂等推进 | notify 唯一键、CAS 订单、异步结算 |
| 投票抽签 | 投票与限量抽签 | 写+读 | 票准/不超发 | SADD、Lua 扣名额、DB UNIQUE |
一致性光谱
可丢展示 / 可近似数字 最终一致 强一致
────────────────────────────────────────────────────────►
直播弹幕采样 点赞/热搜缓存 步数榜/礼物榜 秒杀/抢票/红包金额
通用解法速查
| 问题 | 解法 | 详见 |
|---|---|---|
| 入口打穿 | 限流、排队、令牌 | 缓冲与流量塑形 |
| 写峰过高 | MQ、合并窗口 | 消息队列、时间窗口设计 |
| 读峰过高 | CDN、L1、Redis、从库 | 缓存与多级缓冲、热搜与读风暴 |
| 不能超卖 | Lua/DB 原子扣减 | 秒杀与抢购、12306春节高峰 |
| 不能重复领 | 唯一键、SET NX | 红包雨与入账峰值、投票与限量抽签 |
| 不能重复通知 | notify_id 幂等 | 支付回调与结算峰值 |
| 通道被打满 | MQ + Worker 令牌桶 | 验证码与通知洪峰 |
| 热 key | 分桶、本地缓存、副本读 | 缓存与多级缓冲 |
| 持久化滞后 | 批量 UPSERT、对账 | 数据层设计 |
架构分层(所有场景共用)
接入缓冲 → 内存计算 / MQ → 数据层(按一致性要求同步或异步)