KPL재시도 및 속도 제한 동작을 사용자 정의하십시오. - Amazon Kinesis Data Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

KPL재시도 및 속도 제한 동작을 사용자 정의하십시오.

KPLaddUserRecord()작업을 사용하여 Kinesis Producer Library (KPL) 사용자 레코드를 추가하면 레코드에 타임스탬프가 지정되고 RecordMaxBufferedTime 구성 파라미터에 기한이 설정된 버퍼에 추가됩니다. 이 타임스탬프/기한 조합은 버퍼 우선순위를 설정합니다. 다음 기준에 따라 레코드가 버퍼에서 플러시됩니다.

  • 버퍼 우선 순위

  • 집계 구성

  • 수집 구성

버퍼 동작에 영향을 주는 집계 및 수집 구성 파라미터는 다음과 같습니다.

  • AggregationMaxCount

  • AggregationMaxSize

  • CollectionMaxCount

  • CollectionMaxSize

그런 다음 플러시된 레코드는 Kinesis 데이터 스트림 작업에 대한 호출을 사용하여 Amazon Kinesis 데이터 스트림 레코드로 Kinesis 데이터 스트림에 전송됩니다. API PutRecords PutRecords 작업은 가끔 전체 또는 부분적 오류가 나타나는 스트림에 요청을 전송합니다. 실패한 레코드는 자동으로 버퍼에 다시 추가됩니다. KPL 다음 두 가지 값 중 최소값을 기반으로 새로운 기한이 설정됩니다.

  • 현재 RecordMaxBufferedTime 구성의 절반

  • 레코드 time-to-live 값

이 전략을 사용하면 재시도된 KPL 사용자 레코드를 후속 Kinesis Data API Streams 호출에 포함시켜 Kinesis Data Streams 레코드 값을 적용하면서 처리량을 개선하고 복잡성을 줄일 수 있습니다. time-to-live 백오프 알고리즘이 없어 비교적 적극적인 재시도 전략입니다. 다음 단원에서 설명하는 속도 제한을 통해 과도한 재시도로 인한 스팸 발송을 방지합니다.

속도 제한

KPL여기에는 단일 프로듀서가 전송하는 샤드당 처리량을 제한하는 속도 제한 기능이 포함되어 있습니다. 속도 제한은 Kinesis Data Streams 레코드와 바이트 모두에 대해 별도의 버킷이 있는 토큰 버킷 알고리즘을 사용하여 구현됩니다. Kinesis 데이터 스트림에 성공적으로 쓸 때마다 특정 임곗값까지 각 버킷에 토큰이 한 개 또는 여러 개 추가됩니다. 이 임계값은 구성할 수 있지만 기본적으로 실제 샤드 제한보다 50퍼센트 높게 설정되어 단일 생산자의 샤드 포화를 허용합니다.

이 제한을 낮추어 과도한 재시도로 인한 스팸 발송을 줄일 수 있습니다. 그러나 모범 사례는 각 생산자가 최대 처리량을 적극적으로 재시도하고, 스트림의 용량을 확장하고 적절한 파티션 키 전략을 구현하여 과하다고 판단되는 결과를 조절하는 것입니다.