Data Pipelines에서 게시된 트래픽이 급증하는 경우가 있습니다. 준비가 되어 있지 않으면 트래픽 급증으로 인해 구독자가 부담을 느낄 수 있습니다. 트래픽 급증을 방지하는 간단한 해결책은 더 많은 메시지가 처리되도록 Pub/Sub 구독자 리소스를 동적으로 늘리는 것입니다. 그러나 이 솔루션은 비용 상승을 초래하거나 즉시 작동하지 않을 수 있습니다. 예를 들어 VM 여러 개가 필요할 수 있습니다.
구독자 측의 흐름 제어를 통해 구독자가 메시지가 수집되는 속도를 규제할 수 있습니다. 따라서 흐름 제어는 비용을 증가시키지 않거나 구독자가 수직 확장될 때까지 트래픽 급증을 처리합니다.
흐름 제어는 Pub/Sub 상위 수준 클라이언트 라이브러리에서 사용 가능한 기능입니다. 하위 수준 클라이언트 라이브러리를 사용하는 경우 고유한 흐름 제어 프로그래밍을 구현할 수도 있습니다.
흐름 제어가 필요하다는 사실은 메시지의 게시 속도가 소비 속도보다 빠르다는 것을 의미합니다. 메시지 볼륨의 일시적인 증가가 아닌 지속적 상태인 경우 구독자 클라이언트 인스턴스 수를 늘려보세요.
흐름 제어 구성
흐름 제어를 사용하면 대기 중인 요청에 할당된 최대 바이트 수와 허용되는 최대 미해결 메시지 수를 구성할 수 있습니다. 이러한 한도는 클라이언트 머신의 처리량 용량에 따라 설정합니다.
흐름 제어 변수의 기본값과 변수 이름은 클라이언트 라이브러리마다 다를 수 있습니다. 예를 들어 Java 클라이언트 라이브러리에서 흐름 제어를 구성하는 변수는 다음과 같습니다.
setMaxOutstandingElementCount(). Pub/Sub에서 확인이나 부정 확인을 수신하지 못한 경우의 최대 메시지 수를 정의합니다.
setMaxOutstandingRequestBytes(). Pub/Sub에서 확인이나 부정 확인을 수신하지 못한 경우의 최대 메시지 크기를 정의합니다.
setMaxOutstandingElementCount()
또는 setMaxOutstandingRequestBytes()
의 한도가 초과되면 구독자 클라이언트에서 더 이상 메시지를 가져오지 않습니다. 이 동작은 이미 가져온 메시지가 확인되거나 부정적으로 확인될 때까지 계속됩니다.
따라서 처리량을 더 많은 구독자 실행과 관련된 비용과 일치시킬 수 있습니다.
흐름 제어용 코드 샘플
구독자 클라이언트가 메시지를 수신하는 속도를 제어하려면 구독자의 흐름 제어 기능을 사용하세요. 이러한 흐름 제어 기능은 아래 샘플에서 설명합니다.
C++
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C++ 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C++ API 참고 문서를 확인하세요.
C#
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C# API 참고 문서를 확인하세요.
Go
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Go API 참고 문서를 참조하세요.
자바
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Java API 참고 문서를 참조하세요.
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참고 문서를 참조하세요.
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참고 문서를 참조하세요.
Python
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Python API 참고 문서를 참조하세요.
Ruby
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Ruby API 참고 문서를 참조하세요.
다음 단계
구독에 구성할 수 있는 다른 전송 옵션에 대해 알아보기