免費試讀課程單元 · 系統設計面試實戰指南

架構演化

一台伺服器如何一步步蛻變為支撐千萬用戶的龐大系統?

Wondering 課程《系統設計面試實戰指南》的第 1 個課程單元

從一台伺服器開始

系統設計面試不需要一開場就搬出最複雜的分散式架構。

先用單一伺服器加單一資料庫建立一個可運作的最小方案。

面試開場的兩種做法
  • 堆砌名詞
  • 最小方案

這個最小方案是後續所有演化的起點。每加一個元件,都應該有理由。

演化的驅動力

架構不會自己長大,是需求推著它長。

主要有三股力量:使用者成長、流量增加,以及可用性需求。

什麼推動架構演化
  • 使用者成長: 使用者變多後,最小方案開始吃緊。
  • 流量增加: 尖峰流量會造成服務不穩定。
  • 可用性需求: 服務必須在壓力下維持穩定。
  • 最小方案: 單一伺服器與單一資料庫。
  • 新增元件: 負載平衡、快取等逐步加入。

沒有這些壓力,就不需要加元件。過早優化只是替自己增加複雜度。

常見的演進路徑

當壓力出現,元件通常依一個常見順序加入。

先是負載平衡與快取,接著是資料庫讀寫分離與分片,最後是非同步佇列與多區部署。

逐步加入元件的順序
  • 最小方案: 單一伺服器與單一資料庫先跑起來。
  • 分流與快取: 加入負載平衡與快取以分攤壓力。
  • 資料庫擴展: 做讀寫分離,必要時再分片。
  • 削峰與多區: 用非同步佇列與多區部署應付尖峰與可用性。

這不是死規則,而是一條可以幫你排序的參考路線。

先說瓶頸,再談方案

每一次演化,都要先說明目前的瓶頸。

例如伺服器 CPU 不足、資料庫讀取過慢,或尖峰流量造成服務不穩定。

瓶頸對應的改善方案

說清楚瓶頸之後,再提出對應的改善方案。順序反過來,就變成在堆砌技術名詞。

需求到設計的思考迴圈

這種思考方式是一個可以重複跑的迴圈。

從需求出發,找出瓶頸,選一個對應方案,然後再看新的瓶頸在哪裡。

結構化思考迴圈
  • 釐清需求: 確認使用者成長、流量與可用性需求。
  • 指出瓶頸: 說明目前卡在哪裡,例如資料庫讀取過慢。
  • 提出方案: 選擇對應的元件來解決這個瓶頸。
  • 說明取捨: 講清楚這個選擇換來什麼、付出什麼。

每跑一圈,系統就往前演化一步,而且每一步都說得出理由。

避免過早優化

最常見的失誤,是在還沒有瓶頸時就加元件。

分片、多區部署都有代價。沒有需求支撐,它們只是增加複雜度。

元件要加在瓶頸出現前還是後?

那麼,什麼時候加才算剛好?

帶走這三件事

從最小方案開始:單一伺服器與單一資料庫先跑起來。

先講瓶頸再講方案:伺服器 CPU 不足、讀取過慢、尖峰不穩,各有對應解法。

呈現取捨:由需求、瓶頸到設計選擇的結構化思考,比堆砌技術名詞更有說服力。

架構演化的三個重點
  • 起點
  • 單一伺服器: 先建立可運作的最小方案。
  • 單一資料庫: 後續演化都從這裡長出來。
  • 演化元件
  • 負載平衡與快取: 分攤伺服器與讀取壓力。
  • 讀寫分離與分片: 處理資料庫層的成長。
  • 非同步佇列與多區部署: 應付尖峰流量與可用性需求。
  • 表達方式
  • 先說明目前的瓶頸: 讓對方知道你為什麼要改。
  • 再提出改善方案: 清楚呈現取捨而非名詞。

由需求、瓶頸到設計選擇

自我檢測

設計系統的最小可運作方案時,應採用單一伺服器加單一資料庫嗎?

  • 是
  • 否

答案: 是

是。系統應先從單一伺服器與單一資料庫開始,之後再依需求和瓶頸加入元件。

在壓力逐步出現時,一條常見參考路線是:先加入_____來分散請求,再加入_____保存常用結果;之後以_____分開資料庫讀取與寫入,並以_____切分資料;最後用_____延後處理,配合_____跨區提供服務。

答案: 在壓力逐步出現時,一條常見參考路線是:先加入負載平衡來分散請求,再加入快取保存常用結果;之後以讀寫分離分開資料庫讀取與寫入,並以分片切分資料;最後用非同步佇列延後處理,配合多區部署跨區提供服務。

這是一條常見的演進參考路線,不是無條件套用的固定規則。每個元件仍需由實際需求與瓶頸支持。

一台伺服器的 CPU 已不足,導致服務在流量增加時變慢。下一個較應優先考慮的方案是什麼?

  • 加入負載平衡
  • 加入資料庫讀寫分離
  • 加入資料庫分片
  • 直接部署多個區域

答案: 加入負載平衡

負載平衡可以把請求分散到多台伺服器,直接緩解單台伺服器的 CPU 壓力。快取、讀寫分離與分片主要處理其他類型的瓶頸。

繼續學習

這是《系統設計面試實戰指南》共 23 個課程單元中的第 1 個。接下來:

  1. 系統架構的循序擴展實戰
  2. 規模估算
  3. 解題框架
  4. 流量限制
  5. 一致雜湊

免費開始這門課程

Wondering 把任何主題變成可以閱讀、觀看或收聽的短課程單元,並附有練習題和 AI 家教。