Dataflow 區域

Dataflow 區域可儲存及處理 Dataflow 工作的中繼資料,並部署及控管 Dataflow worker。

區域名稱遵循以 Compute Engine 區域名稱為基礎的標準命名慣例。例如,美國中部區域的名稱為 us-central1

這項功能適用於所有支援 Dataflow 的區域。如要查看適用的位置,請參閱 Dataflow 位置

選擇區域的規範

請按照下列規範,為工作選擇適當的區域。

安全性與法規遵循

為支援專案的安全性與法規遵循,您可能需要將 Dataflow 工作處理作業限制在特定地理區域。

資料位置

為了縮短網路延遲時間並降低網路傳輸成本,您可以選擇在 Dataflow 工作來源、接收器、暫存檔案位置和臨時檔案位置的相同區域執行 Dataflow 工作。如果您使用的來源、接收器、暫存檔案位置或臨時檔案位置位於工作區域「外部」,則可能會跨區域傳送資料。

執行管道時,使用者資料只會由 Dataflow worker 集區處理,且資料移動僅限於連結集區中 Dataflow worker 的網路路徑。

雖然 Dataflow worker 會在指定地理區域中嚴格處理使用者資料,但管道記錄訊息會儲存在 Cloud Logging 內,這項工具在Google Cloud中具備全球通用的單一系統。

如要進一步控管管道記錄訊息的位置,請採取下列操作:

  1. _Default 記錄檔路由器接收器建立排除篩選器,防止 Dataflow 記錄檔匯出至 _Default 記錄檔 bucket。
  2. 在所選區域建立記錄檔 bucket
  3. 設定新的記錄檔路由器接收器,將 Dataflow 記錄檔匯出至新的記錄檔 bucket。

如要進一步瞭解如何設定記錄,請參閱「轉送功能和儲存空間簡介」和「記錄轉送簡介」。

以下為常見 Dataflow 工作資源的說明:

  • 使用 Cloud Storage bucket 做為來源時,建議您在與 bucket 相同的區域執行讀取作業。
  • 發布至全球 Pub/Sub 端點的 Pub/Sub 主題會儲存在最靠近的 Google Cloud 區域。不過,您可以將主題儲存空間政策修改為特定區域或一組區域。同樣地,Pub/Sub Lite 主題僅支援區域儲存空間。

恢復能力與地理區隔

您可能想避免一般 Dataflow 操作受到其他地理地區發生的中斷情況影響。或者,您可能需要規劃替代網站,以確保整個區域在發生災難發生時不會中斷業務。

災難復原與營運持續計畫中,建議詳細記載 Dataflow 工作搭配使用的來源和接收器。Google Cloud 業務團隊可協助您滿足需求。

區域刊登位置

根據預設,您選取的區域會將 Dataflow worker 集區設定為使用該區域內的所有可用區域。系統會在建立每個 worker 時計算可用區選取項目,盡量取得資源並使用未使用的預留項目

區域刊登位置的優點包括:

  • 提升資源可用性:Dataflow 工作對可用區資源可用性錯誤的復原力更強,因為 worker 可在其他可用區中繼續建立,且仍有可用性。
  • 提高可靠性:如果發生可用區故障,Dataflow 工作仍可繼續執行,因為系統會在其他可用區重新建立 worker。

限制如下:

  • 只有使用 Streaming Engine 或 Dataflow Shuffle 的工作,才支援區域刊登位置。選擇不採用 Streaming Engine 或 Dataflow Shuffle 的工作無法使用區域刊登位置。
  • 區域刊登位置僅適用於 VM,不適用於後端資源。
  • VM 不會跨多個可用區複製。如果 VM 無法使用 (例如工作項目遺失),系統會由其他 VM 重新處理。
  • 如果 Compute Engine 在設定的區域中沒有容量,Dataflow 服務就無法再建立任何 VM。
  • 如果 Compute Engine 在設定的區域中,一或多個可用區的容量不足,Dataflow 服務可能無法啟動工作。

查看工作資源可用區

Dataflow 工作會使用內部資源。部分後端工作資源屬於可用區資源。如果單一可用區發生故障,而 Dataflow 工作所需的可用區資源位於該可用區,工作可能會失敗。

如要瞭解工作是否因可用區中斷而失敗,請檢查工作後端資源使用的服務可用區。這項功能僅適用於 Streaming Engine 工作。

  • 如要在Google Cloud 控制台中查看服務可用區,請使用「Job info」(工作資訊) 面板中的「Service zones」(服務可用區) 欄位。

  • 如要使用 API 檢查服務可用區,請使用 ServiceResources 欄位。

這項欄位的值會在工作執行期間更新,因為工作使用的資源會在工作執行期間變更。

自動選擇可用區位置

對於不支援區域放置的工作,系統會根據發出工作建立要求時的可用區域容量,自動從區域內選取最合適的可用區。自動可用區選擇功能可確保工作 worker 在最適當的可用區中執行您的工作。

由於工作設定為在單一可用區中執行,如果沒有足夠的 Compute Engine 資源,作業可能會因可用區資源可用性錯誤而失敗。如果某個區域的容量已用盡,您可能會看到 ZONE_RESOURCE_POOL_EXHAUSTED 錯誤。您可以實作重試迴圈,在資源可用時啟動工作。

此外,如果可用區無法使用,串流後端也可能無法使用,導致資料遺失。

指定區域。

如要指定工作的區域,請將 --region 選項設為其中一個支援區域。--region 選項會覆寫中繼資料伺服器、本機用戶端或環境變數中設定的預設區域。

Dataflow 指令列介面也支援使用 --region 選項指定區域。

覆寫 worker 區域或可用區

根據預設,當您提交具有 --region 選項的工作時,系統會根據工作類型,自動將 worker 指派到該區域的可用區,或是該區域內最合適的單一可用區

如要確保 Dataflow 工作的 worker 只會在特定可用區嚴格執行,可以使用下列管道選項指定可用區。這種使用模式在 Dataflow 工作中並不常見。

這個選項只會控管 Dataflow worker 使用的可用區。這項功能不適用於後端資源。可能會在工作區域內的任何可用區中建立後端資源。

Java

--workerZone

Python

--worker_zone

Go

--worker_zone

除此之外的其他情況,我們不建議覆寫 worker 位置。常見情境表含有這些情況的使用建議。

由於這項工作設定為在單一可用區中執行,如果沒有足夠的 Compute Engine 資源,作業可能會因可用區資源可用性錯誤而失敗。

您可以執行 gcloud compute regions list 指令,查看 worker 部署作業提供的區域和可用區列表。

常見情境

下表包含常見情境的使用建議。

情境 建議
我想要使用支援的區域,且在該區域沒有可用區偏好設定。在這種情況下,系統會根據可用容量自動選擇最適當的可用區。 使用 --region 指定工作區域。這麼做可確保 Dataflow 會在指定的區域中管理您的工作及處理資料。
我需要在某個區域的特定可用區中處理 worker 作業。 同時指定 --region--workerZone--worker_zone

使用 --region 指定工作區域。使用 --workerZone--worker_zone 指定該區域內的特定可用區