高并发概述

返回 高并发

高并发不是「把机器堆多」,而是在正确边界做削峰、合并、异步与一致性取舍。本专题用多个国民级场景讲清「什么问题 → 什么解法」,并串联通用能力。

选型入口场景选型指南


业务场景库

场景核心矛盾一致性详解
微信步数日榜海量上报、实时排行最终一致排行榜与实时计数
12306 春节查询风暴、不能超卖强一致12306春节高峰
秒杀 / 双 11瞬时抢购、热点 SKU强一致秒杀与抢购
红包雨 / 福袋亿级点击、金额守恒准确 + 异步展示红包雨与入账峰值
热搜 / 突发新闻单条内容读爆炸可短暂旧热搜与读风暴
直播弹幕 / 礼物写洪峰、低延迟展示展示可有损直播弹幕与礼物
点赞 / 播放量极高频 +1数字可近似点赞与播放计数
验证码 / 短信活动瞬间海量发码频控必须准验证码与通知洪峰
支付回调促销后集中通知幂等、恰好一次支付回调与结算峰值
投票 / 限量抽签一人一票、名额有限票准确 / 不能超发投票与限量抽签

一致性光谱

展示可丢 / 可近似          最终一致                 强一致(库存·金额)
──────────────────────────────────────────────────────────────►
直播弹幕        点赞·热搜·步数榜        红包·投票入账      秒杀·12306·抽签

问题分层模型

用户洪峰
  ▼
接入层:CDN / 网关 / 限流 / 排队 / 令牌     ← 数据层外缓冲
  ▼
计算层:Redis 聚合 / 扣库存 / MQ 消费        ← 内存 + 消息
  ▼
数据层:同步订单库存 / 异步批量 / 对账       ← MySQL 等
层级典型手段
接入缓冲虚拟排队、验证码、舱壁隔离
内存/MQZSet、INCR、Lua DECR、Kafka 分区
数据层强一致写 / 批量 UPSERT / 从库读

各场景一分钟解法

微信步数日榜

上报 → MQ 立即返回 → max(步数) 合并 → Redis 排行 → 批量落库。
排行榜与实时计数

12306 春节

查询走缓存;下单走令牌 + 原子扣库存;支付/关单走 MQ。
12306春节高峰

秒杀抢购

静态页 + 秒杀令牌 + Redis 预扣 + 幂等订单 + 超时回滚库存。
秒杀与抢购

红包雨

红包分桶防热 key;NX 防重复;MQ 异步入账;金额对账。
红包雨与入账峰值

热搜读风暴

CDN + L1 + Redis;热帖本地缓存;写走 MQ 合并;读走从库。
热搜与读风暴

直播弹幕

Kafka 按房间分区 → 时间窗合并 → WebSocket 推送;不全量落 MySQL。
直播弹幕与礼物

点赞 / 播放

SADD 去重 + INCR;定时批量刷 DB;读 Pipeline。
点赞与播放计数

验证码 / 短信洪峰

多维冷却 + MQ 异步发送 + Worker 对齐通道 QPS;校验只打 Redis。
验证码与通知洪峰

支付回调

验签 → 幂等表 → 条件更新订单 → 200 快速 ACK → MQ 发货/分账。
支付回调与结算峰值

投票 / 限量抽签

投票:SADD 判重 + INCR;抽签:Lua 扣 remain + DB 唯一约束防超发。
投票与限量抽签


通用解法对照表

你的问题推荐解法
怕打穿数据库接入限流 + MQ + 只缓存读
不能超卖Lua / 乐观锁 + 幂等订单
不能重复领取唯一约束 + Redis NX
数字可以不准INCR + 异步合并写库
榜单可以慢几秒MQ 合并 + ZSet
午夜 / 整点峰分区消费 + 客户端错峰 + 扩容
单 key 过热分桶、本地缓存、副本

与其它架构章节

章节关系
缓存架构三级缓存通用设计
消息队列Kafka / RocketMQ
数据库架构主从、分片
Redis命令与集群细节

设计检查清单(汇总)

检查项适用场景
同步路径是否过重全部
能否超卖 / 超发抢票、秒杀、红包
幂等与重复提交抢票、秒杀、红包、点赞
热 key榜、热搜、秒杀 SKU、红包活动
展示缓存是否当扣减依据抢票、秒杀
降级策略全部
对账红包、库存、榜、计数