排解全域性資源的區域檢視畫面問題

本文說明如何排解透過 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 無效。

解決方法:如要解決這個問題,請嘗試下列方法:

  1. 執行標準的全球 describe 或 list 要求 (例如 gcloud compute images describe IMAGE_NAME 或 gcloud compute project-info describe --project=PROJECT_ID),確認要求的資源是否存在於全球。
  2. 檢查要求網址路徑,確保目標 REGION 字串有效且處於啟用狀態。
  3. 如果資源是新建立的,請在 60 秒後重試要求。

projectViews 回應中缺少 quota 陣列

使用區域 projectViews.get 端點查詢 compute.Project 資源時,回應中不會包含 quota 陣列。

為維持區域容錯隔離和高可用性,projectViews 端點只會從區域副本讀取資料。由於系統不會執行跨區域的扇出作業,以收集各可用區的配額用量,因此會排除 quota 陣列。

解決方法:如要解決這個問題,請按照下列步驟操作:

  • 請確保應用程式不會預期區域 projectViews 端點傳回的回應中包含 quota 陣列。
  • 如要擷取所有區域和可用區的準確配額設定和即時用量指標,請查詢全域 projects.get 端點,或在 Cloud Monitoring 中監控 Compute Engine API 配額指標。

後續步驟