使用扇出方法,跨多個 Google Cloud 區域擷取資料沿襲連結。您可以使用 Data Lineage API,從所有可用區域擷取及匯總歷程資料。如果資料資產分散在不同位置,但您需要統一查看這些資產的沿襲,這項功能就非常實用。
程序
程序會向每個區域的 projects.locations.searchLinks 端點發出平行要求。您會收集結果、處理跨區域的分頁,並彙整找到的連結。管理 regionalPageToken,確保後續呼叫作業的分頁行為一致,並考量無法連線的區域。
下列虛擬程式碼概述了可使用 Data Lineage API 執行的程序,從所有可用區域擷取資料歷程連結。
- 輸入設定:
linksToFetch= 5 (要從所有區域擷取的連結數量)regionalPageToken= "" (用於分頁的最後接收區域頁面權杖)
- 建立:
- 要扇出呼叫的所有區域清單
regions。 - 無法連線的區域清單 (稱為
unreachable)。 - 名為
foundLinks的空白連結清單。 - 空白變數
nextPageToken和nextRegionalPageToken。 - 空白變數
lastRegion。 - 空白變數
lastRegionLinksCount。
- 要扇出呼叫的所有區域清單
- 依英文字母順序排序
regions。 - 剖析
regionalPageToken- 如果為空白,請繼續執行步驟 5
- 如果不是空白,則
- 剖析
regionalPageToken,方法是依第一個點將其分割為兩個區隔 - 只保留剖析
regionalPageToken後的第一個區段 (依字母順序),篩除其他區段。 - 將第二個區隔儲存起來,以便在所有 projects.locations.searchLinks 呼叫中使用。
- 剖析
- 在
regions清單中,對每個區域的 projects.locations.searchLinks 進行平行呼叫。 - 等待所有要求完成。
- 篩除成功的回應,並將失敗的區域名稱儲存在
unreachable清單中。 - 針對每個回應 (從第一個區域開始,依字母順序排列)
- 如果沒有傳回任何連結,但網頁權杖不是空白
lastRegion中的商店區域名稱。- 將收到的 pageToken 儲存到
nextPageToken。 - 忽略其餘回覆。
- 否則
lastRegion中的商店區域名稱。- 在
foundLinks中儲存收到的連結 (最多linksToFetch個)。 - 將收到的 pageToken 儲存到
nextPageToken。 - 將回應中擷取的連結數量儲存在
lastRegionLinksCount中。 - 如果
foundLinks小於linksToFetch- 按照字母順序,使用下一個收到的回覆繼續執行虛擬程式碼。
- 如果
foundLinks等於linksToFetch- 在相同區域中向 projects.locations.searchLinks 端點發出另一項要求,但將
pageSize參數設為lastRegionLinksCount的值。 - 商店在
nextPageToken中收到 pageToken。 - 繼續執行步驟 9
- 在相同區域中向 projects.locations.searchLinks 端點發出另一項要求,但將
- 如果沒有傳回任何連結,但網頁權杖不是空白
- 在
nextPageToken前加上lastRegion(即[region].[receivedNextPageToken]),建立nextRegionalPageToken,以便處理後續呼叫中的分頁。