Menu Docs
Página inicial do Docs
/
Atlas
/

Windows do processador de fluxo

As janelas do Atlas Stream Processing são fases de pipeline de agregação que capturam subconjuntos de um fluxo de dados com limite de tempo, permitindo que você execute operações que exigem entradas finitas em dados de streaming.

Considere o exemplo de processador de fluxo descrito aqui. O estágio $match pode operar diretamente no fluxo de dados extraídos por $source, verificando cada documento em relação aos critérios de correspondência à medida que o processador de fluxo o ingere.

Por outro lado, o estágio $group e os vários cálculos estatísticos contidos nele não podem operar em dados ilimitados, pois é impossível determinar valores mínimos, máximos, médios ou medianos sem primeiro limitar o conjunto de valores a serem considerados. Muitos operadores não matemáticos, como $push e $top, também exigem dados limitados.

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.

O Atlas Stream Processing oferece suporte para janelas em cascata, janelas de salto e janelas em sessão.

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.

Janelas de salto são janelas definidas pelo intervalo de tempo que capturam e pelo intervalo entre a abertura de cada janela, chamado de salto. Como a duração é dissociada da frequência, você pode configurar o salto do Windows para sobrepor ou espaçar.

Para definir uma janela de salto com sobreposição, defina um salto menor que o intervalo.

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.

Para definir uma janela de salto com espaçamento, defina um salto maior que o intervalo.

Exemplo

Você define uma janela de salto com um intervalo de 3 segundos e um salto de 5 segundos. Quando você inicia um processador de stream:

  • Uma janela abre por 3 segundos.

  • A primeira janela captura todos os documentos nos próximos 3 segundos.

  • Após 3 segundos decorridos, a janela fecha e aplica sua lógica de agregação a todos os documentos nessa janela.

  • A próxima janela é aberta após mais 2 segundos.

  • O Atlas Stream Processing não processa nenhum documento gerado pelo stream durante esses 2 segundos.

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.

Voltar

Arquitetura

Nesta página