以下是使用 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,以便在連續呼叫中處理分頁。