B.1 淘寶 14 次演進 vs 本書章節對照總表
教學模型,非淘寶真實路徑。用法:上課前先看「瓶頸」,猜「解法」,再翻對應章節驗證。
| # | 演進 | 瓶頸 → 解法 → 對應章節 |
| 1 | 單機 LAMP 一體 | 流量稍漲單機即滿載 → Web 與 DB 分離部署 → Ch 1.2 |
| 2 | 應用性能調優 | CPU/內存/I-O 競爭 → JVM 調優、連接池 → Ch 1.3 |
| 3 | 引入快取 | DB 讀寫瓶頸 → 本地快取 + Redis/Tair → Ch 2.1–2.2 |
| 4 | 快取治理 | 穿透、擊穿、雪崩 → 布隆過濾、熔斷、預熱 → Ch 2.3–2.4 |
| 5 | 無狀態 + 負載均衡 | 單機扛不住併發 → Nginx 集群 + Session 共享 → Ch 3.1–3.2 |
| 6 | 入口與多活 | 單機房單點 → DNS/CDN/LVS/異地多活 → Ch 3.3–3.4 |
| 7 | 資料庫拆分 | 單庫寫滿 → 讀寫分離、垂直分庫 → Ch 4.1–4.2 |
| 8 | 分庫分表 | 大表慢查詢 → Hash/時間水平拆分 → Ch 4.3–4.4 |
| 9 | 服務化拆分 | 單體發布耦合 → DDD 垂直拆分、Dubbo RPC → Ch 5.1–5.2 |
| 10 | 服務治理 | 級聯雪崩 → Nacos、限流熔斷降級 → Ch 5.3–5.4 |
| 11 | 異構數據 + 訊息 | 搜尋與削峰撐不住 → ES/HBase、RocketMQ/Kafka → Ch 6.1–6.3 |
| 12 | 容器化 | 環境不一致、部署慢 → Docker、Compose → Ch 7–8 |
| 13 | 容器編排 | 上千容器管不動 → K8s、Service/Ingress/HPA → Ch 9–11 |
| 14 | Serverless + AI 原生 | 成本與 AI 推理壓力 → Knative、FinOps、AI 網關/AgentInfra → Ch 12–16 |
# 建議讀法:按演進順序做實驗
docker compose up -d --build # 演進 12:單機多容器(Ch 7.4)
kubectl apply -f shop.yaml # 演進 13:上 K8s(Ch 9.3)
kubectl scale deploy shop --replicas=5 # 演進 13:水平擴展(Ch 11.2)
分組速記(四階段)
| 階段 | 演進範圍 | 核心矛盾 | 關鍵詞 |
| 單機與快取 | 1–4 | 一台機器撐不住讀寫 | 分離部署、Redis、防雪崩 |
| 規模化 | 5–8 | 流量漲、庫寫滿 | 無狀態、LVS/CDN、分庫分表 |
| 服務化 | 9–11 | 單體耦合、峰值壓垮 | DDD、熔斷降級、MQ 削峰 |
| 雲原生 | 12–14 | 環境亂、容器多、成本高 | Docker、K8s、Serverless/AI |
# 期中自測:遮住右欄,說出解法與章節
# 瓶頸「DB 讀寫瓶頸」→ 解法?→ 章節?
# 瓶頸「上千容器管不動」→ 解法?→ 章節?
kubectl get deploy,svc,hpa # 演進 13 驗收:三種物件都在才算通
實驗對應表
| 演進 | 動手做 | 驗收命令 |
| 3–4 快取 | Compose 起 Redis,壓測穿透 | docker compose ps、redis-cli ping |
| 5 負載均衡 | Nginx + 2 副本 Web | curl http://localhost 輪詢命中 |
| 11 削峰 | RocketMQ 收發 1 萬條 | 生產消費無堆積 |
| 12–13 容器編排 | Compose → K8s 遷移同一服務 | kubectl get pods -o wide 全 Running |
本章小結
- 前 4 次演進:單機與快取(Ch 1–2);5–8:規模化與拆庫(Ch 3–4)。
- 9–11:服務化與削峰(Ch 5–6);12–13:容器與編排(Ch 7–11)。
- 14:Serverless 與 AI 原生(Ch 12–16),是本書後半主線。
想一想
- 為什麼「快取」出現在「負載均衡」之前?順序顛倒會付出什麼代價?
- 第 8 次(分庫分表)與第 9 次(服務化)都談「拆」,拆的對象與代價有何不同?
- 若只能選一次演進上容器,你會選第 12 次還是第 13 次?為什麼?