Atlas Stream Processing 개요
Atlas Stream Processing을 사용하면 Atlas 데이터베이스와 동일한 쿼리 API를 사용하여 복잡한 데이터 스트림을 처리할 수 있습니다. Atlas Stream Processing을 사용하면 다음이 가능합니다.
배치 처리에 내재된 지연 없이 스트리밍 데이터를 지속적으로 운영할 수 있는 집계 파이프라인을 빌드합니다.
메시지가 올바르게 형성되었는지 확인하고, 메시지 손상을 감지하며, 늦게 도착하는 데이터를 감지하기 위해 연속적인 스키마 유효성 검사를 수행합니다.
결과를 Atlas 컬렉션 또는 Apache Kafka 에 지속적으로 게시 클러스터를 생성하여 데이터에 대한 최신 보기와 분석을 보장합니다.
Atlas Stream Processing 구성 요소는 Atlas 프로젝트에 직접 속하며 Atlas 클러스터와 독립적으로 작동합니다.
Streaming Data
스트림은 하나 이상의 소스에서 발생하는 데이터의 연속적인 흐름을 말하는 것으로, 추가 전용 로그의 형태를 취합니다. 데이터 스트림의 예로는 센서의 온도 또는 압력 판독 값, 금융 트랜잭션 기록, 변경 데이터 수집 이벤트 등이 있습니다.
데이터 스트림은 Apache Kafka 와 같은 소스 에서 시작됩니다.또는 변경 스트림 . 그런 다음 처리된 데이터를 Apache Kafka 와 같은 싱크 에 쓸 수 있습니다. 또는 Atlas 컬렉션.
데이터 스트림은 상태가 빠르게 변화하는 시스템에서 시작됩니다. Atlas Stream Processing은 미사용 데이터베이스의 시간 및 계산 제약 없이 연속 데이터를 처리할 수 있는 네이티브 스트림 처리 기능을 제공합니다.
아키텍처
Atlas Stream Processing의 핵심 추상화는 스트림 프로세서입니다. 스트림 프로세서는 지정된 소스의 스트리밍 데이터에서 지속적으로 작동하고 출력을 싱크에 쓰는 MongoDB 집계 파이프라인 쿼리입니다. 자세한 내용 은 스트림 프로세서의 구조를 참조하세요.
스트림 처리는 스트림 처리 인스턴스에서 발생합니다. 각 스트림 처리 인스턴스는 다음을 연결하는 Atlas 네임스페이스입니다.
스트림 프로세서를 실행하는 데 필요한 RAM과 CPU를 제공하는 하나 이상의 작업자입니다.
클라우드 공급자 및 클라우드 리전.
스트리밍 데이터의 사용 가능한 소스 및 싱크 목록을 저장하는 연결 레지스트리입니다.
사용자 권한 부여를 정의하는 보안 컨텍스트.
Atlas Stream Processing 인스턴스 자체에 대한 연결 string 입니다.
스트림 프로세서를 정의하면 해당 스트림 프로세서를 정의한 스트림 처리 인스턴스에서만 사용할 수 있게 됩니다. 각 작업자는 실행 중인 스트림 프로세서를 최대 4개까지 호스팅할 수 있으며, 필요에 따라 작업자를 프로비저닝하여 스트림 프로세서를 시작할 때 Atlas Stream Processing 인스턴스가 자동으로 확장됩니다. 작업자의 모든 스트림 프로세서를 중지하여 작업자의 프로비저닝을 해제할 수 있습니다. Atlas Stream Processing은 항상 새 작업자를 프로비저닝하는 것보다 기존 작업자에 스트림 프로세서를 할당하는 것을 선호합니다.
예시
이름이 proc01
~ proc08
인 8개의 스트림 프로세서를 실행하는 Atlas Stream Processing 인스턴스가 있습니다. proc01
~ proc04
는 한 작업자에서 실행되고 proc05
~ proc08
는 두 번째 작업자에서 실행됩니다. proc09
이라는 새 스트림 프로세서를 시작합니다. Atlas Stream Processing은 proc09
을(를) 호스팅할 세 번째 작업자를 프로비저닝합니다.
나중에 첫 번째 작업자에서 proc03
을 중지합니다. proc09
를 중지하고 다시 시작하면 Atlas Stream Processing은 proc09
를 첫 번째 작업자에 재할당하고 세 번째 작업자의 프로비저닝을 해제합니다.
proc09
를 중지하고 다시 시작하기 전에 proc10
이라는 새로운 스트림 프로세서를 시작하면 Atlas Stream Processing은 proc10
을 이전에 proc03
에 할당된 슬롯의 첫 번째 작업자에게 할당합니다
확장 시 Atlas Stream Processing은 현재 실행 중인 스트림 프로세서의 수만 고려하며 실행 중이 아닌 정의된 스트림 프로세서는 계산하지 않습니다. 스트림 처리 인스턴스의 계층은 작업자의 RAM 및 CPU 할당을 결정합니다.
연결 레지스트리는 하나 이상의 연결을 저장합니다. 각 연결은 스트림 프로세서가 외부 서비스와 상호 작용할 수 있도록 하는 네트워킹 및 보안 세부 정보의 조합에 이름을 할당합니다. 연결은 다음과 같은 동작을 나타냅니다.
지정된 스트림 처리 인스턴스의 연결 레지스트리에 정의된 연결만 해당 스트림 처리 인스턴스에서 호스팅되는 스트림 프로세서에 서비스를 제공할 수 있습니다.
각 연결은 임의의 수의 스트림 프로세서를 제공할 수 있습니다.
단일 연결만 지정된 스트림 프로세서의 소스 역할을 할 수 있습니다.
단일 연결만 지정된 스트림 프로세서의 싱크 역할을 할 수 있습니다.
연결은 원래 소스또는 싱크로 정의되지 않습니다. 지정된 연결은 스트림 프로세서가 해당 연결을 호출하는 방식에 따라 두 가지 기능을 모두 수행할 수 있습니다.
Atlas Stream Processing 은 멀티 테넌트 인프라의 전용 고객 컨테이너에서 Atlas Stream Processing 작업자를 실행합니다. MongoDB 보안 및 컴플라이언스에 대한 자세한 내용은 MongoDB 보안 센터를 참조하세요.
스트림 프로세서의 구조
스트림 프로세서는 집계 파이프라인의 형태를 취합니다. 각 프로세서는 소스에 연결하고 문서 형태의 지속적인 데이터 스트림을 수신하는 $source
단계로 시작합니다. 이러한 문서는 유효한 json
또는 ejson
여야 합니다. $source
이후의 각 집계 단계는 스트림의 각 기록을 차례로 사용하며 세 가지 유형으로 그룹화할 수 있습니다.
유효성 검사 :
$validate
단계는 수집된 문서에 대한 스키마 유효성 검사를 수행하여 올바르게 형식화된 문서만 추가 처리로 진행되도록 하고 잘못 형식화된 문서에 대한 조치를 결정할 수 있도록 합니다. 유효성 검사는 선택 사항입니다.상태 비저장 연산: 들어오는 데이터 스트림에 직접 작동할 수 있는 집계 단계 또는 연산자. 이러한 집계는 각 문서를 차례로 사용, 변환, 전달하며
$source
와 $emit 또는 $merge 단계 사이의 어느 시점에서든 나타날 수 있습니다.스테이트풀 연산 : 바인딩된 문서 집합에서만 작동할 수 있는 집계 단계 또는 연산자입니다. 이러한 집계는 전체 문서 세트를 한 번에 사용, 변환 및 전달하며 창 내부에서만 나타날 수 있습니다.
Windows는 스트리밍 데이터를 소비하고 시간으로 구분된 세트로 분할하여 $group
및 $avg 와 같이 무한 데이터에 적용할 수 없는 단계와 연산자를 적용할 수 있도록 하는 파이프라인 단계입니다. 각 스트림 프로세서에는 하나의 윈도우 단계만 있을 수 있습니다.
스트림 프로세서는 수집된 데이터를 처리한 후 $emit
단계를 사용하는 스트리밍 데이터 플랫폼 또는 $merge
단계의 Atlas 데이터베이스에 데이터를 씁니다. 이러한 단계는 서로 상호 배타적이며, 스트림 프로세서는 이러한 단계를 하나만 가질 수 있습니다.
체크포인트
Atlas Stream Processing은 체크포인트 문서를 사용하여 스트림 프로세서의 상태를 캡처합니다. 이러한 문서에는 고유 ID가 있으며 스트림 프로세서 로직의 흐름이 적용됩니다. 스트림 프로세서의 마지막 연산자가 체크포인트 문서에 대한 작업을 마치면 Atlas Stream Processing은 체크포인트를 커밋하여 두 가지 유형의 레코드를 생성합니다.
체크포인트 ID와 해당 ID가 속한 스트림 프로세서의 유효성을 검사하는 단일 레코드.
Atlas Stream Processing이 체크포인트를 커밋하는 순간 관련 스트림 프로세서의 각 상태 저장 작업의 상태를 설명하는 레코드 집합입니다.
중단 후 스트림 프로세서를 다시 시작하면 Atlas Stream Processing은 마지막으로 커미트된 체크포인트를 쿼리하고 명시된 상태부터 작업을 재개합니다.
데드 레터 대기열
Atlas Stream Processing은 Atlas 데이터베이스 collection을 데드 레터 큐 (DLQ)로 사용할 수 있도록 지원합니다. Atlas Stream Processing이 데이터 스트림의 문서를 처리할 수 없는 경우 처리 실패에 대한 세부 정보와 함께 문서 내용을 DLQ에 씁니다. 스트림 프로세서 정의에서 collection을 DLQ로 할당할 수 있습니다.
자세한 내용 은 스트림 프로세서 생성을 참조하세요.
Atlas Stream Processing 리전
Atlas Stream Processing 은 AWS 및 Azure 에서 스트림 처리 인스턴스 생성을 지원합니다. 사용 가능한 리전 목록은 다음의 스트림 처리 인스턴스 섹션을 참조하세요.
Microsoft Azure 기능 참조
스트림 프로세서는 호스트 스트림 처리 인스턴스와 동일한 프로젝트에 있는 한, 서로 다른 클라우드 공급자 또는 다른 리전에서 호스팅되는 클러스터를 읽고 쓸 수 있습니다.
다음 단계
핵심 Atlas Stream Processing 개념에 대한 자세한 내용은 다음을 읽어보세요.