Obtener enlaces de linaje de varias regiones

Obtener enlaces de linaje de datos de varias Google Cloud regiones mediante un enfoque de difusión. Usa la API Data Lineage para recuperar y agregar datos de linaje de todas las regiones disponibles. Esto resulta útil cuando tus recursos de datos están distribuidos en diferentes ubicaciones y necesitas una vista unificada de su linaje.

Procedimiento

El procedimiento envía solicitudes paralelas al endpoint projects.locations.searchLinks de cada región. Recoges los resultados, gestionas la paginación en las regiones y agregas los enlaces encontrados. Gestiona un regionalPageToken para asegurar una paginación coherente en las llamadas posteriores, teniendo en cuenta las regiones a las que no se puede acceder.

El siguiente pseudocódigo describe un procedimiento que puedes seguir con la API Data Lineage para obtener enlaces de linaje de datos de todas las regiones disponibles.

  1. Configuración de entrada:
    • linksToFetch = 5 (número de enlaces que se van a obtener de todas las regiones)
    • regionalPageToken = "" (token de la última página regional recibida que se usa para la paginación)
  2. Crear:
    1. lista de todas las regiones a las que se va a enviar la información, llamada regions.
    2. Lista de regiones a las que no se puede acceder, llamada unreachable.
    3. una lista vacía de enlaces encontrados llamada foundLinks.
    4. una variable vacía nextPageToken y nextRegionalPageToken.
    5. una variable vacía lastRegion.
    6. una variable vacía lastRegionLinksCount.
  3. Ordena regions alfabéticamente.
  4. Analizar regionalPageToken
    1. Si está vacío, ve al paso 5.
    2. Si no está vacío, entonces
      1. analiza regionalPageToken dividiéndolo por el primer punto en dos segmentos
      2. Filtrar las regiones tomando solo las que están después (en orden alfabético) del primer segmento de regionalPageToken analizado.
      3. Almacena el segundo segmento aparte para usarlo en todas las llamadas a projects.locations.searchLinks.
  5. Llama a projects.locations.searchLinks en paralelo en cada región de la lista regions.
  6. Espera a que se completen todas las solicitudes.
  7. Filtra las respuestas correctas y almacena los nombres de las regiones fallidas en la lista unreachable.
  8. Para cada una de las respuestas (empezando por la primera región en orden alfabético), haz lo siguiente:
    1. si no se ha devuelto ningún enlace junto con un token de página no vacío
      1. almacena el nombre de la región en lastRegion.
      2. Guarda el valor de pageToken recibido en nextPageToken.
      3. ignora el resto de las respuestas.
    2. de lo contrario
      1. almacena el nombre de la región en lastRegion.
      2. guardar los enlaces recibidos en foundLinks (hasta linksToFetch).
      3. Guarda el valor de pageToken recibido en nextPageToken.
      4. Almacena el número de enlaces obtenidos de la respuesta en lastRegionLinksCount.
      5. si foundLinks es menor que linksToFetch
        1. continúa el pseudocódigo con la siguiente respuesta recibida en orden alfabético.
      6. si foundLinks es igual a linksToFetch
        1. hacer otra solicitud al endpoint projects.locations.searchLinks en la misma región, pero asignar al parámetro pageSize el valor de lastRegionLinksCount.
        2. Almacena pageToken en nextPageToken.
        3. Ve al paso 9.
  9. Antepón nextPageToken con lastRegion (es decir, [region].[receivedNextPageToken]) para crear nextRegionalPageToken y gestionar la paginación en llamadas consecutivas.