Dataflow 區域可儲存及處理 Dataflow 工作的中繼資料,並部署及控管 Dataflow worker。
區域名稱遵循以 Compute Engine 區域名稱為基礎的標準命名慣例。例如,美國中部區域的名稱為 us-central1。
這項功能適用於所有支援 Dataflow 的區域。如要查看適用的位置,請參閱 Dataflow 位置。
選擇區域的規範
請按照下列規範,為工作選擇適當的區域。
安全性與法規遵循
為支援專案的安全性與法規遵循,您可能需要將 Dataflow 工作處理作業限制在特定地理區域。
資料位置
為了縮短網路延遲時間並降低網路傳輸成本,您可以選擇在 Dataflow 工作來源、接收器、暫存檔案位置和臨時檔案位置的相同區域執行 Dataflow 工作。如果您使用的來源、接收器、暫存檔案位置或臨時檔案位置位於工作區域「外部」,則可能會跨區域傳送資料。
執行管道時,使用者資料只會由 Dataflow worker 集區處理,且資料移動僅限於連結集區中 Dataflow worker 的網路路徑。
雖然 Dataflow worker 會在指定地理區域中嚴格處理使用者資料,但管道記錄訊息會儲存在 Cloud Logging 內,這項工具在Google Cloud中具備全球通用的單一系統。
如要進一步控管管道記錄訊息的位置,請採取下列操作:
- 為
_Default記錄檔路由器接收器建立排除篩選器,防止 Dataflow 記錄檔匯出至_Default記錄檔 bucket。 - 在所選區域建立記錄檔 bucket。
- 設定新的記錄檔路由器接收器,將 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。使用 |