題幹與適用場景
一個全球服務已把租戶分配到多個 cell,但單次錯誤發布、共享依賴故障或容量耗盡仍會造成大範圍中斷。請稽核現有架構,找出會跨 cell 擴散的路徑,並設計可重複的故障注入與復原驗收,證明每個 cell 都是真正的故障隔離邊界。
面試官考察點
- 是否把 cell 定義為可獨立執行、擴展和回滾的完整副本。
- 是否能解釋故障半徑、路由對映和新使用者分配的一致性。
- 是否能處理共享控制面、跨 cell 資料、容量傾斜和熱點遷移。
- 是否能把漸進發布、指標門禁和復原演練落到具體流程。
回答前需要釐清的問題
- 隔離鍵是使用者、租戶、地域還是業務分區?跨區存取是否允許?
- 哪些資料必須全域一致,哪些資料可以 cell 內最終一致?
- 目標是限制單次部署影響,還是應對區域級災難?
- 負載是否可預測,熱點租戶能否遷移,遷移期間如何保證冪等?
30 秒回答框架
我會先畫出每個 cell 的運算、快取、佇列、資料與控制面依賴,標記所有共享路徑;再為路由、容量、發布與跨 cell 任務定義隔離不變量。接著分別注入單一 cell 過載、錯誤版本、資料依賴中斷和控制面失聯,確認健康 cell 的錯誤率與延遲不超過門檻。任何會擴散的共享依賴都要拆分、限額或提供本地快照降級,最後用復原時間、受影響租戶比例與演練證據判定隔離是否成立。
分步驟深入解答
1. Cell 的邊界
Cell 是可獨立部署、擴展和復原的系統單元,通常包含服務實例、快取、佇列和專屬資料分片。共享的 DNS、身分或設定服務應盡量保持低權限、低耦合,並定義它們故障時的降級行為。
2. 路由與對映
路由層根據使用者或租戶鍵查找對映,把請求轉發到目標 cell。對映需要版本、校驗和過期策略;遷移時先寫入新對映,再等待舊請求排空,避免同一實體同時寫入兩個 cell。
3. 資料隔離
每個 cell 擁有本地寫入邊界,跨 cell 查詢優先使用非同步複製的唯讀投影。全域唯一約束應放到專門的協調服務,或改成分區內唯一加最終合併,避免把所有寫入重新集中到單點。
4. 容量與熱點
為每個 cell 設定請求、佇列、資料庫連線和儲存配額,控制單 cell 的最大爆炸半徑。監控租戶分布和資源水位,熱點租戶可遷移到空閒 cell,但遷移必須支援雙讀、單寫和可重播事件。
5. 共享控制面風險
控制面負責對映、版本和編排,不應承載所有業務資料。控制面不可用時,路由器應使用帶 TTL 的本地快照繼續服務;快照過期後只允許安全的讀流量或返回可重試錯誤。
6. 發布與回滾
先選一個 cell 執行新版本,比較基線 cell 的錯誤率、尾延遲、資源飽和度和業務指標。達到門檻後按批次擴散;任何 cell 出現回歸就暫停擴散並回滾該版本,不把健康 cell 一起降級。
7. 跨 cell 操作
跨 cell 報表、批處理和帳戶遷移應透過任務編排器執行,使用冪等鍵、租約和進度檢查點。任務失敗時只重試未完成分片,並把部分完成狀態明確暴露給呼叫方。
8. 災難復原與演練
為每個 cell 備份資料和設定,定義復原點與復原時間目標。定期演練單 cell 隔離、控制面失聯、區域故障和對映損壞,驗證流量轉移、資料復原和回滾腳本,而不只依賴理論上的冗餘。
高品質示範回答
「我不會因為服務被複製成多個 cell 就直接認定隔離成立。我先按租戶請求畫出完整依賴圖,檢查資料庫、佇列、快取、身分、設定、路由與發布流程是否仍共享故障域。接著定義三項不變量:單一 cell 資源耗盡不能排擠其他 cell,錯誤版本只能進入一個發布批次,控制面短暫失聯時資料面仍可使用本地映射繼續服務。
驗證時,我會在預發布或隔離的正式環境演練中依序注入單一 cell 過載、資料庫不可用、錯誤設定和路由目錄失聯,觀察健康 cell 的錯誤率、P99 延遲與容量是否維持基線。若共享依賴會擴散故障,就按租戶分區、設定獨立配額,或使用帶版本與 TTL 的本地快照降級。復原階段驗證流量隔離、資料完整性與映射回滾,並把受影響租戶比例、復原時間和跨 cell 指標設為發布門檻。這樣得到的是可重複的隔離證據,而不是架構圖上的 cell 標籤。」
常見錯誤
- 只複製無狀態運算層,卻繼續共享資料庫、佇列或連線池。
- 只驗證故障 cell 能否復原,沒有驗證健康 cell 的錯誤率和尾端延遲。
- 把隨機分流當成穩定租戶映射,導致同一租戶跨 cell 寫入。
- 演練只涵蓋基礎設施停機,沒有涵蓋錯誤發布、熱點租戶和控制面失聯。
追問與應對
如何判斷共享控制面是否會破壞隔離?
讓控制面在演練中失聯,驗證路由器能否使用帶版本與 TTL 的本地映射繼續服務;快照過期後必須進入明確的安全降級狀態。
如何設定隔離驗收門檻?
同時設定健康 cell 的錯誤率、P99 延遲、飽和度和受影響租戶比例上限,並記錄復原時間。只看故障 cell 自身復原不足以證明隔離。
Cell 數量越多,隔離一定越好嗎?
不一定。Cell 越小,理論故障半徑越低,但容量碎片、發布批次和跨 cell 維運成本會上升。應從目標受影響租戶比例、單一 cell 容量與可承受的維運成本反推。
跨 cell 報表會不會重新引入共享故障?
會,因此報表應讀取非同步產生的唯讀投影,並設定獨立配額與降級;不能讓線上請求同步扇出到所有 cell。