本文說明如何排解透過 Compute Engine 區域檢視 API 端點查詢全域資源時,一致性、複製延遲和配額指標行為的問題。如要進一步瞭解區域化唯讀端點,請參閱「全域資源的區域檢視畫面」。
複製延遲或資源遺失
查詢區域性中繼資料端點時,您可能會發現新建立的全域性資源或最近更新的中繼資料欄位,不會立即顯示在區域性回應中。
區域檢視 API 會查詢中央全域資料庫的區域唯讀副本,藉此處理讀取要求。使用標準全域端點對主要全域資源進行的更新,會以非同步方式複製到這些區域副本。
這種非同步複製方式代表區域檢視表最終一致。從中央全球資料庫到區域副本的 P99 複製延遲時間通常不到 60 秒。
解決方法:如要解決這個問題,請嘗試下列其中一種做法:
- 等待複製作業:大多數複製更新作業會在 60 秒內完成。如果自動化指令碼或用戶端工作負載查詢新建立的資源,請確保用戶端實作重試邏輯,並採用指數輪詢。
- 瞭解透明備援:如果明確
GET要求以特定資源 ID 為目標,指向區域副本,但導致快取未命中,Compute Engine 會在同一交易中,自動嘗試備援讀取中央全域資料庫。 - 查詢全域端點,確保同步一致:如果部署管道嚴格要求寫入後立即讀取的一致性,且不得有複製延遲,請直接查詢標準全域端點,而非區域檢視畫面。例如查詢
projects.get、images.get或images.list。
404 Not Found 則回應
嘗試擷取特定圖片或專案檢視畫面時,您可能會收到 404 Not Found HTTP 狀態碼。
404 Not Found 錯誤可能因下列原因而發生:
- 中央全球資料庫中沒有目標資源。
- 目標資源是在過去幾秒內建立,尚未完成複製到區域副本,且向中央全域資料庫發出的透明備用要求逾時或失敗。
- 要求網址中指定的區域參數或專案 ID 無效。
解決方法:如要解決這個問題,請嘗試下列方法:
- 執行標準的全球
describe或list要求 (例如gcloud compute images describe IMAGE_NAME或gcloud compute project-info describe --project=PROJECT_ID),確認要求的資源是否存在於全球。 - 檢查要求網址路徑,確保目標
REGION字串有效且處於啟用狀態。 - 如果資源是新建立的,請在 60 秒後重試要求。
projectViews 回應中缺少 quota 陣列
使用區域 projectViews.get 端點查詢 compute.Project 資源時,回應中不會包含 quota 陣列。
為維持區域容錯隔離和高可用性,projectViews 端點只會從區域副本讀取資料。由於系統不會執行跨區域的扇出作業,以收集各可用區的配額用量,因此會排除 quota 陣列。
解決方法:如要解決這個問題,請按照下列步驟操作:
- 請確保應用程式不會預期區域
projectViews端點傳回的回應中包含quota陣列。 - 如要擷取所有區域和可用區的準確配額設定和即時用量指標,請查詢全域
projects.get端點,或在 Cloud Monitoring 中監控 Compute Engine API 配額指標。
後續步驟
- 請參閱「使用區域檢視畫面,確保控制層讀取作業具有彈性」。
- 瞭解如何以區域性方式存取全域資源,確保高可用性。