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 a eles. Os usuários podem usar o TIMESTAMP BY palavra-chave para escolher entre uma destas duas vezes diferentes:
- Hora do aplicativo, ou seja, a hora em que os eventos são produzidos (conforme marcado pelo aplicativo/dispositivo que gera os eventos). Ao usar o tempo do aplicativo, você pode processar todos os eventos usando uma linha do tempo global ou analisar cada dispositivo/partição usando seus próprios linha do tempo usando substreams;
- Hora de chegada, a hora em que o evento chegou à nuvem (por exemplo, hora de chegada em Hub IoT ou Hub de Eventos).
Além da escolha do carimbo de data/hora, os usuários podem precisar definir a política de Chegada Tardia e Fora de Ordem devido aos seguintes problemas:
- Os produtores dos eventos têm distorções de relógio. Isso é comum quando os produtores são de máquinas diferentes, portanto, eles têm relógios diferentes.
- Devido à latência de rede, os eventos originados do mesmo relógio podem chegar ao Hub de Eventos ou Hub IoT em uma ordem diferente de quando foram originados
- Distorções de relógio entre partições. Ao usar consultas não particionadas, os eventos de todas as partições são mesclados pelo carimbo de data/hora de escolha do usuário. As distorções de relógio entre as partições podem resultar em atraso no processamento, pois a fusão precisa aguardar a partição mais lenta.
Os fluxos de entrada que não estão em ordem podem ser:
- Classificado (e, portanto, atrasado).
- Ajustados pelo sistema, de acordo com a política especificada pelo usuário.
O Stream Analytics tolera eventos atrasados e fora de ordem ao processar pela hora do aplicativo.
Política fora de ordem
Ter eventos ordenados por tempo é muito importante na análise de streaming. No entanto, devido aos três problemas mencionados acima, geralmente é o caso de eles serem recebidos fora de ordem, o que pode afetar os resultados de nossas consultas. A Política fora de ordem permite reordenar eventos por carimbo de data/hora quando eles chegam dentro da janela de tolerância definida. Os eventos que chegam posteriores à tolerância são descartados ou ajustados, dependendo da configuração escolhida.
- Ajustados: para que pareçam ter chegado no último horário aceitável.
- Removidos: descartados.
Essa configuração pode ser ajustada na portal do Azure (na guia "Ordenação de Eventos" de um trabalho). Para obter mais informações, consulte a página de considerações sobre a ordem do evento.
Ao definir uma política fora de ordem maior que 0, o Stream Analytics armazenará eventos em buffer até essa janela e os reordenará usando o carimbo de data/hora definido pelo usuário antes de aplicar a transformação temporal. Geralmente, começar com uma janela de 3 segundos primeiro é uma boa prática recomendada e, em seguida, ajustar o valor para reduzir o número de eventos que estão recebendo tempo ajustado. Observe que, devido ao buffer, o efeito colateral é que a saída é atrasada pelo mesmo período de tempo. Como resultado, você precisará ajustar 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 é usada para considerar o atraso nos eventos que chegam à fonte de entrada devido a vários motivos descritos acima. Em resumo, a janela de atraso é o atraso máximo entre a geração de eventos e o recebimento do evento na fonte de entrada. O ajuste com base na tolerância a atrasos é feito primeiro e o fora de ordem depois. A coluna System.Timestamp() terá o carimbo de data/hora final atribuído ao evento.
Essa configuração se aplica somente ao processar pela Hora do aplicativo, caso contrário ela é ignorada. Ele também pode ser definido na portal do Azure (na guia "Ordenação de Eventos" de um trabalho). Para obter mais informações, consulte a página de considerações sobre a ordem do evento.
Quando um evento está atrasado, seu carimbo de data/hora é ajustado para o tempo de enfileiramento atual na fonte de entrada menos a janela de tolerância de chegada tardia (ou descartada, 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, a tolerância a atrasos é a quantidade máxima de tempo que cada partição espera por novos dados.
Tolerância de chegada tardia e eventos esparsos
A política de Chegada Tardia permite que o Stream Analytics avance o tempo e gere a saída de forma mais oportuna na ausência de eventos de entrada. Isso é muito útil quando os eventos de entrada são esparsos (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 usar essa 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 avançar o tempo). Isso pode significar 16 minutos se o Hub de Eventos tiver 16 partições e cada evento for entregue a uma partição diferente. Com a política padrão de 5 segundos, o relógio é movido para frente 5 segundos após o primeiro evento, portanto, o evento de saída é gerado 5 segundos após o primeiro evento.
Consulte Também
Gerenciamento de Tempo (Azure Stream Analytics)
System.Timestamp() (Stream Analytics)
TIMESTAMP BY (Azure Stream Analytics)
Consideração da ordem de evento