CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

容量估算与架构分层

分类:工程技术 · 路径:docs/topics/capacity-and-architecture/README.md

#system-design#capacity#load-balancing#sharding#gateway

用容量估算、L4/L7/GSLB 负载均衡、分库分表与一致性哈希、API 网关、压测方法学搭起系统骨架

父主题

系统设计:从容量估算到一致性与可观测

子主题(0)

容量估算与架构分层

0. 元信息

1. 学习路线

容量估算公式 → 读 / 写 QPS 拆分与峰值倍数 → 存储与带宽估算 → 成本估算
  → DNS 解析与 GSLB 调度
  → L4 负载均衡(Nginx Stream / LVS / HAProxy / 云 LB)
  → L7 负载均衡(Envoy / Nginx / APISIX / Kong)
  → API 网关(鉴权、限流、灰度、协议转换)
  → 无状态业务 + 有状态数据
  → 分库分表(水平 / 垂直 / 冷热分层 / 一致性哈希)
  → 读写分离与主从延迟
  → 压测方法学(wrk / vegeta / k6 / 影子流量 / 全链路)

每一步都要落到一道白板题:短链 / Twitter timeline / 限流 / 排行榜。

2. 阶段周数分配

精简子主题不固定周数。按 §3 顺序完成,卡住时回到 §9.3 论文与白板视频。

3. 九阶段表

阶段核心知识实践产出学会标准
1容量估算公式短链估算表5 分钟估出 QPS 与存储
2DNS / GSLB一次跨地域 ping能解释为什么用 DNS 调度
3L4 LBLVS / HAProxy 实测能区分 L4 与 L7 的边界
4L7 LB / API GatewayEnvoy / APISIX 最小配置能讲清鉴权 / 限流 / 灰度
5无状态业务容器化部署能解释为什么要无状态
6一致性哈希3 节点 Redis 客户端节点上下线命中率变化 < 5%
7分库分表ShardingSphere / Vitess 配置能讲清分片键、跨片事务、扩容
8读写分离与冷热分层MySQL 主从 + 冷库能解释主从延迟的影响
9压测方法学wrk / k6 全链路压测报告含 P50/P95/P99、错误率、饱和度

4. 第一周任务

精简版省略固定日程。先完成阶段 1~3 的最小可用版本:估算表 + DNS 调度 + L4 压测。

5. 阶段通用验收

精简版省略;每个产出至少保留估算参数、组件图、压测报告、版本与日期。

6. 最终验收

精简版省略;以 §3 第 9 阶段和 §9.4 问题口述检查为准。

7. 综合项目

精简版省略;成果并入父主题百万 QPS 短链项目(容量估算 + 分层组件图 + 压测报告)。

本主题贡献

交付物清单

  1. capacity/estimate.md:DAU / QPS / 存储 / 带宽 / 成本 5 步表 + 短链 case:DAU 1e7、单条跳转 1.5 KB、平均读 QPS 2 万、峰值倍数 5×、存储 / 天 1.3 TB、Redis 命中率 95%;
  2. arch/layers.svg + arch/layers.md:8 层组件图(DNS → GSLB → L4 → L7 → 网关 → 业务 → 缓存 → DB → MQ),每层标注职责、依赖、失败模式、降级策略;
  3. bench/l4_vs_l7.md:LVS(L4)vs Envoy(L7)压测对照,含 P50 / P95 / P99、CPU、conn established、错误率四张表与瓶颈定位;
  4. bench/sharding.md:ShardingSphere 4 库 8 表配置 + EXPLAIN ANALYZE + 压出 QPS ≥ 10 万的报告(含 P99 ≤ 50 ms),附分片键选择证据。

验收标准

8. 推荐资料

精简版省略;使用 §9.3 和 §9.6 Source。

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

