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