Per impostazione predefinita, i job di streaming di Dataflow eseguono alcune delle loro risorse di backend in una singola zona di Compute Engine, il che li rende suscettibili alla perdita di dati durante un' interruzione zonale. L'alta affidabilità dello streaming rende un job di Streaming Engine una risorsa di regione replicando lo stato del backend in più zone della regione. Quando abiliti l'alta affidabilità dello streaming, un errore in una singola zona non causa l'interruzione del job di streaming.
Supporto e limitazioni
L'alta affidabilità dello streaming presenta i seguenti requisiti e limitazioni:
- Streaming Engine richiesto: il job deve essere una pipeline di streaming che utilizza Streaming Engine.
- Posizionamento dei worker regionali richiesto: i worker di Compute Engine devono
utilizzare il posizionamento regionale.
Se un job ha worker solo in una zona specifica e questa zona diventa non disponibile, il job non può elaborare i dati perché i suoi worker non sono disponibili, anche se lo stato del backend viene replicato. Pertanto, Dataflow rifiuta i job che specificano una zona worker specifica (ad esempio
--workerZone,--worker_zoneo--zone) quando è abilitata l'alta affidabilità dello streaming. - Configurato solo al momento della creazione del job: puoi abilitare l'alta affidabilità dello streaming solo quando avvii un nuovo job. Non puoi abilitare o disabilitare l'alta affidabilità dello streaming
quando esegui un aggiornamento della
pipeline in loco. Per modificare questa
impostazione in una pipeline in esecuzione, esegui un
aggiornamento automatico di arresto e sostituzione
update, oppure
arresta o svuota la pipeline e
avvia un nuovo job senza il
--updateflag. - Ritardo aggiuntivo della filigrana: quando abiliti l'alta affidabilità dello streaming, la filigrana di un job avanza solo dopo che i dati sono stati elaborati e replicati tra le zone. Poiché la filigrana attende la replica tra le zone, potresti notare alcuni secondi di ritardo aggiuntivo della filigrana.
- Fatturazione basata sulle risorse richiesta: i job di alta affidabilità dello streaming utilizzano sempre la fatturazione basata sulle risorse e mai la fatturazione basata sui dati elaborati. Anche se i job utilizzano la fatturazione basata sulle risorse, non sono previsti costi aggiuntivi per l'alta affidabilità dello streaming durante l'anteprima. Per ulteriori informazioni, consulta la sezione Prezzi.
Abilitare l'alta affidabilità dello streaming
Per abilitare l'alta affidabilità dello streaming quando avvii un nuovo
job di streaming di Dataflow, imposta l'requires_high_availability
opzione di servizio.
Java
--dataflowServiceOptions=requires_high_availability
Python
--dataflow_service_options=requires_high_availability
Vai
--dataflow_service_options=requires_high_availability
gcloud
Quando esegui un modello utilizzando il
gcloud dataflow jobs run comando
o un template flessibile utilizzando il
gcloud dataflow flex-template
run comando, includi i
--enable-streaming-engine e --additional-experiments flag:
--enable-streaming-engine \
--additional-experiments=requires_high_availability
Ad esempio, per eseguire un template flessibile con l'alta affidabilità dello streaming abilitata:
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
Sostituisci i seguenti valori:
JOB_NAME: il nome del job DataflowPROJECT_ID: il tuo Google Cloud ID progettoTEMPLATE_LOCATION: il percorso Cloud Storage del file di specifica del modello flessibileREGION: la regione in cui viene eseguito il jobKEY_1=VALUE_1,KEY_2=VALUE_2: coppie di parametri chiave-valore per il modello flessibile
Console
Per abilitare l'alta affidabilità dello streaming quando esegui un template o un template flessibile nella Google Cloud console:
Nella Google Cloud console, vai alla pagina Job di Dataflow.
Fai clic su Crea job da modello.
Seleziona il modello che vuoi eseguire dal menu Modello Dataflow.
Espandi Parametri facoltativi.
Nel campo Esperimenti aggiuntivi, inserisci
requires_high_availability.Fai clic su Esegui job.
REST
Utilizza il additionalExperiments campo nell'
RuntimeEnvironment
oggetto o nell'
FlexTemplateRuntimeEnvironment
oggetto quando avvii un modello flessibile:
{
"additionalExperiments": ["requires_high_availability"]
}
Comportamento di failover
Nel raro caso di un failover zonale, potresti notare una riduzione del throughput da alcuni secondi ad alcuni minuti mentre il job passa a un nuovo stato primario e stabilisce una nuova replica secondaria in un'altra zona. Il failover avviene automaticamente senza eliminare i dati e non è richiesta alcuna azione da parte tua. Puoi monitorare gli eventi di failover utilizzando le metriche descritte in Monitorare l'alta affidabilità.
Fonti e sink
La configurazione di un job Dataflow come risorsa di regione non rende automaticamente regionali o globali le origini e i sink del job. Le origini e i sink regionali e globali funzionano bene con l'alta affidabilità dello streaming, perché nessuno dei due dipende da una singola zona. La disponibilità di ogni origine o sink dipende dalla configurazione del servizio:
- Molte Google Cloud origini e sink, come Pub/Sub, BigQuery e Google Cloud Managed Service per Apache Kafka, forniscono la disponibilità regionale o globale per impostazione predefinita.
- Se utilizzi origini e sink personalizzati o autogestiti, come Apache Kafka o Apache Iceberg self-hosted, devi configurare e gestire la loro disponibilità regionale in modo indipendente.
Monitorare l'alta affidabilità
Puoi monitorare lo stato di alta affidabilità del job in Cloud Monitoring utilizzando la metrica dataflow.googleapis.com/job/high_availability_mode. Questa metrica di tipo indicatore booleano include un'etichetta status che è true per lo stato attuale del job e false per gli altri stati. L'etichetta status ha i seguenti valori possibili:
Disabled: l'alta affidabilità dello streaming non è abilitata per questo job.Highly Available: l'alta affidabilità dello streaming è abilitata e lo stato del backend viene replicato tra le zone.Establishing High Availability: lo stato del backend non viene replicato temporaneamente (ad esempio, dopo un errore zonale), ma è in corso la creazione di una nuova replica secondaria.
Quando abiliti l'alta affidabilità dello streaming, le metriche della filigrana standard di Dataflow avanzano solo dopo che i dati sono stati elaborati e replicati tra le zone. Per ulteriori informazioni sulla visualizzazione delle metriche, consulta Utilizzare Monitoring.
Prezzi
Durante l'anteprima, non sono previsti costi aggiuntivi per l'utilizzo dell'alta affidabilità dello streaming.
Al momento della disponibilità generale, l'utilizzo della replica viene fatturato alla stessa tariffa dell'utilizzo dello stato primario. L'utilizzo dello stato viene misurato come parte delle unità di calcolo di Streaming Engine.
Passaggi successivi
- Scopri di più sulle regioni di Dataflow e sul posizionamento regionale.
- Scopri di più su Streaming Engine.
- Monitora le pipeline con Monitoring.