De forma predeterminada, los trabajos de transmisión de Dataflow ejecutan algunos de sus recursos de backend en una sola zona de Compute Engine, lo que hace que esos trabajos sean susceptibles a la pérdida de datos durante una interrupción zonal. La alta disponibilidad de transmisión convierte un trabajo de Streaming Engine en un recurso regional mediante la replicación del estado de backend en varias zonas de la región. Cuando habilitas la alta disponibilidad de transmisión, una falla de una sola zona no provoca que tu trabajo de transmisión deje de funcionar.
Asistencia y limitaciones
La alta disponibilidad de transmisión tiene los siguientes requisitos y limitaciones:
- Se requiere Streaming Engine: El trabajo debe ser una canalización de transmisión que use Streaming Engine.
- Se requiere la ubicación regional de los trabajadores: Los trabajadores de Compute Engine deben
usar la ubicación
regional.
Si un trabajo solo tiene trabajadores en una zona específica y esa zona deja de estar disponible, el trabajo no puede procesar datos porque sus trabajadores no están disponibles, incluso si se replica el estado de backend. Por lo tanto, Dataflow rechaza los trabajos que especifican una zona de trabajador en particular (como
--workerZone,--worker_zoneo--zone) cuando se habilita la alta disponibilidad de transmisión. - Configurado solo en la creación del trabajo: Solo puedes habilitar la alta disponibilidad de transmisión cuando inicias un trabajo nuevo. No puedes habilitar ni inhabilitar la alta disponibilidad de transmisión
cuando realizas una actualización de canalización
en el lugar. Para cambiar este
parámetro de configuración en una canalización en ejecución, realiza una
actualización automática de detener y reemplazar
update, o bien
detén o vacía la canalización y
comienza un trabajo nuevo sin la marca
--update. - Retraso adicional de la marca de agua: Cuando habilitas la alta disponibilidad de transmisión, la marca de agua de un trabajo solo avanza después de que los datos se procesan y se replican en las zonas. Como la marca de agua espera la replicación entre zonas, es posible que notes unos segundos de retraso adicional de la marca de agua.
- Se requiere la facturación basada en recursos: Los trabajos de alta disponibilidad de transmisión siempre usan la facturación basada en recursos y nunca usan la facturación por datos procesados. Aunque los trabajos usan la facturación basada en recursos, no hay cargos adicionales por la alta disponibilidad de transmisión durante la versión preliminar. Para obtener más información, consulta Precios.
Habilita la alta disponibilidad de transmisión
Para habilitar la alta disponibilidad de transmisión cuando inicias un trabajo de transmisión de Dataflow nuevo, establece la requires_high_availability
opción de servicio.
Java
--dataflowServiceOptions=requires_high_availability
Python
--dataflow_service_options=requires_high_availability
Go
--dataflow_service_options=requires_high_availability
gcloud
Cuando ejecutas una plantilla con el
gcloud dataflow jobs run comando
o una plantilla de Flex con el
gcloud dataflow flex-template
run comando, incluye las
--enable-streaming-engine y --additional-experiments marcas:
--enable-streaming-engine \
--additional-experiments=requires_high_availability
Por ejemplo, para ejecutar una plantilla de Flex con la alta disponibilidad de transmisión habilitada, haz lo siguiente:
gcloud dataflow flex-template run JOB_NAME \
--project=PROJECT_ID \
--template-file-gcs-location=TEMPLATE_LOCATION \
--region=REGION \
--parameters=KEY_1=VALUE_1,KEY_2=VALUE_2 \
--enable-streaming-engine \
--additional-experiments=requires_high_availability
Reemplaza los siguientes valores:
JOB_NAME: Es el nombre de tu trabajo de Dataflow.PROJECT_ID: Es tu Google Cloud ID del proyecto.TEMPLATE_LOCATION: Es la ruta de Cloud Storage a tu archivo de especificación de plantilla de Flex.REGION: Es la región en la que se ejecuta el trabajo.KEY_1=VALUE_1,KEY_2=VALUE_2: Son pares de parámetros clave-valor para la plantilla de Flex.
Console
Para habilitar la alta disponibilidad de transmisión cuando ejecutas una plantilla o una plantilla de Flex en la Google Cloud consola de Google Cloud, haz lo siguiente:
En la Google Cloud consola de Google Cloud, ve a la página **Trabajos** de Dataflow.
Haz clic en Crear trabajo a partir de una plantilla.
Selecciona la plantilla que deseas ejecutar en el menú Plantilla de Dataflow.
Expande Parámetros opcionales.
En el campo Experimentos adicionales, ingresa
requires_high_availability.Haga clic en Ejecutar trabajo.
REST
Usa el campo additionalExperiments en el
RuntimeEnvironment
objeto o en el
FlexTemplateRuntimeEnvironment
objeto cuando inicies una plantilla de Flex:
{
"additionalExperiments": ["requires_high_availability"]
}
Comportamiento de la conmutación por error
En el caso poco frecuente de una conmutación por error zonal, es posible que observes unos segundos o unos minutos de capacidad de procesamiento reducida mientras el trabajo cambia a un estado principal nuevo y establece una nueva réplica secundaria en otra zona. La conmutación por error se produce automáticamente sin descartar datos, y no es necesario que realices ninguna acción. Puedes hacer un seguimiento de los eventos de conmutación por error con las métricas que se describen en Supervisa la alta disponibilidad.
Fuentes y receptores
Configurar un trabajo de Dataflow como un recurso regional no hace que las fuentes y los receptores del trabajo sean regionales o globales de forma automática. Las fuentes y los receptores regionales y globales funcionan bien con la alta disponibilidad de transmisión, ya que ninguno depende de una sola zona. La disponibilidad de cada fuente o receptor depende de la configuración de ese servicio:
- Muchas Google Cloud fuentes y receptores, como Pub/Sub, BigQuery y Google Cloud Managed Service para Apache Kafka, proporcionan disponibilidad regional o global de forma predeterminada.
- Si usas fuentes y receptores personalizados o autoadministrados, como Apache Kafka o Apache Iceberg autoalojados, debes configurar y mantener su disponibilidad regional de forma independiente.
Supervisa la alta disponibilidad
Puedes supervisar el estado de alta disponibilidad de tu trabajo en Cloud Monitoring con la métrica dataflow.googleapis.com/job/high_availability_mode. Esta métrica de indicador booleano incluye una etiqueta status que es true para el estado actual del trabajo y false para los demás estados. La etiqueta status tiene los siguientes valores posibles:
Disabled: La alta disponibilidad de transmisión no está habilitada para este trabajo.Highly Available: La alta disponibilidad de transmisión está habilitada y el estado de backend se replica en las zonas.Establishing High Availability: El estado de backend no se replica de forma temporal (por ejemplo, después de una falla zonal), pero se está creando una nueva réplica secundaria.
Cuando habilitas la alta disponibilidad de transmisión, las métricas de marca de agua estándar de Dataflow solo avanzan después de que los datos se procesan y se replican en las zonas. Para obtener más información sobre cómo ver las métricas, consulta Usa Monitoring.
Precios
Durante la versión preliminar, no hay cargos adicionales por usar la alta disponibilidad de transmisión.
En la disponibilidad general (DG), el uso de la replicación se factura a la misma tarifa que el uso del estado principal. El uso del estado se mide como parte de las unidades de procesamiento de Streaming Engine.
¿Qué sigue?
- Obtén más información sobre las regiones de Dataflow y la ubicación regional.
- Obtén más información sobre Streaming Engine.
- Supervisa tus canalizaciones con Monitoring.