여러 리전에서 계보 링크 가져오기

다음 의사코드는 데이터 계보 API를 사용하여 사용 가능한 모든 리전에서 데이터 계보 링크를 가져오는 절차를 설명합니다.

  1. 다음과 같이 입력을 설정합니다.
  2. linksToFetch = 5(모든 리전에서 가져올 링크 수)
  3. regionalPageToken = ""(페이지로 나누기에 사용한 마지막으로 수신된 리전 페이지 토큰)
  4. 다음 항목을 생성합니다.
    1. regions는 팬아웃할 모든 리전의 목록입니다.
    2. unreachable은 연결할 수 없는 리전의 목록입니다.
    3. foundLinks는 발견된 링크의 빈 목록입니다.
    4. nextPageTokennextRegionalPageToken은 빈 변수입니다.
    5. lastRegion은 빈 변수입니다.
    6. lastRegionLinksCount는 빈 변수입니다.
  5. regions를 알파벳순으로 정렬합니다.
  6. regionalPageToken을 파싱합니다.
    1. 비어 있으면 4단계로 이동합니다.
    2. 비어 있지 않으면 다음 안내를 따릅니다.
      1. 첫 번째 점에서 분할하여 regionalPageToken을 두 세그먼트로 파싱합니다.
      2. 파싱된 regionalPageToken에서 (알파벳순으로 정렬된) 첫 번째 세그먼트 다음의 세그먼트만 가져와 리전을 필터링합니다.
      3. 두 번째 세그먼트를 별도로 저장하여 모든 projects.locations.searchLinks 호출에 사용합니다.
  7. regions 목록의 각 리전에서 projects.locations.searchLinks를 동시에 호출합니다.
  8. 모든 요청이 완료될 때까지 기다립니다.
  9. 성공적인 응답을 필터링하고 실패한 리전 이름을 unreachable 목록에 저장합니다.
  10. 각 응답(알파벳순으로 정렬된 첫 번째 리전부터 시작)마다 다음 안내를 따릅니다.
    1. 비어 있지 않은 페이지 토큰과 함께 링크가 반환되지 않은 경우에는 다음 안내를 따릅니다.
      1. lastRegion에 저장소 리전 이름을 저장합니다.
      2. 수신한 pageToken을 nextPageToken에 저장합니다.
      3. 나머지 응답은 무시합니다.
    2. 그 외의 경우에는 다음 안내를 따릅니다.
      1. lastRegion에 저장소 리전 이름을 저장합니다.
      2. 수신한 링크를 foundLinks에 저장합니다(최대 linksToFetch).
      3. 수신한 pageToken을 nextPageToken에 저장합니다.
      4. 응답에서 가져온 링크의 수를 lastRegionLinksCount에 저장합니다.
      5. foundLinkslinksToFetch보다 작다면 다음 안내를 따릅니다.
        1. 알파벳순으로 정렬된 다음 수신 응답으로 의사코드를 계속 진행합니다.
      6. foundLinkslinksToFetch와 같다면 다음 안내를 따릅니다.
        1. 동일한 리전의 projects.locations.searchLinks 엔드포인트에 다른 요청을 전송하되 pageSize 매개변수를 lastRegionLinksCount 값으로 설정합니다.
        2. 수신한 pageToken을 nextPageToken에 저장합니다.
        3. 8단계로 이동합니다.
  11. lastRegion 앞에 nextPageToken을 추가합니다(예: 연속 호출에서 페이지로 나누기를 처리하려면 '[region].[receivedNextPageToken]'으로 nextRegionalPageToken을 생성).