Pub/Sub로 스트리밍

이 페이지에서는 Pub/Sub와의 Dataflow 통합에 대한 개념 개요를 제공합니다. 이 개요에서는 Dataflow 실행기의 Pub/Sub I/O 커넥터 구현에서 사용할 수 있는 몇 가지 최적화를 설명합니다. Pub/Sub는 확장 가능하고 내구성 있는 이벤트 수집 및 전달 시스템입니다. Dataflow는 Pub/Sub의 확장 가능한 최소 1회 전달 모델을 메시지 중복 삭제 기능과 단 한 번에 순서대로 처리하는 기능(기간과 버퍼링을 사용하는 경우)으로 보완합니다. Dataflow를 사용하려면 Apache Beam SDK를 사용하여 파이프라인을 작성한 다음 Dataflow 서비스에서 파이프라인 코드를 실행합니다.

시작하기 전에 Apache Beam 및 스트리밍 파이프라인의 기본 개념에 대해 알아보세요. 자세한 내용은 다음 리소스를 참조하세요.

Pub/Sub로 스트리밍 파이프라인 빌드

Pub/Sub와의 Dataflow 통합의 이점을 누리려면 다음 방법 중 하나로 스트리밍 파이프라인을 빌드하세요.

Pub/Sub 및 Dataflow 통합 기능

Apache Beam은 Apache Spark 실행기, Apache Flink 실행기, 직접 실행기와 같은 비 Dataflow 실행자가 사용하는 Pub/Sub(자바Python)에 대한 참조 I/O 소스 구현(PubsubIO)을 제공합니다.

하지만 Dataflow 실행기는 PubsubIO의 다른 비공개 구현을 사용합니다. 이 구현은 Google Cloud 내부 API 및 서비스를 활용하여 짧은 지연 시간 워터마크, 높은 워터마크 정확성/데이터 완전성 및 효율적인 중복 삭제라는 세 가지 주요 이점을 제공합니다.

Dataflow 실행기의 PubsubIO 구현은 구현이 Shuffle 또는 싱크와 같은 영구 스토리지에 작성되면 자동으로 메시지를 확인합니다. 따라서 일부 구성요소가 다운되거나 연결이 끊어진 경우, Dataflow가 데이터 손실이 없음을 보장할 수 있는 경우에만 메시지가 확인됩니다.

짧은 지연 시간 워터마크

Dataflow는 Cloud Monitoring에서 사용할 수 있는 것보다 지연 시간이 짧은 구독에서 가장 오래 확인되지 않은 메시지 기간을 제공하는 Pub/Sub의 비공개 API에 액세스할 수 있습니다. 비교를 위해 Cloud Monitoring에서 사용할 수 있는 Pub/Sub 백로그 측정항목이 일반적으로 2~3분 지연되지만 Dataflow의 경우 해당 측정항목이 약 10초만 지연됩니다. 이렇게 하면 Dataflow가 파이프라인 워터마크를 진행시키고 기간이 지정된 계산 결과를 더 빠르게 내보낼 수 있습니다.

높은 워터마크 정확성

Pub/Sub와의 Dataflow 통합으로 인해 기본적으로 해결되는 또 다른 중요한 문제는 이벤트 시간에 정의된 기간에 강력한 워터마크가 필요하다는 것입니다. 이벤트 시간은 게시자 애플리케이션에서 Pub/Sub 서비스의 메시지에 설정된 publish_time 필드가 아닌 Pub/Sub 메시지의 속성으로 지정된 타임스탬프입니다. Pub/Sub는 서비스 할당(또는 처리 시간) 타임스탬프에 대해서만 백로그 통계를 계산하므로 이벤트 시간 워터마크를 예측하려면 별도의 메커니즘이 필요합니다.

이 문제를 해결하기 위해 사용자가 커스텀 이벤트 타임스탬프를 사용하도록 선택하면 Dataflow 서비스에서 두 번째 추적 구독을 만듭니다. 이 추적 구독은 기본 구독의 백로그에 있는 메시지의 이벤트 시간을 검사하고 이벤트 시간 백로그를 추정하는 데 사용됩니다. 자세한 내용은 Dataflow에서 Pub/Sub 워터마크를 계산하는 방법을 다루는 StackOverflow 페이지를 참조하세요.

효율적인 중복 삭제

메시지를 단 한 번에 처리하려면 메시지 중복 삭제 기능이 필요합니다. Dataflow는 Pub/Sub 메시지 ID를 바탕으로 메시지에 중복 삭제 기능을 적용합니다. 결과적으로 모든 처리 논리에서 Pub/Sub 메시지 ID를 바탕으로 메시지가 이미 고유하다고 가정할 수 있습니다. 이 작업을 수행하기 위한 효율적이고 증분적인 집계 메커니즘은 PubsubIO API에서 추상화됩니다.

PubsubIO가 커스텀 메시지 ID를 사용하도록 구성된 경우 Dataflow는 지난 10분 동안 확인된 모든 커스텀 ID 목록을 유지 관리하여 메시지를 중복 삭제합니다. 새 메시지의 ID가 이 목록에 있으면 메시지가 중복된 것으로 간주되어 삭제됩니다.