Haute disponibilité du streaming

Par défaut, les jobs Dataflow par flux exécutent certaines de leurs ressources backend dans une seule zone Compute Engine, ce qui les rend susceptibles de perdre des données en cas d'indisponibilité zonale. La haute disponibilité du traitement en flux continu fait d'un job Streaming Engine une ressource régionale en répliquant l'état du backend dans plusieurs zones de la région. Lorsque vous activez la haute disponibilité du traitement en flux continu, une défaillance dans une seule zone n'entraîne pas l'arrêt de votre job de traitement en flux continu.

Compatibilité et limites

La haute disponibilité du traitement en flux continu est soumise aux exigences et limites suivantes :

  • Streaming Engine obligatoire : le job doit être un pipeline de traitement en flux continu qui utilise Streaming Engine.
  • Placement régional des nœuds de calcul obligatoire : les nœuds de calcul Compute Engine doivent utiliser un placement régional. Si un job ne comporte des nœuds de calcul que dans une zone spécifique et que cette zone devient indisponible, le job ne peut pas traiter les données, car ses nœuds de calcul sont indisponibles, même si l'état du backend est répliqué. Par conséquent, Dataflow rejette les jobs qui spécifient une zone de nœud de calcul particulière (telle que --workerZone, --worker_zone ou --zone) lorsque la haute disponibilité du traitement en flux continu est activée.
  • Configuration uniquement lors de la création du job : vous ne pouvez activer la haute disponibilité du traitement en flux continu que lorsque vous démarrez un job. Vous ne pouvez pas activer ni désactiver la haute disponibilité du traitement en flux continu lorsque vous effectuez une mise à jour du pipeline sur place. Pour modifier ce paramètre sur un pipeline en cours d'exécution, effectuez un arrêt et un remplacement automatisés mise à jour, ou arrêtez ou drainez le pipeline et démarrez un nouveau job sans l'option --update.
  • Latence supplémentaire du filigrane : lorsque vous activez la haute disponibilité du traitement en flux continu, le filigrane d'un job n'avance qu'une fois les données traitées et répliquées dans les zones. Étant donné que le filigrane attend la réplication entre les zones, vous remarquerez peut-être quelques secondes de latence supplémentaire.
  • Facturation basée sur les ressources obligatoire : les jobs à haute disponibilité du traitement en flux continu utilisent toujours la facturation basée sur les ressources et jamais la facturation par données traitées. Même si les jobs utilisent la facturation basée sur les ressources, la haute disponibilité du streaming n'entraîne aucuns frais supplémentaires pendant la version preview. Pour en savoir plus, consultez la section Tarifs.

Activer la haute disponibilité du traitement en flux continu

Pour activer la haute disponibilité du traitement en flux continu lorsque vous lancez un nouveau job Dataflow par flux, définissez l'requires_high_availability option de service.

Java

--dataflowServiceOptions=requires_high_availability

Python

--dataflow_service_options=requires_high_availability

Go

--dataflow_service_options=requires_high_availability

gcloud

Lorsque vous exécutez un modèle à l'aide de la gcloud dataflow jobs run commande ou un modèle Flex à l'aide de la gcloud dataflow flex-template run commande, incluez les --enable-streaming-engine et --additional-experiments options :

--enable-streaming-engine \
--additional-experiments=requires_high_availability

Par exemple, pour exécuter un modèle Flex avec la haute disponibilité du traitement en flux continu activée :

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

Remplacez les valeurs suivantes :

  • JOB_NAME : nom de votre job Dataflow
  • PROJECT_ID: ID de votre Google Cloud projet
  • TEMPLATE_LOCATION: chemin d'accès Cloud Storage à votre fichier de spécification de modèle Flex
  • REGION : la région dans laquelle le job est exécuté
  • KEY_1=VALUE_1, KEY_2=VALUE_2 : paires de paramètres clé-valeur pour le modèle Flex

Console

Pour activer la haute disponibilité du traitement en flux continu lorsque vous exécutez un modèle ou un modèle Flex dans la Google Cloud console :

  1. Dans la Google Cloud console, accédez à la page Jobs de Dataflow.

    Accéder aux tâches

  2. Cliquez sur Create job from template (Créer un job à partir d'un modèle).

  3. Sélectionnez le modèle que vous souhaitez exécuter dans le menu Dataflow template (Modèle Dataflow).

  4. Développez la section Paramètres facultatifs.

  5. Dans le champ Additional experiments (Expériences supplémentaires), saisissez requires_high_availability.

  6. Cliquez sur Run Job (Exécuter le job).

REST

Utilisez le champ additionalExperiments dans l' RuntimeEnvironment objet, ou dans l' FlexTemplateRuntimeEnvironment objet lorsque vous lancez un modèle Flex :

{
  "additionalExperiments": ["requires_high_availability"]
}

Comportement de basculement

Dans le cas rare d'un basculement zonal, vous remarquerez peut-être une réduction du débit de quelques secondes à quelques minutes pendant que le job passe à un nouvel état principal et établit une nouvelle instance répliquée secondaire dans une autre zone. Le basculement se produit automatiquement sans perte de données, et aucune action n'est requise de votre part. Vous pouvez suivre les événements de basculement à l'aide des métriques décrites dans la section Surveiller la haute disponibilité.

Sources et récepteurs

La configuration d'un job Dataflow en tant que ressource régionale ne rend pas automatiquement les sources et les récepteurs du job régionaux ou mondiaux. Les sources et les récepteurs régionaux et mondiaux fonctionnent bien avec la haute disponibilité du traitement en flux continu, car aucun ne dépend d'une seule zone. La disponibilité de chaque source ou récepteur dépend de la configuration de ce service :

  • De nombreuses Google Cloud sources et de nombreux récepteurs, tels que Pub/Sub, BigQuery et Google Cloud Managed Service for Apache Kafka, offrent une disponibilité régionale ou mondiale par défaut.
  • Si vous utilisez des sources et des récepteurs personnalisés ou autogérés, tels qu'Apache Kafka ou Apache Iceberg auto-hébergés, vous devez configurer et maintenir leur disponibilité régionale indépendamment.

Surveiller la haute disponibilité

Vous pouvez surveiller l'état de haute disponibilité de votre job dans Cloud Monitoring à l'aide de la métrique dataflow.googleapis.com/job/high_availability_mode. Cette métrique de jauge booléenne inclut un libellé status qui est true pour l'état actuel du job et false pour les autres états. Le libellé status peut prendre les valeurs suivantes :

  • Disabled : la haute disponibilité du traitement en flux continu n'est pas activée pour ce job.
  • Highly Available: la haute disponibilité du traitement en flux continu est activée et l'état du backend est répliqué dans les zones.
  • Establishing High Availability: l'état du backend n'est temporairement pas répliqué (par exemple, après une défaillance zonale), mais une nouvelle instance répliquée secondaire est en cours de création.

Lorsque vous activez la haute disponibilité du traitement en flux continu, les métriques de filigrane Dataflow standards n'avancent qu'une fois les données traitées et répliquées dans les zones. Pour en savoir plus sur l'affichage des métriques, consultez la section Utiliser Monitoring.

Tarifs

Pendant la version bêta, l'utilisation de la haute disponibilité du traitement en flux continu n'entraîne aucuns frais supplémentaires.

Lors de la disponibilité générale, l'utilisation de la réplication est facturée au même tarif que l'utilisation de l'état principal. L'utilisation de l'état est mesurée dans le cadre des unités de calcul Streaming Engine.

Étape suivante