這個案例的核心責任是說明「微服務架構在事件型峰值下的容量治理」。共乘服務的負載形狀獨特 — 平日早晚通勤雙峰、週末晚間爆量、特殊事件(演唱會、球賽結束、機場)瞬間爆量、每個城市跟每個時段都不同。100+ 個微服務各自有不同的峰值時段、需要獨立擴容策略。

觀察

Lyft 在 AWS 的關鍵數字(引自 Lyft case study):

指標數字
峰值倍數8x 平日基線
微服務數100+ 個
月均搭乘1400 萬 / 月
服務城市200+

服務組合:Amazon DynamoDB(搭乘追蹤、GPS 座標)、Amazon Redshift(客戶洞察)、Amazon Kinesis(即時事件串流)、AWS Auto Scaling、Amazon EC2 Container Registry。

判讀

Lyft 的工程做法揭露三個微服務容量治理重點。

  1. 微服務不是「全部 8x」、是「特定服務 8x」:8x 是 某些核心服務 在週末爆量時刻的擴容比、不是 100 個服務全部 8x。對應 9.5 瓶頸定位流程 必須先做「哪個服務是熱點」的層次定位。
  2. 微服務粒度 = 擴容粒度:把 ride matching、payment、driver tracking、notification 切成獨立服務、每個服務的 autoscaling policy 可以獨立設計。對應 03 訊息佇列模組05 部署平台模組 的服務邊界。
  3. GPS 座標寫入 DynamoDB 是高頻 sustained workload:每個 driver 每秒寫 1-2 次位置、200+ 城市 × 每個城市數萬司機 = 巨量持續寫入、跟峰值無關。對應 9.C5 Amazon Ads 的 KV 高吞吐設計同類。

需要警惕:「8x 峰值」是 峰值倍數、不是 尖峰持續時間。週末晚間的尖峰可能持續 3-4 小時、機場特殊事件可能持續 30 分鐘、演唱會結束可能只有 10 分鐘瞬間。容量策略要按持續時間區分。

策略

可重用的工程做法:

  1. 微服務粒度切到「同性質擴容單位」:同步 vs async、stateful vs stateless、CPU-bound vs I/O-bound 不該混在同一服務、否則擴容邏輯互相衝突。對應 05 部署平台模組 的 service decomposition。
  2. 預測式 + 反應式擴容混用:可預測(早晚通勤)用 scheduled scaling、不可預測(演唱會散場)用 reactive autoscaling、兩者組合。
  3. GPS 類持續寫入適合 KV / time-series store:不適合放 OLTP DB、會佔用 transaction 資源。對應 01 資料庫模組 的 storage choice。

跨平台等效:GCP GKE + HPA / VPA / Karpenter、Azure AKS + KEDA、自建 Kubernetes + Cluster Autoscaler 都可以實作對等架構。

下一步路由

引用源