Skip to content

架构师修炼:从单体到百万 QPS ​

一个专门练「架构判断力」的栏目。不教组件是什么(那是后端技术栈强化的活),只教三件事: ① 同一个业务,QPS 差 10 倍,架构差一个数量级 —— 什么时候该演进、演进成什么样;② 一致性在真实系统里到底怎么落地 —— Redis / MySQL / Kafka / etcd 的同步机制、参数与代价;③ 每个组件挂了怎么办 —— 故障边界、降级路径、对账兜底。

这个栏目和别处有什么不同 ​

栏目回答的问题典型提问
后端技术栈强化(S1–S10)组件是什么、原理是什么「Redis 的 skiplist 为什么这么设计」
分布式系统面试详解理论是什么「CAP 怎么理解,Raft 怎么选主」
架构师修炼(本栏目)我该选哪个、什么时候换、挂了怎么办「1 万 QPS 和 100 万 QPS,MySQL 主从方案有什么不同」

一句话区分:S1–S10 教你"零件",本栏目教你"装配图纸 + 施工规范 + 竣工验收"。


一、架构师能力阶梯(A1 → A5) ​

面试官判断你「是背过还是做过」,看的是你在哪一级。每一级都有可验证的行为,不是感觉。

级别名字可验证行为典型失败信号
A1会用能按文档把 Redis/Kafka/MySQL 主从跑起来「配了就行」
A2懂原理能说清 binlog/复制缓冲/ISR 的机制只会背结论,问「为什么」就断
A3会算量能估出单机容量、连接数、内存、QPS 上限,给出数字「应该能扛住吧」
A4会选型同一个问题能给 3 个方案,并说清各自的代价与适用边界「大厂都用 XX」(无边界意识)
A5会演进与兜底能画出 0→10 万 QPS 的演进路径,说清每一步的触发指标、迁移方案、回滚方案、数据一致性兜底只会设计终态,不会迁移

本栏目的验收标准就是 A3 + A4 + A5。每篇末尾的「面试追问链」和「自测清单」都按这个标准设计。


二、六道坎:QPS 每上十倍,架构换一次形态 ​

这是本栏目的主线骨架。所有篇章都是这六道坎的展开。

坎量级第一个撑不住的组件新增的架构手段对应篇章
0< 100 QPS——单体 + 单库,先跑通业务02
1~1,000 QPS单机 CPU/GC/锁垂直分层、连接池、本地缓存、静态化02
2~10,000 QPSMySQL 读读写分离、Redis 缓存、慢查询治理03 · 04
3~100,000 QPSMySQL 写 + 热点服务拆分、MQ 削峰、缓存分片、限流熔断05 · 12
4~1,000,000 QPS单库容量 + 单机房分库分表、多级缓存、异步化、单元化06 · 07
5~10,000,000 QPS全局热点 + 跨地域延迟边缘计算、读写模型反转、预计算、就近接入07 · 16

最重要的一句话:架构不是一步到位的,是被 QPS 推着走的。面试里说「我直接上分库分表 + 多活」,等于说「我不会算成本」。正确姿势是:先算量 → 找到第一个瓶颈 → 只解决它 → 说清触发下一个坎的指标。


三、学习地图 ​

A · 方法论(先建判断力,2 篇) ​

篇内容你能得到
00 架构师思维与设计方法论五步设计法、量级估算公式、方案对比矩阵、白板答题模板拿到任何场景都能开口有条理
01 QPS 分级与架构演进地图六道坎的量化标准、同一件事在 6 个量级下的做法对照一眼判断「这题该按几万 QPS 答」

B · 演进六阶段(真实落地,6 篇) ​

篇内容落地物
02 单体架构的极限与分层单机到底能扛多少(CPU/连接/GC/锁四项算量)、垂直分层与边界压测方法 + Go 侧优化清单
03 MySQL 主从与读写分离落地binlog 三种格式、GTID、半同步、并行复制、主从延迟治理、切换方案my.cnf 参数 + 延迟监控 SQL
04 Redis 高可用与缓存体系落地主从 PSYNC/repl-backlog、哨兵 vs Cluster、槽迁移、脑裂与丢写哨兵/Cluster 配置 + 丢写兜底
05 Kafka 削峰与可靠投递落地ISR/HW/LEO、acks 与 min.insync、幂等生产者、事务、rebalance、积压处置producer/consumer 参数 + 积压预案
06 分库分表与在线迁移双写什么 QPS 才该拆、分片键选型、全局 ID、不停机双写迁移六步法迁移脚本流程 + 校验 SQL
07 多活容灾与全球化架构同城双活/异地多活、单元化、流量调度、数据冲突(LWW/CRDT)RTO/RPO 拆解 + 切流演练

C · 一致性专题(面试重灾区,4 篇) ​

