Por padrão, os jobs de streaming do Dataflow executam alguns dos recursos de back-end em uma única zona do Compute Engine, o que os torna suscetíveis à perda de dados durante uma interrupção zonal. A alta disponibilidade de streaming transforma um job do Streaming Engine em um recurso regional, replicando o estado do back-end em várias zonas da região. Quando você ativa a alta disponibilidade de streaming, uma falha de zona única não causa a interrupção do job de streaming.
Suporte e limitações
A alta disponibilidade de streaming tem os seguintes requisitos e limitações:
- Streaming Engine necessário: o job precisa ser um pipeline de streaming que usa o Streaming Engine.
- Posicionamento regional de workers necessário:os workers do Compute Engine precisam
usar o posicionamento
regional.
Se um job tiver apenas workers em uma zona específica e essa zona ficar indisponível, o job não poderá processar dados porque os workers não estarão disponíveis, mesmo que o estado do back-end seja replicado. Portanto, o Dataflow rejeita jobs que especificam uma zona de worker específica (como
--workerZone,--worker_zoneou--zone) quando a alta disponibilidade de streaming está ativada. - Configurado apenas na criação do job:só é possível ativar a alta disponibilidade de streaming ao iniciar um novo job. Não é possível ativar ou desativar a alta disponibilidade de streaming
ao realizar uma atualização de pipeline
no local. Para mudar esta
configuração em um pipeline em execução, realize uma
atualização automática de parar e substituir
update, ou
interrompa ou esvazie o pipeline e
inicie um novo job sem a flag
--update. - Atraso adicional da marca-d'água: quando você ativa a alta disponibilidade de streaming, a marca-d'água de um job só avança depois que os dados são processados e replicados em todas as zonas. Como a marca-d'água aguarda a replicação entre zonas, você pode notar alguns segundos de atraso adicional da marca-d'água.
- Faturamento baseado em recursos necessário: os jobs de alta disponibilidade de streaming sempre usam o faturamento baseado em recursos e nunca usam o faturamento de dados processados. Embora os jobs usem o faturamento baseado em recursos, não há cobranças extras pela alta disponibilidade de streaming durante o pré-lançamento. Para mais informações, consulte Preços.
Ativar a alta disponibilidade de streaming
Para ativar a alta disponibilidade de streaming ao iniciar um novo
job de streaming do Dataflow, defina a requires_high_availability
opção de serviço.
Java
--dataflowServiceOptions=requires_high_availability
Python
--dataflow_service_options=requires_high_availability
Go
--dataflow_service_options=requires_high_availability
gcloud
Ao executar um modelo usando o
gcloud dataflow jobs run comando
ou um modelo Flex usando o
gcloud dataflow flex-template
run comando, inclua as
--enable-streaming-engine e --additional-experiments flags:
--enable-streaming-engine \
--additional-experiments=requires_high_availability
Por exemplo, para executar um modelo Flex com a alta disponibilidade de streaming ativada:
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
Substitua os seguintes valores:
JOB_NAME: o nome do job do DataflowPROJECT_ID: o ID do seu Google Cloud projetoTEMPLATE_LOCATION: o caminho do Cloud Storage para o arquivo de especificação do modelo FlexREGION: a região em que o job é executadoKEY_1=VALUE_1,KEY_2=VALUE_2: pares de parâmetros de chave-valor para o modelo Flex
Console
Para ativar a alta disponibilidade de streaming ao executar um modelo ou modelo Flex no Google Cloud console:
No Google Cloud console, acesse a página Jobs do Dataflow.
Clique em Criar job usando um modelo.
Selecione o modelo que você quer executar no menu Modelo do Dataflow.
Abra Parâmetros opcionais.
No campo Experimentos adicionais, insira
requires_high_availability.Cliquem em Executar job.
REST
Use o campo additionalExperiments no
RuntimeEnvironment
objeto ou no
FlexTemplateRuntimeEnvironment
objeto ao iniciar um modelo Flex:
{
"additionalExperiments": ["requires_high_availability"]
}
Comportamento de failover
No raro caso de um failover zonal, você poderá observar alguns segundos a alguns minutos de capacidade de processamento reduzida enquanto o job muda para um novo estado principal e estabelece uma nova réplica secundária em outra zona. O failover ocorre automaticamente sem descartar dados, e nenhuma ação é necessária. É possível acompanhar eventos de failover usando as métricas descritas em Monitorar a alta disponibilidade.
Origens e coletores
A configuração de um job do Dataflow como um recurso regional não torna automaticamente as origens e os coletores do job regionais ou globais. As origens e os coletores regionais e globais funcionam bem com a alta disponibilidade de streaming, porque nenhum deles depende de uma única zona. A disponibilidade de cada origem ou coletor depende da configuração desse serviço:
- Muitas Google Cloud origens e coletores, como o Pub/Sub, BigQuery, e o Serviço Gerenciado do Google Cloud para Apache Kafka, oferecem disponibilidade regional ou global por padrão.
- Se você usar origens e coletores personalizados ou autogerenciados, como o Apache Kafka ou o Apache Iceberg auto-hospedado, será necessário configurar e manter a disponibilidade regional deles de forma independente.
Monitorar a alta disponibilidade
É possível monitorar o status de alta disponibilidade do job no Cloud Monitoring usando a métrica dataflow.googleapis.com/job/high_availability_mode. Essa métrica de medidor booleano inclui um rótulo status que é true para o status atual do job e false para os outros status. O rótulo status tem os seguintes valores possíveis:
Disabled: a alta disponibilidade de streaming não está ativada para esse job.Highly Available: a alta disponibilidade de streaming está ativada e o estado do back-end é replicado em todas as zonas.Establishing High Availability: o estado do back-end não é replicado temporariamente (por exemplo, após uma falha zonal), mas uma nova réplica secundária está sendo criada.
Quando você ativa a alta disponibilidade de streaming, as métricas de marca-d'água padrão do Dataflow só avançam depois que os dados são processados e replicados em todas as zonas. Para mais informações sobre como visualizar métricas, consulte Usar o Monitoring.
Preços
Durante o pré-lançamento, não há cobranças extras pelo uso da alta disponibilidade de streaming.
Na disponibilidade geral (DG), o uso da replicação é cobrado na mesma taxa que o uso do estado principal. O uso do estado é medido como parte das unidades de computação do Streaming Engine.
A seguir
- Saiba mais sobre as regiões do Dataflow e o posicionamento regional.
- Saiba mais sobre o Streaming Engine.
- Monitore seus pipelines com o Monitoring.