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는 Stackdriver에서 사용할 수 있는 것보다 지연 시간이 짧은 구독에서 가장 오래 확인되지 않은 메시지 기간을 제공하는 Pub/Sub의 비공개 API에 액세스할 수 있습니다. 비교를 위해 Stackdriver에서 사용할 수 있는 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에서 추상화됩니다.