跳转至

45 分钟架构演进白板模板

30 秒版(开场)

架构白板常给 开放式业务场景(设计 IM / 外卖 / 企业知识平台),45 分钟练习 澄清 → 估算 → MVP → 扩展 → 非功能 → 演进。本模板整合 03 系统设计 单场景能力,形成 完整叙事;不是新知识点,而是 白板交付结构。

3 分钟版(精讲深度)

  1. 是什么:可复用的白板时间盒与话术,展示 Staff/架构师级结构化思维。
  2. 为什么:架构实践者差在「散点懂很多,45min 讲不完整」;本模板是 架构师岗必练。
  3. 怎么做:按下面 7 段推进,每段留 3~8 分钟,留 5 分钟 Q&A。

10 分钟版:45 分钟时间盒

flowchart LR
  A[0-5 澄清] --> B[5-10 估算]
  B --> C[10-20 MVP]
  C --> D[20-28 扩展]
  D --> E[28-35 非功能]
  E --> F[35-40 演进路线图]
  F --> G[40-45 Q&A]

第 1 段:澄清需求(0~5 min)

关键清单:

维度 示例问题
规模 DAU、QPS 峰值、数据量级
延迟 P99 目标、强一致 vs 最终一致
功能 核心路径 vs 二期
约束 预算、团队、已有系统

话术:「我先确认范围,避免过度设计;如果 100 万 DAU 和 1 亿 DAU 方案会不同。」

第 2 段:容量估算(5~10 min)

背公式(与 S-ARCH-18 容量 一致):

  • 平均 QPS = 活跃用户 × 观察周期内人均请求 / 周期秒数;峰值应优先来自历史曲线、 业务事件和地域分布。没有数据时再声明一个假设系数并做 sensitivity,不能把 3~10 当行业常量
  • 存储 = 日增 × 保留天数 × 副本系数
  • 带宽 = QPS × 平均响应体

写出 数量级 即可,精确到个位无意义。

第 3 段:MVP 架构(10~20 min)

白板上至少包含:

[Client] → [LB/GW] → [Go API] → [Cache?] → [DB]
                      ↓
                    [MQ?]
  • 标 读写路径 与 数据所有权
  • Go 选型理由一句:goroutine 高并发、部署简单
  • 引用具体模式:秒杀 → S-ARCH-02;幂等 → S-ARCH-04

第 4 段:扩展与瓶颈(20~28 min)

按 10x 压力 讲改动:

瓶颈 手段
读 缓存、CDN、读副本
写 先定位锁/索引/事务/热点;再考虑批处理、分片或异步派生。需要同步确认的核心写不能为提吞吐随意异步化
热点 本地缓存、请求合并
单点 冗余只是第一步;还要有 quorum/leader fencing、故障转移、数据恢复与演练

画 Before / After 小图,不要堆组件名词。

第 5 段:非功能(28~35 min)

架构师差异化段落:

主题 要点
可用性 多副本、熔断 S-ARCH-09
可观测 指标/日志/链路 S-ARCH-16
SLO 错误预算 S-ARCH-17
安全 S-SOL-07 一句
多租户 若 B 端则 S-SOL-05

第 6 段:演进路线图(35~40 min)

三阶段叙事(提问者最爱):

阶段 目标 架构变化
MVP 最小闭环 从业务不变量出发选择最少组件;不默认必须有 Redis
10x 已验证瓶颈 针对读、写、热点或 fan-out 的证据做缓存、批处理、队列或分片
100x / 多区域 地域延迟或隔离需求明确 评估分片、单元化、主备或多活;多活不是规模增长后的自动终点

提及 绞杀者 若从遗留迁移:S-SOL-02。

第 7 段:Q&A(40~45 min)

准备 3 个 主动风险:

  • 「最大风险要与题目不变量对应;若订单写必须同步确认,先做幂等、容量与降载, 异步化仅用于可延迟的派生处理,对账是检测/修复防线而不是一致性的替代品」
  • 「回滚策略是特性开关 + 网关切流」
  • 「团队能力不足则 Phase 1 不上 Mesh」

生产场景(练习建议)

用本仓库题目 组卷模拟:

模拟题 关联题单
企业知识库 + AI 问答 S-AI-02 + S-SOL-05 + S-ARCH-16
订单中台从单体演进 S-SOL-01/02/03 + S-ARCH-12
多租户 SaaS 报表 S-SOL-05 + S-ES-02 + S-SOL-03

录音 45 分钟自述,回听是否跳步、是否缺数字。

架构取舍

过早 100x 设计 只讲 MVP
提问者觉虚 觉无深度

平衡:MVP 具体 + 演进 credible。

深挖问答

  1. 估算离谱怎么办? → 说明假设,给 sensitivity(DAU ±2x 时 DB 变化)。
  2. Go 为何不用 Java? → 团队、GC 延迟、容器密度 — 不贬损,讲 tradeoff。
  3. 如何体现架构师而非高级开发? → 多讲 域、演进、治理、组织(S-SOL-01/06)。
  4. 白板画乱? → 从左到右数据流,组件 ≤7 个/图,分图。

反模式与事故

  • 跳过澄清直接画 Kafka → 被追问惨
  • 无数字 → 不可信
  • 不会说「这块 Phase 2」 → 时间不够答不完

代码示例

非代码题;配合 learning-path-senior.md 架构师 4 周计划演练。

延伸阅读