Compartilhar via


Garantias de entrega de eventos (Azure Stream Analytics)

A linguagem de consulta do Azure Stream Analytics estende a sintaxe do SQL para habilitar cálculos complexos em fluxos de eventos. Com o Stream Analytics, há alguns conceitos relacionados à Entrega de Eventos que vale a pena discutir:

  • Processamento exatamente uma vez
  • Entrega exatamente uma vez
  • Registros duplicados

Além desses conceitos detalhados abaixo, é importante considerar a opção de início de um trabalho para garantir que nenhuma perda de dados possa acontecer.

Processamento exatamente uma vez

Garantia de processamento exatamente uma vez significa que, dado um conjunto de entradas, o sistema sempre retorna os mesmos resultados. Isso é muito importante para repetibilidade e se aplica mesmo no caso de reinicialização do trabalho ou em vários trabalhos em execução em paralelo na mesma entrada. O Azure Stream Analytics garante exatamente uma vez o processamento.

Entrega exatamente uma vez

A garantia de entrega exatamente uma vez significa que todas as saídas do processamento exatamente uma vez são entregues ao coletor de saída exatamente uma vez, portanto, não há saída duplicada. Isso requer que os recursos transacionais no adaptador de saída sejam alcançados.

O Azure Stream Analytics garante a entrega pelo menos uma vez aos coletores de saída, o que garante que todos os resultados sejam gerados, mas podem ocorrer resultados duplicados. No entanto, a entrega exatamente uma vez pode ser obtida com várias saídas, como O Azure Cosmos DB ou SQL do Azure.

Registros duplicados

Devido à garantia de entrega pelo menos uma vez, quando um trabalho do Stream Analytics está em execução, registros duplicados podem ocasionalmente ser notados nos dados de saída. Esses registros duplicados são esperados porque os adaptadores de saída do Azure Stream Analytics não gravam os eventos de saída transacionalmente. Esse cenário de "registro duplicado" poderá resultar se uma das seguintes condições ocorrer:

  • A instância do Azure é atualizada enquanto o trabalho está em execução
  • O trabalho do Stream Analytics é atualizado ou ocorre um problema com conectividade ou confiabilidade para a saída do trabalho
  • A instância do Azure que executa o trabalho tem uma interrupção
  • O trabalho do Stream Analytics é iniciado com a opção quando a última parada foi interrompida

O consumidor downstream dos eventos de saída precisa dedusificar os eventos usando a identidade lógica dos eventos. Por exemplo, se você estiver agregando eventos por grupos em uma janela em cascata, a identidade lógica do evento será os grupos e a hora de término da janela em cascata. Se você estiver executando uma consulta de passagem, talvez seja necessário carregar uma ID exclusiva no evento para dedupe.

Saída que dá suporte à entrega exata uma vez com o Azure Stream Analytics

Azure Cosmos DB

Usando o Azure Cosmos DB, o Azure Stream Analytics garante a entrega exatamente uma vez. Como o Azure Stream Analytics usa upsert, nenhuma ação é necessária pelo usuário. Confira mais informações sobre a saída do Azure Stream Analytics para o Azure Cosmos DB.

SQL

Ao usar a saída do SQL, os usuários poderão obter uma entrega exatamente uma vez se os seguintes requisitos forem atendidos:

  • todos os eventos de streaming de saída têm uma chave natural, ou seja, são exclusivamente identificáveis por um campo ou uma combinação de campos.
  • a tabela SQL de saída tem uma restrição exclusiva (ou chave primária) criada usando a chave natural dos eventos de saída.

Isso é suficiente para evitar duplicatas porque a saída do SQL respeita todas as restrições colocadas na tabela ignorando quaisquer eventos que causem uma violação de restrição exclusiva.

tabela do Azure

Todas as entidades em uma Tabela de Armazenamento do Azure são identificadas exclusivamente pela concatenação dos RowKey campos e PartitionKey . As entidades upserts do Azure Stream Analytics, portanto, o valor de uma entidade de tabela será o evento de saída mais recente com a combinação correspondente RowKey/PartitionKey . Portanto, para obter uma entrega exatamente uma vez, verifique se cada evento de saída tem uma combinação exclusiva RowKey/PartitionKey . Se isso for feito, os eventos duplicados substituirão as versões anteriores. (O campo definido pelo Timestamp sistema, que é o último tempo modificado para a entidade, ainda será alterado nesse caso.)

Consulte Também

Gerenciamento de tempo