具代表性的面試主題

系統設計面試:如何依 RPO 與 RTO 設計災難復原策略?

系統設計困難
Offer.cc 編輯團隊發佈 更新

題幹

一個 SaaS 只執行在單一區域,業務要求 RPO 1 小時、RTO 4 小時。你會如何設計並驗證災難復原?

題幹與適用場景

設計單一區域 SaaS 在整區故障後的復原。最多遺失 1 小時資料(RPO),4 小時內恢復服務(RTO)。假設尖峰 1,000 QPS 只是面試容量假設;應用程式無狀態,主資料庫為關聯式資料庫,物件儲存放置使用者上傳檔案。復原範圍包含資料、程式碼、設定、密鑰、路由與操作權限。只說「有備份」不足以證明目標可達。

面試官考察點

公開系統設計手冊把 RPO/RTO 災難復原列為面試情境;AWS 將兩者定義為由業務設定的目標,並要求選擇策略、測試復原、管理設定漂移和自動化。強回答應把 RPO 轉成複製延遲或備份頻率,把 RTO 轉成偵測、提升、部署、路由和驗證預算,並區分資料平面與控制平面故障。

回答前需要澄清的問題

  1. 付款、使用者資料和分析資料是否共享同一 RPO?應按業務影響分層。
  2. 故障是區域遺失、錯誤部署還是邏輯損壞?複製能應付前者,時間點備份才能回滾後兩者。
  3. 切換期間是否必須繼續寫入?若必須,先定義寫入權與衝突策略。
  4. RTO 終點是健康檢查、客戶流量還是完整功能?操作手冊必須寫清里程碑。
  5. 災備帳戶是否可獨立操作?配額、憑證、映像和 DNS 權限可能決定目標能否達成。

30 秒回答框架

「我先按業務分層並讓 RPO/RTO 可測量,再做跨區域非同步複製、時間點備份與物件版本保護。4 小時目標可先採用 pilot light:用 IaC 保存應用程式堆疊,故障時提升資料、部署、切路由並做完整性和冒煙檢查。季度演練測量每一步,驗證備份復原、設定漂移和實際 RPO/RTO。」

分步深入解答

1. 把目標轉成預算

RPO 不超過 1 小時,複製延遲或備份間隔必須低於上限,並設提前告警;時間點備份用來處理邏輯損壞。RTO 4 小時要拆成偵測與宣告、資料提升、應用程式部署、路由、冒煙和餘量。20 分鐘復原資料庫、30 分鐘部署、10 分鐘切流只是待演練驗證的假設。

2. 選擇拓撲

備份復原成本低但 RTO 較大;pilot light 常駐資料複製和核心資源,應用程式容量在故障時開啟,適合四小時目標;warm standby 常駐縮小版可執行堆疊,成本更高但復原更快;active/active 最快,卻引入跨區域寫入衝突、路由和維運複雜度。把映像、Schema、設定和 IaC 放在災備帳戶,確保可重建。

3. 保護資料

非同步複製關聯式資料庫變更到獨立區域並監控延遲。只有日誌位置和完整性檢查符合 RPO 才提升副本。跨帳戶或跨區域保存不可變時間點備份,處理誤刪、勒索和錯誤寫入。物件儲存啟用版本並校驗數量和校驗和。付款等零遺失領域應另設層級,不能套用一小時目標。

4. 復原服務路徑

從不可變映像和 IaC 部署應用程式,預置健康檢查、密鑰存取、配額和觀測。資料庫連線、遷移、驗證與代表性讀寫冒煙通過後才切流。AWS 提醒資料平面通常比控制平面更能在災難中工作;故障時才建立所有資源會侵蝕 RTO。

5. 讓操作手冊安全執行

寫明誰宣告災難、誰提升資料、誰批准切流。每一步使用冪等命令、停止條件、回滾或切回路徑,並記錄單調遞增的步驟日誌。容量不足時先關閉非關鍵功能,保留復原點和客戶狀態通知。

6. 用演練證明

定期做復原、區域 game day 和設定漂移檢查。分別測量偵測、決策、復原、提升、部署、路由和穩定時間;校驗資料列數、校驗和、權限、佇列和背景工作。注入壞備份、舊密鑰、配額不足和複製延遲,確保每種情況都有告警或停止條件。

高品質示範回答

「RPO 1 小時、RTO 4 小時,我會採用跨區域非同步資料庫和物件複製、不可變時間點備份,以及由 IaC 管理的 pilot-light 區域。操作手冊預留偵測、提升、部署、DNS/全域路由和冒煙檢查時間,並在季度演練中測量。切換時選擇已驗證的復原點,做完整性校驗後提升資料,部署映像,驗證驗證流程和代表性寫入,再切流。若主區發生邏輯損壞,複製副本不能直接用,要回到乾淨時間點。付款資料另設更嚴格層級。」

常見錯誤

  • 只說多區域 → 成本與複雜度沒有邊界 → 從 RPO/RTO 推導拓撲。
  • 把複製當備份 → 損壞與刪除會同步 → 保留不可變時間點副本並實測復原。
  • 忽略程式碼設定 → 有資料卻沒有可服務的堆疊 → 版本化映像、Schema、密鑰、配額和 IaC。
  • 把改 DNS 算作復原 → 流量可能到達未驗證系統 → RTO 包含提升、冒煙和穩定。
  • 從未演練 → 備份、配額和操作手冊可能過期 → 定期注入故障並測量。

追問及應對

RPO 為零時怎麼辦?

非同步複製不夠,需要同步寫入權或產品層級暫停寫入,再評估延遲、仲裁和跨區域分割行為。

如何處理邏輯損壞?

停止提升受污染副本,選擇乾淨時間點復原到隔離環境,驗證不變量後只重播批准變更。

為什麼不用 warm standby?

若演練證明部署和擴容能在四小時內完成,pilot light 成本較低;無法承受啟動時間時才提高到 warm standby。

如何防止設定漂移?

用版本化 IaC 渲染災備區,比對映像、Schema、密鑰、配額和路由差異,並把檢查放進每次演練。

公開來源

同類題目

相關面試工具

用 Solve 整理系統設計回答

從澄清需求開始,展開規模、架構、元件選擇和取捨。

查看工具