Defina o modo de streaming da pipeline

O Dataflow suporta dois modos para tarefas de streaming:

  • Modo exatamente uma vez. Este modo é o predefinido para todos os trabalhos de streaming do Dataflow. Neste modo, o Dataflow garante que os registos não são ignorados nem duplicados à medida que os dados se movem através do pipeline.
  • Modo pelo menos uma vez. Este modo garante que os registos são processados, pelo menos, uma vez (ou seja, não são perdidos registos de entrada). No entanto, os registos duplicados são possíveis neste modo. Para exemplos de utilização que podem tolerar duplicados, o modo at-least-once pode reduzir significativamente o custo e a latência da sua tarefa.

Escolha o modo de streaming a usar

Escolha o modo exatamente uma vez se precisar de garantir resultados exatos da pipeline e semântica previsível. Por exemplo:

  • Pipelines com agregações, como contagem, soma ou média.
  • Exemplos de utilização essenciais para a empresa que dependem do processamento dos registos uma e apenas uma vez. Os exemplos incluem a deteção de fraudes, a deteção de ameaças de rede e os painéis de controlo de inventário de comércio eletrónico.

Escolha o modo de streaming pelo menos uma vez se a sua carga de trabalho puder tolerar registos duplicados e beneficiar de uma redução do custo ou da latência. Por exemplo:

  • Cargas de trabalho em que a remoção de duplicados é realizada a jusante do Dataflow. Por exemplo, pipelines que escrevem no BigQuery ou num armazenamento de dados SQL.
  • Pipelines apenas de mapeamento sem agregações. Os exemplos incluem o processamento de registos, a captura de dados de alterações ou tarefas de extração, transformação e carregamento (ETL), em que o pipeline só executa transformações por elemento, como a tradução de esquemas.
  • Pipelines em que o destino de saída não pode garantir a entrega exatamente uma vez, como o Pub/Sub. Nesse caso, a eliminação de duplicados na pipeline pode ser desnecessária e pode beneficiar do custo e da latência reduzidos do modo de streaming, pelo menos, uma vez.
  • Pipelines que leem a partir do Pub/Sub. A leitura a partir do Pub/Sub é significativamente otimizada quando usa o modo "pelo menos uma vez".

Considerações adicionais

  • O modo "Pelo menos uma vez" pode reduzir significativamente o custo e a latência de um pipeline. O impacto exato depende das especificidades do pipeline. Teste a transmissão em fluxo "pelo menos uma vez" em cargas realistas para avaliar o impacto.

  • Quando usa o modo "pelo menos uma vez", a taxa de registos duplicados depende do número de novas tentativas. Normalmente, a taxa de base é baixa (<1%). No entanto, podem ocorrer picos se os nós de trabalho falharem ou se outras condições causarem chamadas RPC repetidas.

  • O modo de streaming afeta a forma como o Streaming Engine processa os registos, mas não altera a semântica dos conetores de E/S. Recomendamos que alinhe a semântica de E/S com o modo de streaming. Por exemplo, se usar o modo de streaming at-least-once com o conetor BigQuery I/O, defina o modo de escrita como STORAGE_API_AT_LEAST_ONCE. Os modelos do Dataflow fornecidos pela Google ativam automaticamente esta opção quando usa o streaming, pelo menos, uma vez.

  • As transformações ao nível do elemento, como Map, nem sempre são idempotentes. Por exemplo, considere uma função que recebe uma mensagem e anexa a data/hora atual à mesma. Nesse caso, um registo duplicado pode produzir vários resultados distintos. O modo "Pelo menos uma vez" pode não ser adequado para esse pipeline.

Defina o modo de streaming

O processamento exatamente uma vez é a predefinição para todos os trabalhos do Dataflow. Para ativar o modo de streaming "pelo menos uma vez", defina a streaming_mode_at_least_once opção de serviço.

Java

--dataflowServiceOptions=streaming_mode_at_least_once

Python

--dataflow_service_options=streaming_mode_at_least_once

Go

--dataflow_service_options=streaming_mode_at_least_once

Se não especificar a opção streaming_mode_at_least_once, o Dataflow usa o modo de streaming exatamente uma vez.

Se definir a opção streaming_mode_at_least_once, o Dataflow ativa automaticamente o Streaming Engine com a faturação baseada em recursos.

Para atualizar o modo de streaming num trabalho em execução, inicie um trabalho de substituição.

Selecione o modo de streaming para um modelo

Para selecionar o modo de streaming quando executa um modelo de streaming do Dataflow, siga estes passos:

Consola

  1. Na Google Cloud consola, aceda à página Tarefas do Dataflow.

    Aceda a Empregos

  2. Clique em Criar tarefa a partir de modelo.

  3. Selecione o modelo que quer executar no menu pendente Modelo de fluxo de dados.

  4. Para o Modo de streaming, selecione o modo de streaming. Se o modelo suportar apenas um modo, esta opção é desativada.

gcloud

Para ativar o modo "pelo menos uma vez", defina a opção streaming_mode_at_least_once no parâmetro additional-experiments:

--additional-experiments=streaming_mode_at_least_once

Para ativar o modo de execução única, defina a opção streaming_mode_exactly_once na sinalização additional-experiments:

--additional-experiments=streaming_mode_exactly_once

Estas duas opções são mutuamente exclusivas. Se não definir uma destas opções, o modelo usa o modo de streaming predefinido, que é determinado pelos metadados do modelo. Para mais informações, consulte o artigo Modelos personalizados.

REST

Use o campo additionalExperiments no objeto FlexTemplateRuntimeEnvironment (modelos flexíveis) ou RuntimeEnvironment (modelos clássicos).

{
  additionalExperiments : ["streaming_mode_at_least_once"]
  ...
}

Modelos personalizados

Se criar um modelo personalizado que suporte o processamento pelo menos uma vez, adicione os seguintes campos de nível superior ao ficheiro de metadados do modelo:

{
  "streaming": true,
  "supportsAtLeastOnce": true,
  "supportsExactlyOnce": true,
  "defaultStreamingMode": "AT_LEAST_ONCE"
}

Estes campos de metadados permitem que os utilizadores selecionem o modo de streaming quando implementam o modelo na Google Cloud consola. O campo defaultStreamingMode é opcional e especifica o modo de streaming predefinido para o modelo. Se não especificar defaultStreamingMode e o modelo suportar ambos os modos, o modo de execução única é o predefinido.

Para mais informações, consulte as seguintes secções na documentação de modelos do Dataflow:

Veja o modo de streaming de uma tarefa

Para ver o modo de streaming de uma tarefa, aceda à página Tarefas na Google Cloud consola.

Aceda a Empregos

O modo de streaming também é apresentado na página de detalhes do trabalho, no painel Informações do trabalho.

Limitações

O modo de streaming "Pelo menos uma vez" requer o Streaming Engine com a faturação baseada em recursos.

Preços

O modo "Pelo menos uma vez" usa sempre a faturação baseada em recursos, em que lhe é faturado o total de recursos consumidos pela sua tarefa.

O custo por unidade das unidades de computação do Streaming Engine é o mesmo, independentemente do modo de streaming. No entanto, na maioria dos casos, um pipeline consome significativamente menos recursos totais quando usa o modo at-least-once.

O que se segue?