As janelas do Atlas Stream Processing são estágios de pipeline de agregação que registram subconjuntos limitados por tempo de um fluxo de dados, permitindo que você execute operações que exigem entradas finitas em dados de streaming.
Consider the example stream processor described here. The $match stage can operate directly on the stream of data pulled in by $source, checking each document against the match criteria as the stream processor ingests it.
By contrast, the $group stage and the various statistical computations contained within it cannot operate on unbounded data, as it is impossible to determine minimum, maximum, average, or median values without first bounding the set of values to consider. Many non-mathematical operators such as $push and $top also require bounded data.
Um processador de stream fornece uma janela a esses limites. Uma janela se abre, e todos os documentos que o processador de fluxo ingere se acumulam no estado dessa janela até que um intervalo de tempo predefinido termine e a janela se feche. A janela agrupa todos os documentos que captura durante esse intervalo e passa esse conjunto por seu pipeline interno. De dentro desse pipeline, os documentos em lote são indistinguÃveis dos dados em repouso.
Atlas Stream Processing provides support for Tumbling Windows, Hopping Windows, and Session Windows.
Windows girando
As Windows em queda são Windows definidas inteiramente pelos intervalos de tempo que capturam. Esses intervalos de tempo não se sobrepõem.
Exemplo
Você define uma janela em cascata com um intervalo de 3 segundos. Quando você inicia o processador de stream:
Uma janela abre por 3 segundos.
A primeira janela captura todos os documentos que o fluxo gera dentro desses 3 segundos.
Após 3 segundos decorridos, a janela fecha e aplica sua lógica de agregação a todos os documentos nessa janela.
Se você configurar
allowedLateness, o Atlas Stream Processing gravará mensagens que chegam tarde na dead letter queue (DLQ) depois que a janela é fechada.Uma nova janela abre assim que a primeira é fechada e captura documentos do fluxo pelos próximos 3 segundos.
As Windows em cascata garantem a captura abrangente de fluxos de dados sem o processamento repetido de documento individuais.
Windows no salto
Janelas de salto são janelas definidas pelo intervalo de tempo que capturam e o intervalo entre a abertura de cada janela, chamado de salto. O salto deve ser menor ou igual ao intervalo. Quando o salto é menor que o intervalo, as janelas se sobrepõem.
Exemplo
Você define uma janela de salto com um intervalo de 20 segundos e um salto de 5 segundos. Quando você inicia o processador de stream:
Uma janela abre por 20 segundos.
A primeira janela captura todos os documentos que o fluxo gera dentro desses 20 segundos.
5 segundos depois, outra janela abre e captura todos os documentos nos próximos 20 segundos. Como a primeira Windows ainda está aberta, todos os documento gerados pelo fluxo nos próximos 15 segundos são capturados por ambas as Windows.
20 segundos após a abertura da primeira janela, ela fecha e aplica sua lógica de agregação a todos os documentos nessa janela.
5 segundos depois, a segunda janela fecha e aplica sua lógica de agregação a todos os documentos nessa janela, incluindo aqueles que já estavam sujeitos à lógica de agregação na primeira janela.
Se você configurar allowedLateness, o Atlas Stream Processing gravará mensagens que chegam tarde na dead letter queue (DLQ) depois que a janela é fechada.
Janelas de sessão
As janelas de sessão são janelas que permitem executar um pipeline em cada "sessão" de atividade em um fluxo de entrada. Dois documentos estão na mesma sessão se tiverem a mesma partição e a diferença entre seus carimbos de data/hora for menor que o intervalo da sessão.
Quando uma janela é fechada, seus resultados são liberados para o próximo estágio.
Exemplo
Você define uma partição de $userId, uma lacuna de 5 minutos e uma tolerância de atraso de 5 segundos. Quando você inicia seu processador de fluxo:
Uma janela abre quando o primeiro documento atinge o
$sessionWindow.Todos os documentos que chegam ao estágio que contêm o mesmo valor de
userId(incluindo uma ausência deste campo) dentro de cinco minutos e cinco segundos do documento correspondente mais recente que chega ao processador são adicionados à mesma janela de sessão.A janela permanece aberta até que nenhum documento seja adicionado a ela por um intervalo de cinco minutos mais a tolerância de atraso de cinco segundos.