Pub/Sub 주제 구독 권장사항

구독 시 구독자 클라이언트는 Pub/Sub 주제에서 메시지를 수신합니다. 다음은 Pub/Sub을 구독하기 위한 몇 가지 권장사항입니다.

이 문서에서는 사용자가 Pub/Sub 주제를 구독하고 구독자 클라이언트에서 메시지를 수신하는 프로세스에 이미 익숙하다고 가정합니다.

Pub/Sub를 처음 사용하는 경우 빠른 시작 가이드 중 하나를 참조하고 콘솔, gCloud CLI, 클라이언트 라이브러리를 사용하여 Pub/Sub를 실행하는 방법을 알아보세요.

적절한 구독 선택

Pub/Sub는 푸시 구독과 같은 표준 구독을 제공합니다. 표준 구독 외에도 Pub/Sub는 Dataflow를 중개자로 사용하지 않고도 메시지를 Google Cloud 리소스에 직접 저장할 수 있는 내보내기 구독도 제공합니다. 예를 들어 BigQuery 구독은 BigQuery 테이블에 메시지를 저장합니다.

push 구독은 다음과 같은 시나리오에서 권장됩니다.

  • 클라이언트 라이브러리를 종속 항목으로 가져오는 코드는 구독자 애플리케이션에 포함할 수 없습니다.

  • 구독자 클라이언트는 아우트바운드 요청을 할 수 없습니다.

  • 구독자 클라이언트가 구독 목록을 모르는 상황에서 동일한 인스턴스를 사용하여 서로 다른 주제 및 구독의 메시지를 처리하려고 합니다.

일반적인 경우 상위 수준 클라이언트 라이브러리를 사용하는 것이 좋습니다. 대신 단항 풀을 사용하는 경우 returnImmediatelytrue로 설정하지 마세요. true로 설정하면 가져오기 성능에 부정적인 영향을 미칩니다. returnImmediately 필드는 이제 지원 중단되었습니다.

메시지를 확인하기 전에 처리

기본적으로 Pub/Sub는 메시지가 확인된 후 구독에서 메시지를 삭제합니다. 확인을 보내기 전에 메시지를 처리하지 않고 처리에 실패하면 서비스에서 메시지를 다시 전송하지 않습니다. 단, 확인된 메시지 보관 또는 주제 보관을 구성하고 탐색 작업을 실행하는 경우에는 예외입니다.

지연 시간이 긴 구독자가 있는 경우 흐름 제어임대 관리에 맞춤 값을 설정해야 할 수 있습니다.

일시적인 트래픽 급증에 대한 구독자 흐름 제어 구성

구독자 측의 흐름 제어를 통해 트래픽 급증으로 인해 구독자가 과부하되는 것을 방지할 수 있습니다. 자동 확장 메커니즘이 증가한 부하에 응답할 시간을 허용하거나 부하 처리를 더 긴 시간에 걸쳐 분산할 수 있습니다. 전자의 경우 지연 시간이 절약되고 후자의 경우 비용이 절약됩니다.

흐름 제어를 구성하려면 maximum outstanding messagestotal outstanding message bytes에 적절한 값을 설정해야 합니다. 이러한 흐름 제어 변수의 기본값과 변수 이름은 클라이언트 라이브러리마다 다를 수 있습니다.

  • 최대 미해결 메시지 수는 Pub/Sub에서 확인이나 부정 확인을 수신하지 못한 경우 클라이언트에게 전송된 최대 메시지 수를 정의합니다.

  • 총 미해결 메시지 바이트는 Pub/Sub에서 확인이나 부정 확인을 수신하지 못한 경우 클라이언트로 전송된 메시지의 총 최대 크기를 정의합니다.

이러한 옵션 중 하나의 한도가 초과되면 구독자 클라이언트에서 더 이상 메시지를 가져오지 않습니다. 이 동작은 이미 가져온 메시지가 확인되거나 부정적으로 확인될 때까지 계속됩니다. 이렇게 하면 처리량과 더 많은 구독자를 실행하는 데 관련된 비용 사이에 균형을 맞출 수 있습니다.

구독의 순서가 지정된 메시징 권장사항

메시지 순서를 사용하는 경우 다음 사항을 확인합니다.

  • StreamingPull 또는 Pull 구독을 선택합니다. push 구독의 경우 Pub/Sub는 각 순서 키에 대해 한 번에 하나의 미해결 메시지만 지원합니다. 이러한 시나리오에서 동시 push 요청을 보내는 것은 동일한 순서 키에 대해 여러 개의 메시지 배치를 동시에 보내 구독자를 동시에 가져오는 것과 유사합니다. 따라서 push 구독은 같은 순서 키로 여러 메시지가 자주 게시되거나 지연 시간이 매우 중요한 주제에는 권장되지 않습니다.

  • 구독에서 메시지 순서를 사용 설정합니다. 게시자 측에서 순서 키를 사용하여 동일한 리전에서 메시지를 전송하는 경우 이러한 메시지를 순서대로 수신하도록 구독자를 구성할 수 있습니다. 정렬된 메시지를 수신하려는 구독에 대해서만 정렬된 메시지 수신 속성을 사용 설정합니다. 속성 상태에 따라 주제에 연결된 각 구독은 서로 영향을 주지 않고 순서 지정된 전송이 필요한지 결정할 수 있습니다.

  • 메시지를 순서대로 확인합니다. 순서가 지정된 전송을 사용하는 경우 이전 메시지에 대한 확인이 순서 키별로 처리될 때까지 이후 메시지 확인이 처리되지 않습니다. 예를 들어 순서 키가 동일한 메시지 1, 2, 3이 있는데 메시지를 모두 수신하고 메시지 3만 확인한다면 이 서비스는 메시지 2, 3이 확인될 때까지 메시지 3을 확인한 것으로 간주하지 않습니다. 메시지 1과 2의 확인이 수신되지 않으면 메시지 1, 2, 3이 모두 다시 전송됩니다.

권장사항 요약

다음 표에서는 이 문서에 설명된 권장사항을 요약해서 보여줍니다.

주제 태스크
구독 유형 선택 비즈니스 요구사항에 맞는 구독 유형을 선택합니다. 구독에서 지원하는 경우 상위 수준 클라이언트 라이브러리도 사용하세요.
확인된 메시지 재생 메시지를 확인하기 전에 처리합니다. 또는 확인된 메시지가 손실되지 않도록 탐색 작업을 구성합니다.
흐름 제어 자동 확장이 시작되거나 시간이 지나기 전까지 구독자가 과부하되지 않도록 구독자 설정에서 흐름 제어를 구성합니다.
메시지 순서 지정 순서가 지정된 메시지를 사용할 때는 StreamingPull 또는 Pull을 선택하고, 구독에서 메시지 순서를 사용 설정하고, 메시지를 순서대로 확인합니다.

다음 단계