負載均衡 (Load Balancing)

★★★★★Draft

FromSystem Design InterviewGrokking

📚 From the Books

負載均衡 (Load Balancing)ConceptScaling

負載均衡器把進來的流量攤平到一組伺服器上。它是水平擴展的入口,也是 Web 層高可用的關鍵——單台掛了,流量自動繞過去。

🧠 Core Ideas

TIP

使用者只看到 LB 的公開 IP,看不到後面有幾台伺服器。LB 一邊分流、一邊盯著每台的健康狀態,把故障節點自動摘掉——擴容與故障轉移都變成「動池子」而非改客戶端。

⚖️ Tradeoffs

分流策略與健康檢查
  • 分流策略:輪詢 (Round-Robin)、隨機、依 CPU / 記憶體使用率加權等。
  • LB 持續追蹤後端狀態;當某台無回應、報錯或錯誤率升高時,自動停止把流量導過去。
  • 故障後補一台健康的伺服器進池,LB 會自動開始送請求給它——擴容對客戶端透明。
放在哪一層

為了同時發揮擴展性與冗餘,可以在每一層都做負載均衡

  1. 使用者 ↔ Web 伺服器
  2. Web 伺服器 ↔ 內部平台層(應用 / 快取伺服器)
  3. 平台層 ↔ 資料庫

不是只有最前面那一層才需要 LB。

三種實作 — 從哪個開始
  • 智慧客戶端 (Smart Client):把分流邏輯內建進客戶端,維護一個主機池。小規模好用,長大後要獨立出來。
  • 硬體 LB(如 Citrix NetScaler):效能最高但極貴、設定不易;多半只用在流量進入基礎設施的第一個接觸點
  • 軟體 LB(如 HAProxy):介於兩者的混合方案,會自動做健康檢查、動態增減後端。

建議:多數系統從軟體 LB 開始,有需要再往智慧客戶端或硬體方案遷移。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading