Alta disponibilidade de streaming

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_zone ou --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 Dataflow
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • TEMPLATE_LOCATION: o caminho do Cloud Storage para o arquivo de especificação do modelo Flex
  • REGION: a região em que o job é executado
  • KEY_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:

  1. No Google Cloud console, acesse a página Jobs do Dataflow.

    Acessar "Jobs"

  2. Clique em Criar job usando um modelo.

  3. Selecione o modelo que você quer executar no menu Modelo do Dataflow.

  4. Abra Parâmetros opcionais.

  5. No campo Experimentos adicionais, insira requires_high_availability.

  6. 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