Las ventanas de Atlas Stream Processing son etapas del pipeline de agregación que capturan subconjuntos acotados en el tiempo de un flujo de datos, permitiéndote realizar operaciones que requieren entradas finitas sobre datos en streaming.
Considera el procesador de flujo de ejemplo descrito aquí. El La etapa $match puede operar directamente en el flujo de datos extraídos por $source, comprobando cada documento según los criterios de coincidencia a medida que el procesador de flujos lo procesa.
Por el contrario, la etapa $group y los distintos cálculos estadísticos que contiene no pueden operar sobre datos ilimitados, ya que es imposible determinar valores mínimos, máximos, promedio o medianos sin primero delimitar el conjunto de valores que se van a considerar. Muchos operadores no matemáticos como $push y $top también requieren datos limitados.
Un procesador de flujo proporciona estos límites con una ventana. Se abre una ventana y todos los documentos que el procesador de flujo ingiere se acumulan en el estado de esa ventana hasta que transcurre un intervalo de tiempo predefinido y la ventana se cierra. La ventana agrupa todos los documentos que captura durante ese intervalo y pasa este conjunto por su pipeline interno. Desde dentro de este pipeline, los documentos agrupados son indistinguibles de los datos en reposo.
Atlas Stream Processing proporciona soporte para Windows Tumbling, Windows Hopping y Windows de sesión.
Tumbling Windows
Las ventanas por lotes son ventanas definidas completamente por los intervalos de tiempo que capturan. Estos intervalos de tiempo no se superponen.
Ejemplo
Se define una ventana tumbling con un intervalo de 3 segundos. Cuando inicie su procesador de flujo:
Se abre una ventana durante 3 segundos.
La primera ventana captura todos los documentos que la transmisión genera dentro de esos 3 segundos.
Después de que transcurran 3 segundos, la ventana se cierra y aplica la lógica de agregación a todos los documentos en esa ventana.
Si configura
allowedLateness, Atlas Stream Processing guarda los mensajes que llegan tarde en la fila de letra muerta después de que se cierre la ventana.Se abre una nueva ventana tan pronto como se cierra la primera y captura documentos de la transmisión durante los siguientes 3 segundos.
Las ventanas de salto garantizan la captura integral de los flujos de datos sin el procesamiento repetido de documentos individuales.
Hopping Windows
Las ventanas abiertas deslizantes son ventanas definidas por el intervalo de tiempo que capturan y el intervalo entre la apertura de cada ventana, llamado salto. Dado que la duración está separada de la frecuencia, puedes configurar los hopping ventanas para que se superpongan o estén separados entre sí.
Para definir una ventana hopping con solapamiento, establece un hop menor que el intervalo.
Ejemplo
Definir una ventana saltante con un intervalo de 20 segundos y un salto de 5 segundos. Cuando inicie su procesador de flujo:
Se abre una ventana durante 20 segundos.
La primera ventana captura todos los documentos que la transmisión genera dentro de esos 20 segundos.
5 segundos después, se abre otra ventana y captura todos los documentos de los siguientes 20 segundos. Dado que la primera ventana sigue abierta, todos los documentos que genera el flujo durante los siguientes 15 segundos son capturados por ambas ventanas.
20 segundos después de que se abre la primera ventana, se cierra y aplica su lógica de agregación a todos los documentos en esa ventana.
5 segundos después, la segunda ventana se cierra y aplica tu lógica de agregación a todos los documentos en esa ventana, incluyendo aquellos que ya estaban sujetos a la lógica de agregación en la primera ventana.
Si configura allowedLateness, Atlas Stream Processing guarda los mensajes que llegan tarde en la fila de letra muerta después de que se cierre la ventana.
Para definir una ventana deslizante con espacio, establece un salto mayor que el intervalo.
Ejemplo
Defina una ventana deslizante con un intervalo de 3 segundos y un salto de 5 segundos. Cuando se inicia un procesador de flujo:
Se abre una ventana durante 3 segundos.
La primera ventana captura todos los documentos durante los siguientes 3 segundos.
Después de que transcurran 3 segundos, la ventana se cierra y aplica la lógica de agregación a todos los documentos en esa ventana.
La siguiente ventana se abrirá después de otros 2 segundos.
Atlas Stream Processing no procesa ningún documento que el flujo genere durante esos 2 segundos.
Session Windows
Lasventanas de sesión permiten ejecutar una canalización en cada sesión de actividad en un flujo de entrada. Dos documentos están en la misma sesión si comparten la misma partición y la diferencia entre sus marcas de tiempo es menor que la diferencia entre sesiones.
Cuando se cierra una ventana, sus resultados se liberan a la siguiente etapa.
Ejemplo
Se define una partición de $userId, un intervalo de 5 minutos y un retraso permitido de 5 segundos. Al iniciar el procesador de streaming:
Se abre una ventana cuando el primer documento llega a
$sessionWindow.Cualquier documento que alcance la etapa que contenga el mismo valor de
userId(incluida la ausencia de este campo) dentro de los cinco minutos y cinco segundos posteriores a la llegada del documento coincidente más reciente al procesador se añadirá a la misma ventana de sesión.La ventana permanece abierta hasta que no se le agreguen documentos durante el intervalo de cinco minutos más el retraso permitido de cinco segundos.