Cómo buscar linaje multirregión con fan-out del cliente

La distribución de clientes en Knowledge Catalog (anteriormente, Dataplex Universal Catalog) te permite usar la API de Data Lineage para recuperar y agregar vínculos de linaje de datos en varias regiones de Google Cloud . Consultar extremos regionales en paralelo te ayuda a crear una vista de linaje unificada cuando tus recursos de datos abarcan diferentes ubicaciones.

¿Por qué usar la distribución de mensajes del cliente?

El enfoque de distribución del cliente es útil cuando tus recursos de datos se distribuyen en diferentes ubicaciones y deseas organizar consultas regionales en el cliente. Puedes usar este enfoque para recuperar y agregar datos de linaje de todas las regiones disponibles cuando rastreas el linaje de un solo salto en un conjunto conocido de regiones o mantienes la compatibilidad con los flujos de trabajo existentes de projects.locations.searchLinks.

Para obtener más información, consulta Acerca de la búsqueda de linaje multirregional.

Pseudocódigo paso a paso

El procedimiento realiza solicitudes paralelas al extremo projects.locations.searchLinks en cada región. Recopilas los resultados, controlas la paginación en todas las regiones y agregas los vínculos encontrados. Para garantizar una paginación coherente en las llamadas posteriores, administra un regionalPageToken. Esto se debe a las regiones inaccesibles.

En el siguiente pseudocódigo, se describe un procedimiento que puedes seguir con la API de Data Lineage para recuperar vínculos de linaje de datos de todas las regiones disponibles.

  1. Configuración de entrada:
    • linksToFetch = 5 (cantidad de vínculos que se recuperarán de todas las regiones)
    • regionalPageToken = "" (último token de página regional recibido que se usó para la paginación)
  2. Crea lo siguiente:
    1. lista de todas las regiones para la distribución ramificada llamada regions.
    2. lista de regiones inaccesibles llamada unreachable.
    3. una lista vacía de vínculos 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. Analiza regionalPageToken
    1. Si está vacío, continúa con el 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 para usarlo en todas las llamadas a projects.locations.searchLinks.
  5. Realiza una llamada a projects.locations.searchLinks en cada región de la lista regions en paralelo.
  6. Espera a que se completen todas las solicitudes.
  7. Filtra las respuestas correctas y almacena los nombres de las regiones con errores en la lista unreachable.
  8. Para cada una de las respuestas (comenzando con la primera región en orden alfabético), haz lo siguiente:
    1. Si no se devolvieron vínculos junto con un token de página no vacío
      1. Almacena el nombre de la región en lastRegion.
      2. Guarda el pageToken recibido en nextPageToken.
      3. ignora las respuestas restantes.
    2. De lo contrario,
      1. Almacena el nombre de la región en lastRegion.
      2. guardar los vínculos recibidos en foundLinks (hasta linksToFetch)
      3. Guarda el pageToken recibido en nextPageToken.
      4. Almacena la cantidad de vínculos tomados 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. realiza otra solicitud al extremo projects.locations.searchLinks en la misma región, pero establece el parámetro pageSize en el valor de lastRegionLinksCount.
        2. Almacena el pageToken recibido en nextPageToken.
        3. continúa con el paso 9
  9. Antepón nextPageToken con lastRegion (es decir, [region].[receivedNextPageToken]) para crear nextRegionalPageToken y controlar la paginación en llamadas consecutivas.

¿Qué sigue?