從多個區域擷取系譜連結

使用扇出方法,跨多個 Google Cloud 區域擷取資料沿襲連結。您可以使用 Data Lineage API,從所有可用區域擷取及匯總歷程資料。如果資料資產分散在不同位置,但您需要統一查看這些資產的沿襲,這項功能就非常實用。

程序

程序會向每個區域的 projects.locations.searchLinks 端點發出平行要求。您會收集結果、處理跨區域的分頁,並彙整找到的連結。管理 regionalPageToken,確保後續呼叫作業的分頁行為一致,並考量無法連線的區域。

下列虛擬程式碼概述了可使用 Data Lineage API 執行的程序,從所有可用區域擷取資料歷程連結。

  1. 輸入設定:
    • linksToFetch = 5 (要從所有區域擷取的連結數量)
    • regionalPageToken = "" (用於分頁的最後接收區域頁面權杖)
  2. 建立:
    1. 要扇出呼叫的所有區域清單 regions
    2. 無法連線的區域清單 (稱為 unreachable)。
    3. 名為 foundLinks 的空白連結清單。
    4. 空白變數 nextPageTokennextRegionalPageToken
    5. 空白變數 lastRegion
    6. 空白變數 lastRegionLinksCount
  3. 依英文字母順序排序 regions
  4. 剖析 regionalPageToken
    1. 如果為空白,請繼續執行步驟 5
    2. 如果不是空白,則
      1. 剖析 regionalPageToken,方法是依第一個點將其分割為兩個區隔
      2. 只保留剖析 regionalPageToken 後的第一個區段 (依字母順序),篩除其他區段。
      3. 將第二個區隔儲存起來,以便在所有 projects.locations.searchLinks 呼叫中使用。
  5. regions 清單中,對每個區域的 projects.locations.searchLinks 進行平行呼叫。
  6. 等待所有要求完成。
  7. 篩除成功的回應,並將失敗的區域名稱儲存在 unreachable 清單中。
  8. 針對每個回應 (從第一個區域開始,依字母順序排列)
    1. 如果沒有傳回任何連結,但網頁權杖不是空白
      1. lastRegion 中的商店區域名稱。
      2. 將收到的 pageToken 儲存到 nextPageToken
      3. 忽略其餘回覆。
    2. 否則
      1. lastRegion 中的商店區域名稱。
      2. foundLinks 中儲存收到的連結 (最多 linksToFetch 個)。
      3. 將收到的 pageToken 儲存到 nextPageToken
      4. 將回應中擷取的連結數量儲存在 lastRegionLinksCount 中。
      5. 如果 foundLinks 小於 linksToFetch
        1. 按照字母順序,使用下一個收到的回覆繼續執行虛擬程式碼。
      6. 如果 foundLinks 等於 linksToFetch
        1. 在相同區域中向 projects.locations.searchLinks 端點發出另一項要求,但將 pageSize 參數設為 lastRegionLinksCount 的值。
        2. 商店在 nextPageToken 中收到 pageToken。
        3. 繼續執行步驟 9
  9. nextPageToken 前加上 lastRegion (即 [region].[receivedNextPageToken]),建立 nextRegionalPageToken,以便處理後續呼叫中的分頁。