API Gateway vs Load Balancer vs Reverse Proxy

API Gateway vs Load Balancer vs Reverse Proxy

部分內容由 LLM 生成,尚未經過人工驗證。

這三者經常被混淆,因為它們都位於 client 與 server 之間。然而,它們各自解決不同的問題。

功能光譜

  flowchart LR
    subgraph RP["Reverse Proxy"]
        A["SSL 終止"]
        B["快取"]
        C["壓縮"]
    end
    subgraph LB["Load Balancer"]
        D["流量分配"]
        E["健康檢查"]
        F["故障轉移"]
    end
    subgraph AG["API Gateway"]
        G["驗證授權"]
        H["速率限制"]
        I["轉換/分析"]
    end
    RP --> LB --> AG

Reverse Proxy

位於伺服器前端的代理,用於接收客戶端請求並轉發給後端伺服器。屬於通用型解決方案,不在乎內容類型。

核心功能

功能說明
SSL 終止處理 HTTPS 加解密,減輕後端負擔
快取快取靜態資源,減少後端請求
安全性隱藏後端伺服器架構
壓縮壓縮回應內容,加速傳輸

常見工具

  • Nginx - 高效能、廣泛使用
  • HAProxy - 專注於高可用性
  • Caddy - 自動 HTTPS、簡單配置

Load Balancer

專門分配流量的反向代理,目標是達成可擴展性高可用性

負載平衡演算法

演算法說明
Round Robin依序輪流分配
Least Connections分配給連線數最少的伺服器
IP Hash依據 client IP 決定伺服器,確保同一用戶連到同一伺服器
Weighted依據權重比例分配

L4 vs L7

  flowchart TB
    subgraph L4["Layer 4 (TCP)"]
        L4A["看到:IP + Port"]
        L4B["速度快,路由智慧有限"]
    end
    subgraph L7["Layer 7 (HTTP)"]
        L7A["看到:URL, Headers, Cookies"]
        L7B["可依路徑路由到不同服務"]
    end
層級優點缺點
L4效能高、延遲低無法依內容路由
L7路由靈活、功能豐富效能開銷較大

常見工具

  • AWS ALB - L7 應用層負載平衡
  • AWS NLB - L4 網路層負載平衡
  • GCP Load Balancer - 全球分散式

API Gateway

專門管理 API 的反向代理,適合微服務架構。將橫切關注點(cross-cutting concerns)集中管理。

核心功能

功能說明
身分驗證/授權JWT 驗證、OAuth、API Key
速率限制防止 API 濫用
請求/回應轉換修改 header、body、格式轉換
版本控制管理多個 API 版本
分析監控追蹤 API 使用狀況

常見工具

  • Kong - 開源、可擴展
  • AWS API Gateway - 雲端原生、與 AWS 整合
  • Apigee - Google 旗下、企業級功能

實際架構

  flowchart LR
    Client["Client"] --> CDN["CDN"]
    CDN --> Gateway["API Gateway"]
    Gateway --> LB["Load Balancer"]
    LB --> S1["Service A"]
    LB --> S2["Service B"]
    LB --> S3["Service C"]

現實中這三者經常組合使用,各司其職。

決策框架

需求建議方案
服務有多個實例Load Balancer
對外公開 APIAPI Gateway
需要驗證/速率限制API Gateway
需要 SSL + 快取Reverse Proxy
微服務架構API Gateway + Load Balancer

總結

  • Reverse Proxy - 通用型代理,處理 SSL、快取、壓縮
  • Load Balancer - 專注流量分配與高可用性
  • API Gateway - 專門管理 API,處理驗證、限流、轉換

三者互補而非競爭,根據需求組合使用。