KPL 재시도 및 속도 제한 동작 사용자 지정 - Amazon Kinesis Data Streams

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

KPL 재시도 및 속도 제한 동작 사용자 지정

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

  • 버퍼 우선 순위

  • 집계 구성

  • 수집 구성

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

  • AggregationMaxCount

  • AggregationMaxSize

  • CollectionMaxCount

  • CollectionMaxSize

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

  • 현재 RecordMaxBufferedTime 구성의 절반

  • 레코드의 time-to-live 값

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

속도 제한

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

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