Políticas de Distorção de Tempo (Azure Stream Analytics)

No Stream Analytics, todos os eventos de fluxo de dados têm um carimbo de data/hora associado aos mesmos. Os utilizadores podem utilizar a palavra-chave TIMESTAMP BY para escolher entre uma destas duas vezes diferentes:

  • Hora da aplicação, ou seja, a hora em que os eventos são produzidos (como marcado pela aplicação/dispositivo que gera os eventos). Ao utilizar o tempo de aplicação, pode processar todos os eventos com uma linha cronológica global ou analisar cada dispositivo/partição com a sua própria linha cronológica com substreams;
  • Hora de chegada, a hora em que o evento chegou à cloud (por exemplo, hora de chegada em Hub IoT ou Hub de Eventos).

Além da escolha do carimbo de data/hora, os utilizadores poderão ter de definir a política Chegada Tardia e Fora da Encomenda devido aos seguintes problemas:

  • Os produtores dos eventos têm distorções no relógio. Isto é comum quando os produtores são de máquinas diferentes, pelo que têm relógios diferentes.
  • Devido à latência de rede, os eventos provenientes do mesmo relógio podem chegar ao Hub de Eventos ou Hub IoT por uma ordem diferente de quando foram originados
  • O relógio está a alternar entre partições. Ao utilizar consultas não particionadas, os eventos de todas as partições são intercalados pelo carimbo de data/hora escolhido pelo utilizador. As distorções de relógio entre as partições podem resultar num atraso no processamento, uma vez que a fusão tem de aguardar pela partição mais lenta.

Os fluxos de entrada que não estão em ordem podem ser:

  • Ordenado (e, portanto, atrasado).
  • Ajustado pelo sistema, de acordo com a política especificada pelo utilizador.

O Stream Analytics tolera eventos tardios e fora de ordem ao processar por hora da aplicação.

Política Fora de Ordem

Ter eventos ordenados por hora é muito importante na análise de transmissão em fluxo. No entanto, devido aos três problemas mencionados acima, muitas vezes acontece que são recebidos fora de ordem, o que pode afetar os resultados das nossas consultas. A Política Fora de Encomenda permite reordenar eventos por carimbo de data/hora quando chegam dentro da janela de tolerância definida. Os eventos que chegam mais tarde do que a tolerância são removidos ou ajustados, dependendo da definição que escolher.

  • Ajustado: ajustado para parecer ter chegado na hora mais recente aceitável.
  • Removido: Eliminado.

Esta definição pode ser ajustada no portal do Azure (no separador "Ordenação de Eventos" de uma tarefa). Para obter mais informações, veja a página de considerações da ordem de eventos.

Ao definir uma política fora de ordem superior a 0, o Stream Analytics irá colocar eventos em memória intermédia até essa janela e reordená-los utilizando o carimbo de data/hora definido pelo utilizador antes de aplicar a transformação temporal. Geralmente, começar primeiro com uma janela de 3 segundos é uma boa prática e, em seguida, otimizar o valor para reduzir o número de eventos a ajustar o tempo. Tenha em atenção que, devido à memória intermédia, o efeito colateral é que o resultado é adiado pelo mesmo período de tempo. Como resultado, terá de otimizar o valor para reduzir o número de eventos fora de ordem e manter a latência baixa.

Tolerância de Chegada Tardia

A janela de tolerância de chegada tardia é utilizada para contabilizar o atraso nos eventos que chegam à origem de entrada devido a vários motivos descritos acima. Resumidamente, a janela de chegada tardia é o atraso máximo entre a geração de eventos e a receção do evento na origem de entrada. O ajuste com base na Tolerância à chegada tardia é feito primeiro e a ordem é efetuada a seguir. A coluna System.Timestamp() terá o carimbo de data/hora final atribuído ao evento.

Esta definição só é aplicável ao processamento por Hora da aplicação, caso contrário, é ignorada. Também pode ser definido no portal do Azure (no separador "Ordenação de Eventos" de uma tarefa). Para obter mais informações, veja a página de considerações da ordem de eventos.

Quando um evento está atrasado, o carimbo de data/hora é ajustado para o tempo de fila atual na origem de entrada menos a janela de tolerância de chegada tardia (ou removido, dependendo da ação escolhida). Quando várias partições do mesmo fluxo de entrada ou de vários fluxos de entrada são combinadas em conjunto, a tolerância de chegada tardia é a quantidade máxima de tempo que cada partição aguarda por novos dados.

Tolerância à Chegada Tardia e Eventos dispersos

A política de Chegada Tardia permite que o Stream Analytics avance o tempo e gere a saída de forma mais atempadamente na ausência de eventos de entrada. Isto é muito útil quando os eventos de entrada são dispersos (ou não são recebidos em algumas das partições do Hub de Eventos).

Por exemplo, os eventos de entrada são gerados uma vez a cada minuto para uma consulta select*. Sem utilizar esta política, o Stream Analytics não pode gerar resultados de saída até que os eventos cheguem a todas as partições do Hub de Eventos (para mover o tempo para a frente). Isto pode significar 16 minutos se o Hub de Eventos tiver 16 partições e cada evento for entregue numa partição diferente. Com a política predefinida de 5 segundos, o relógio é movido para a frente 5 segundos após o primeiro evento, pelo que o evento de saída é gerado 5 segundos após o primeiro evento.

Consulte também

Gestão de Tempo (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Consideração da Ordem de Eventos