Docs Menu
Docs Home
/ /

스트림 프로세서 Windows

Atlas Stream Processing 창은 데이터 스트림의 시간 제한이 있는 하위 집합을 캡처하는 집계 파이프라인 스테이지로, 이를 통해 스트리밍 데이터에 한정된 입력이 필요한 작업을 수행할 수 있습니다.

예시 스트림 프로세서는 여기를 참고하세요. $match 단계는 $source로 가져온 데이터 스트림에서 직접 동작하며 스트림 프로세서가 데이터를 수집할 때 각 문서를 매칭 기준으로 검사합니다.

반면 $group 단계와 해당 단계에 포함된 다양한 통계 계산은 바인딩되지 않은 데이터를 대상으로 실행할 수 없습니다. 고려할 값 집합을 먼저 바인딩하지 않으면 최솟값, 최댓값, 평균값 또는 중앙값을 결정할 수 없기 때문입니다. $push 또는 $top 등의 다양한 비수학적 연산자에도 바인딩된 데이터가 필요합니다.

스트림 프로세서는 이러한 바운드에 창을 제공합니다. 창이 열리면 스트림 프로세서가 수집하는 모든 문서는 미리 정의된 시간 간격이 경과하고 창이 닫힐 때까지 해당 창 상태에 누적됩니다. 창은 해당 시간 동안 캡처한 모든 문서를 일괄 처리하고 이 세트를 내부 파이프라인을 통해 전달합니다. 이 파이프라인 내에서 일괄 처리된 문서는 미사용 데이터와 구분할 수 없습니다.

Atlas Stream Processing은 Tumbling Windows, Hopping WindowsSession Windows를 지원합니다.

텀블링 Windows 은 캡처하는 시간 간격으로 완전히 정의되는 Windows 입니다. 이러한 시간 간격은 겹치지 않습니다.

예시

3초 간격으로 회전 기간을 정의합니다. 스트림 프로세서를 시작하는 경우:

  • 창이 3초 동안 열립니다.

  • 첫 번째 창은 스트림이 3초 이내에 생성하는 모든 문서를 캡처합니다.

  • 3초가 지나면 창이 닫히고 해당 창의 모든 문서에 애그리게이션 로직이 적용됩니다.

    allowedLateness을(를) 구성하는 경우 Atlas Stream Processing 창 닫힌 후 늦게 도착하는 메시지를 데드 레터 대기열 에 씁니다.

  • 첫 번째 창이 닫히면 새 창이 열리고 다음 3초 동안 스트림에서 문서를 캡처합니다.

텀블링 Windows는 개별 문서를 반복적으로 처리하지 않고도 데이터 스트림을 포괄적으로 캡처할 수 있도록 보장합니다.

호핑 Windows 캡처하는 시간 간격과 각 창 여는 간격(홉)으로 정의되는 Windows 입니다. 지속 시간은 빈도와 분리되어 있으므로 호핑 Windows 겹치거나 간격을 두도록 구성할 수 있습니다.

겹치는 호핑 기간을 정의하려면 간격보다 작은 홉을 설정합니다.

예시

20초 간격과 5초의 홉으로 호핑 기간을 정의합니다. 스트림 프로세서를 시작하는 경우:

  • 창이 20초 동안 열립니다.

  • 첫 번째 창은 스트림이 20초 이내에 생성하는 모든 문서를 캡처합니다.

  • 5초 후 다른 창이 열리고 다음 20초 이내에 모든 문서를 캡처합니다. 첫 번째 Windows가 여전히 열려 있으므로 스트림이 다음 15초 동안 생성하는 모든 문서가 두 Windows에서 모두 캡처됩니다.

  • 첫 번째 창 열리고 20 초 후에 창이 닫히고 해당 창 모든 문서에 집계 로직이 적용됩니다.

  • 5초 후 두 번째 창이 닫히고 첫 번째 창에서 이미 애그리게이션 로직이 적용된 문서를 포함하여 해당 창의 모든 문서에 애그리게이션 로직을 적용합니다.

allowedLateness을(를) 구성하는 경우 Atlas Stream Processing 창 닫힌 후 늦게 도착하는 메시지를 데드 레터 대기열 에 씁니다.

간격이 있는 홉핑 기간을 정의하려면 간격보다 큰 홉을 설정합니다.

예시

3초 간격과 5초의 홉으로 호핑 기간을 정의합니다. 스트림 프로세서를 시작하는 경우:

  • 창이 3초 동안 열립니다.

  • 첫 번째 창은 향후 3초 동안 모든 문서를 캡처합니다.

  • 3초가 지나면 창이 닫히고 해당 창의 모든 문서에 애그리게이션 로직이 적용됩니다.

  • 2초가 더 경과한 후 다음 창이 열립니다.

  • Atlas Stream Processing은 스트림이 이 2초 동안 생성한 문서를 처리하지 않습니다.

세션 창은 입력 스트림에서 각 활동의 '세션'에 대해 파이프라인을 실행할 수 있는 기간입니다. 두 문서가 동일한 파티션을 가지고 있고 타임스탬프 차이가 세션 간격보다 작으면 두 문서는 동일한 세션에 속합니다.

창이 닫히면 그 결과가 다음 단계로 전달됩니다.

예시

$userId의 파티션, 5분의 간격 및 5초의 허용 지연을 정의합니다. 스트림 프로세서를 시작하면 다음이 실행됩니다.

  • 첫 번째 문서가 $sessionWindow에 도달하면 창이 열립니다.

  • 일치하는 가장 최근 문서 프로세서에 도착한 후 5분 5초 이내에 동일한 userId 값(이 필드 없는 경우 포함)을 포함하는 단계에 도달하는 모든 문서가 동일한 세션 창 에 추가됩니다.

  • 이 창은 5분 간격에 허용되는 5초의 지연 시간을 더한 시간 동안 문서가 추가되지 않을 때까지 열린 상태를 유지합니다.

돌아가기

아키텍처

이 페이지의 내용