容量估算与架构分层是系统设计的「地基」。没有这块,后面所有缓存、一致性、限流、观测都失去了衡量尺。Jeff Dean 2012 年的 LADIS 演讲 “Achieving Rapid Response Times in Large Online Services” 把「延迟、并行、队列、批处理、长尾」五条经验写进系统设计界。Twitter、Facebook、LinkedIn 在 2010~2015 年的工程博客几乎覆盖了所有「估算 → 分层 → 压测」的标准范式。

9.2 概念地图

flowchart TB
  Estimate[容量估算: DAU/QPS/存储/带宽/成本] --> DNS
  DNS --> GSLB[GSLB 跨地域调度]
  GSLB --> L4[L4 负载均衡]
  L4 --> L7[L7 负载均衡 / API 网关]
  L7 --> App[无状态业务]
  App --> Cache[缓存层]
  App --> DB[数据层]
  DB --> Shard[分库分表 + 一致性哈希]
  DB --> MasterSlave[读写分离]
  App --> MQ[消息层]
  Estimate -.约束.-> Cache
  Estimate -.约束.-> DB
  Estimate -.约束.-> MQ
  Estimate -.成本.-> Cost[基础设施成本]

关系说明:容量估算决定每一层的容量目标;DNS / GSLB 解决地域调度;L4 / L7 解决集群内调度;网关做协议转换与边界保护;分库分表与读写分离解决单库容量边界。

9.3 基础知识讲解

9.3.1 论文 / 规范

9.3.2 书

9.3.3 博客 / 文档

9.3.4 人物

9.3.5 方法

9.4 经典问题与经典案例

问题为什么重要最简答案
怎么估读 QPS容量估算第一步DAU × 每用户操作数 / 时间窗口 × 峰值倍数
写 QPS 怎么估与读 QPS 经常差 10×写场景单独算;订单 / 支付写占比高
存储怎么估决定 DB 与对象存储容量QPS × 对象大小 × 留存期 × 副本系数
带宽怎么估决定 CDN 与内网规格平均带宽 + P99 突发带宽
成本怎么估决定技术选型把每层的 IOPS / 带宽 / 存储换算成 USD/月
DNS 调度 vs L4 调度地域与集群调度DNS 慢(TTL 分钟级);L4 精确
一致性哈希为什么节点上下线命中率影响最小哈希环 + 虚拟节点;Dynamo 经典
分库分表键怎么选影响查询与扩容选高基数 / 高频查询的列;避免热点
读写分离延迟怎么控主从延迟会读到旧值强制读主 / 半同步复制 / 缓存读
限流在网关还是进程内越靠前越省资源网关层做粗粒度;进程内做细粒度
压测数据怎么造不能用生产数据影子流量 / 合成数据 / 脱敏回放
影子流量 vs 流量回放验证新架构影子流量实时旁路;回放可控可加速

9.5 学习难点

9.6 技术标准与接口

9.6.1 Entity

名称版本组织状态 / 可访问性
一致性哈希Karger 1997ACM STOC经典算法
Envoy xDS1.xCNCFGA;Apache-2.0
Kong / APISIXKong 3.x / APISIX 3.xKong Inc. / ApacheGA;Apache-2.0
ShardingSphere5.xApacheGA;Apache-2.0
Vitess18+PlanetScale / CNCFGA;Apache-2.0
wrk / wrk2持续维护wg/wrk活跃
k6持续维护Grafana LabsApache-2.0
vegeta持续维护tsenart/vegetaMIT

9.6.2 Scope

9.6.3 Structure

9.6.4 Ecosystem

9.6.5 Depth Tiers

层级能力容量与架构主题可观察标准
L0知道存在知道 L4 / L7 / GSLB / 网关 / 估算公式
L1看得懂示例能读 Nginx / Envoy / ShardingSphere 配置
L2能正确调用能配 L7 网关、跑一致性哈希、压出 10 万 QPS
L3能解释与排错能白板讲清分层、选对分片键、定位压测瓶颈
L4能设计与扩展能设计异地多活、跨地域流量调度

本计划目标:L3

9.6.6 Source

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力
  9. 安全与可靠性

本计划归属:工程技术 主 + 计算机基础 辅。

直接依赖(2)

查看知识图谱