篇内容你能回答
08 缓存与 DB 一致性落地Cache Aside / 延迟双删 / binlog 订阅,每种方案的失败窗口与兜底「缓存和 DB 不一致了怎么办」
09 分布式事务与最终一致落地2PC/TCC/Saga/本地消息表/Seata,选型矩阵与代价「跨服务转账怎么保证不丢钱」
10 etcd 与 Raft 选主租约落地Lease、Watch、Revision、MVCC、选主实现、脑裂与 fencing「主节点假死怎么防止双写」
11 幂等去重与 Exactly-Once幂等键设计、去重表、Kafka 端到端 exactly-once 的真实边界「消息重复消费怎么保证不重复扣款」

D · 稳定性与工程落地(3 篇) ​

篇内容
12 限流熔断降级与背压令牌桶/漏桶/滑动窗口、自适应限流(BBR)、熔断状态机、Go 落地
13 容量规划压测与故障演练容量模型、全链路压测、影子库、Chaos 演练剧本
14 备份恢复与故障复盘备份策略、RPO/RTO、故障复盘模板、SLO 与错误预算

E · 综合实战(4 篇) ​

篇内容
15 案例:AI 剪辑任务平台架构贴合目标岗位:GenAI 任务编排、GPU 队列、对象存储、幂等、限流、成本控制
16 案例:Feed 与社区互动架构读扩散 vs 写扩散、点赞计数、排行榜、热点 key
17 面试:白板架构设计与追问链白板答题模板 + 6 道高频题的标准拆解 + 追问链演练
18 实验手册:Go 落地实验14 个可跑的实验(主从延迟、etcd 选主、Kafka 幂等、Redis 分布式锁…)

F · 性能调优实战(子栏目,9 篇) ​

篇内容
19 pprof 实战:从火焰图到架构决策把「四个天花板」变成可复用的定位能力:观测决策图、CPU 火焰图、内存与 GC、goroutine 与锁阻塞、27 条常见问题手册、生产环境安全采集、7 个完整案例、30 道面试题;配 8 个可跑实验(code/architect/pprof-lab/,零依赖、自带压测器,-fix 直接对比修复前后)

四、每篇的统一结构(怎么读最高效) ​

建议每天 1 篇 + 1 个实验:先读第 ② 节的表格建立结论,再看 ③④ 理解落地,最后合上文档用 ⑥ 的追问链自测。做不出就回读。


五、里程碑验收(做到才算过关) ​

里程碑验收动作对应篇
M1 会算量给定「日活 100 万、人均 20 次请求、峰值系数 3」,5 分钟内算出峰值 QPS、所需实例数、DB 连接数、缓存内存00 · 01
M2 会定位瓶颈给定「P99 从 50ms 涨到 800ms」,能列出 6 条排查路径并排出优先级;能说清该抓哪个 profile 并给出命令02 · 13 · 19 pprof 实战
M3 会讲组件落地能说清 MySQL 半同步、Redis 哨兵切换、Kafka acks=all、etcd Lease 各自丢数据的窗口在哪03 · 04 · 05 · 10
M4 会给一致性方案给「订单 + 库存 + 积分」跨服务链路,选出事务方案并写出补偿与对账逻辑08 · 09 · 11
M5 会画演进路径白板画出 0 → 10 万 QPS 的 5 步演进,每步给触发指标、迁移方案、回滚方案06 · 17
M6 会兜底对任意方案能立刻说出「这个组件挂了 → 现象 → 降级 → 一致性边界」全部(每篇都有「故障与一致性边界」)

六、和现有学习内容怎么衔接 ​

text
后端技术栈强化 S1 MySQL / S2 Redis / S3 Kafka / S8 分布式(原理)
                    │
                    ▼
        架构师修炼(本栏目:演进 + 落地 + 兜底)
                    │
                    ├──→ 17 白板面试实战 ──→ 面试
                    ├──→ 18 Go 实验手册 ──→ 项目/简历(可写进项目经历的硬核点)
                    └──→ 19 pprof 实战 ──→ 「瓶颈定位」的取证能力(8 个可跑实验 + 7 个案例)
  • 前置:至少过完 S1 MySQL、S2 Redis、S3 Kafka。没学过也能读,但遇到「为什么」需要回查原理篇(每篇都给好了链接)。
  • 配合:K8s Code 教程 解决「部署与编排」,本栏目解决「架构与数据」;19 pprof 实战 解决「怎么证明瓶颈在这一层」——02 篇的四个天花板、12 篇的背压、13 篇的压测拐点,都在那一栏里配了可跑的取证实验。
  • 产出:18 实验手册里的实验可以直接变成简历上的项目经历——「我用 Go 实现了带主从切换与对账兜底的订单链路,并压测验证了 X 万 QPS 下的丢数据窗口为零」,比「熟悉 Redis」强一百倍;19 pprof 实战的实验则给你可量化的性能数字(QPS / P99 / 分配量前后对比),这是简历上「性能优化」四个字唯一站得住脚的证据。

给面试的一句话

面试官问「你懂分布式吗」,不要背 CAP。直接说:「我会先算这个业务峰值多少 QPS,第一个瓶颈在哪,再决定要不要上这些组件——不然就是拿复杂度换虚荣心。」 这句话本身就是 A3+A4 的证明。

持续学习,持续构建。