기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
KCL은 작업자의 임대 및 CPU 사용률 지표와 같은 메타데이터를 관리합니다. KCL은 DynamoDB 테이블을 사용하여 이러한 메타데이터를 추적합니다. 각 Amazon Kinesis Data Streams 애플리케이션에 대해 KCL은 메타데이터를 관리하기 위해 리스 테이블, 작업자 지표 테이블 및 조정자 상태 테이블이라는 세 개의 DynamoDB 테이블을 생성합니다.
참고
KCL 3.x에는 작업자 지표와 코디네이터 상태 테이블이라는 두 가지 새로운 메타데이터 테이블이 도입되었습니다.
중요
DynamoDB에서 메타데이터 테이블을 생성하고 관리하려면 KCL 애플리케이션에 대한 적절한 권한을 추가해야 합니다. 자세한 내용은 KCL 소비자 애플리케이션에 필요한 IAM 권한을 참조하세요.
KCL 소비자 애플리케이션은이 세 가지 DynamoDB 메타데이터 테이블을 자동으로 제거하지 않습니다. 불필요한 비용을 방지하기 위해 소비자 애플리케이션을 폐기할 때 KCL 소비자 애플리케이션에서 생성한 이러한 DynamoDB 메타데이터 테이블을 제거해야 합니다.
임대 테이블
임대 테이블은 KCL 소비자 애플리케이션의 스케줄러가 임대하고 처리하는 샤드를 추적하는 데 사용되는 고유한 Amazon DynamoDB 테이블입니다. 각 KCL 소비자 애플리케이션은 자체 임대 테이블을 생성합니다. KCL은 기본적으로 소비자 애플리케이션의 이름을 리스 테이블의 이름으로 사용합니다. 구성을 사용하여 사용자 지정 테이블 이름을 설정할 수 있습니다. 또한 KCL은 효율적인 임대 검색을 위해 leaseOwner의 파티션 키를 사용하여 임대 테이블에 글로벌 보조 인덱스를 생성합니다. 글로벌 보조 인덱스는 기본 임대 테이블의 leaseKey 속성을 미러링합니다. 애플리케이션이 시작될 때 KCL 소비자 애플리케이션의 임대 테이블이 없는 경우 작업자 중 한 명이 애플리케이션에 대한 임대 테이블을 생성합니다.
소비자 애플리케이션이 실행되는 동안 Amazon DynamoDB 콘솔을 사용하여 리스 테이블을 볼 수 있습니다.
중요
-
각 KCL 소비자 애플리케이션 이름은 중복된 임대 테이블 이름을 방지하기 위해 고유해야 합니다.
-
Kinesis Data Streams 자체와 관련된 비용 외에도 DynamoDB 테이블 관련 비용이 계정에 청구됩니다.
리스 테이블의 각 행은 소비자 애플리케이션의 스케줄러가 처리 중인 샤드를 나타냅니다. 키 필드에는 다음이 포함됩니다.
-
leaseKey: 단일 스트림 처리의 경우 샤드 ID입니다. KCL을 사용한 멀티스트림 처리의 경우 로 구성됩니다
account-id:StreamName:streamCreationTimestamp:ShardId
. leaseKey는 리스 테이블의 파티션 키입니다. 멀티스트림 처리에 대한 자세한 내용은 섹션을 참조하세요KCL을 사용한 멀티스트림 처리 . -
checkpoint: 샤드의 가장 최근 체크포인트 시퀀스 번호입니다.
-
checkpointSubSequenceNumber: Kinesis Producer Library의 집계 기능을 사용할 때 이는 Kinesis 레코드 내의 개별 사용자 레코드를 추적하는 체크포인트에 대한 확장입니다.
-
leaseCounter: 작업자가 현재 리스를 적극적으로 처리하고 있는지 확인하는 데 사용됩니다. 리스 소유권이 다른 작업자에게 이전되면 leaseCounter가 증가합니다.
-
leaseOwner:이 임대를 보유하고 있는 현재 작업자입니다.
-
ownerSwitchesSinceCheckpoint: 마지막 체크포인트 이후이 임대로 인해 작업자가 변경된 횟수입니다.
-
parentShardId:이 샤드의 상위 ID입니다. 하위 샤드에서 처리가 시작되기 전에 상위 샤드가 완전히 처리되어 올바른 레코드 처리 순서를 유지하는지 확인합니다.
-
childShardId:이 샤드의 분할 또는 병합으로 인한 하위 샤드 IDs 목록입니다. 샤드 계보를 추적하고 리샤딩 작업 중에 처리 순서를 관리하는 데 사용됩니다.
-
startingHashKey:이 샤드에 대한 해시 키 범위의 하한입니다.
-
endingHashKey:이 샤드에 대한 해시 키 범위의 상한입니다.
KCL에서 멀티스트림 처리를 사용하는 경우 임대 테이블에 다음 두 개의 추가 필드가 표시됩니다. 자세한 내용은 KCL을 사용한 멀티스트림 처리 단원을 참조하십시오.
-
shardID: 샤드의 ID입니다.
-
streamName: 형식의 데이터 스트림 식별자입니다
account-id:StreamName:streamCreationTimestamp
.
작업자 지표 테이블
작업자 지표 테이블은 각 KCL 애플리케이션에 대한 고유한 Amazon DynamoDB 테이블이며 각 작업자의 CPU 사용률 지표를 기록하는 데 사용됩니다. 이러한 지표는 KCL에서 효율적인 임대 할당을 수행하여 작업자 간에 균형 잡힌 리소스 사용률을 얻는 데 사용됩니다. KCL은 기본적으로 작업자 지표 테이블의 이름KCLApplicationName-WorkerMetricStats
에를 사용합니다.
코디네이터 상태 테이블
조정자 상태 테이블은 각 KCL 애플리케이션에 대한 고유한 Amazon DynamoDB 테이블이며 작업자의 내부 상태 정보를 저장하는 데 사용됩니다. 예를 들어 조정자 상태 테이블은 리더 선출에 관한 데이터 또는 KCL 2.x에서 KCL 3.x로의 현재 위치 마이그레이션과 관련된 메타데이터를 저장합니다. KCL은 기본적으로 조정자 상태 테이블의 이름KCLApplicationName-CoordinatorState
에를 사용합니다.
KCL에서 생성한 메타데이터 테이블의 DynamoDB 용량 모드
기본적으로 Kinesis Client Library(KCL)는 온디맨드 용량 모드를 사용하여 리스 테이블, 작업자 지표 테이블 및 조정자 상태 테이블과 같은 DynamoDB 메타데이터 테이블을 생성합니다. 이 모드는 용량 계획 없이 트래픽을 수용하도록 읽기 및 쓰기 용량을 자동으로 조정합니다. 이러한 메타데이터 테이블을 보다 효율적으로 운영하려면 용량 모드를 온디맨드 모드로 유지하는 것이 좋습니다.
리스 테이블을 프로비저닝된 용량 모드로 전환하려면 다음 모범 사례를 따르세요.
-
사용 패턴 분석:
-
Amazon CloudWatch 지표를 사용하여 애플리케이션의 읽기 및 쓰기 패턴 및 사용량(RCU, WCU)을 모니터링합니다.
-
최대 및 평균 처리량 요구 사항을 이해합니다.
-
-
필요한 용량을 계산합니다.
-
분석을 기반으로 읽기 용량 단위(RCUs) 및 쓰기 용량 단위(WCUs 추정합니다.
-
샤드 수, 체크포인트 빈도 및 작업자 수와 같은 요소를 고려합니다.
-
-
Auto Scaling 구현:
-
DynamoDB Auto Scaling을 사용하여 프로비저닝된 용량을 자동으로 조정하고 적절한 최소 및 최대 용량 제한을 설정합니다.
-
DynamoDB Auto Scaling은 KCL 메타데이터 테이블이 용량 제한에 도달하여 병목 현상을 일으키지 않도록 하는 데 도움이 됩니다.
-
-
정기적인 모니터링 및 최적화:
-
에 대한 CloudWatch 지표를 지속적으로 모니터링합니다
ThrottledRequests
. -
시간이 지남에 따라 워크로드가 변경되면 용량을 조정합니다.
-
KCL 소비자 애플리케이션에 대한 ProvisionedThroughputExceededException
메타데이터 DynamoDB 테이블에이 있는 경우 DynamoDB 테이블의 프로비저닝된 처리량 용량을 늘려야 합니다. 소비자 애플리케이션을 처음 생성할 때 특정 수준의 읽기 용량 단위(RCU) 및 쓰기 용량 단위(WCU)를 설정하는 경우 사용량이 증가함에 따라 충분하지 않을 수 있습니다. 예를 들어 KCL 소비자 애플리케이션이 자주 체크포인트를 수행하거나 샤드가 많은 스트림에서 작동하는 경우 더 많은 용량 단위가 필요할 수 있습니다. DynamoDB의 프로비저닝된 처리량에 대한 자세한 내용은 Amazon DynamoDB 개발자 안내서의 DynamoDB 처리량 용량 및 테이블 업데이트를 참조하세요. DynamoDB
KCL이 작업자에게 임대를 할당하고 로드의 균형을 조정하는 방법
KCL은 작업자를 실행하는 컴퓨팅 호스트에서 CPU 사용률 지표를 지속적으로 수집 및 모니터링하여 워크로드 분산을 고르게 합니다. 이러한 CPU 사용률 지표는 DynamoDB의 작업자 지표 테이블에 저장됩니다. KCL은 일부 작업자가 다른 작업자에 비해 CPU 사용률이 더 높음을 감지하면 작업자 간에 임대를 재할당하여 고가용 작업자의 부하를 줄입니다. 목표는 소비자 애플리케이션 플릿에서 워크로드의 균형을 보다 균등하게 조정하여 단일 작업자가 오버로드되는 것을 방지하는 것입니다. KCL은 소비자 애플리케이션 플릿 전체에 CPU 사용률을 분산하므로 적절한 수의 작업자를 선택하여 소비자 애플리케이션 플릿 용량을 적절하게 조정하거나 Auto Scaling을 사용하여 컴퓨팅 용량을 효율적으로 관리하여 비용을 절감할 수 있습니다.
중요
KCL은 특정 사전 조건이 충족되는 경우에만 작업자로부터 CPU 사용률 지표를 수집할 수 있습니다. 자세한 내용은 사전 조건을 참조하세요. KCL이 작업자로부터 CPU 사용률 지표를 수집할 수 없는 경우 KCL은 작업자당 처리량을 사용하여 리스를 할당하고 플릿의 작업자 간에 부하의 균형을 조정합니다. KCL은 지정된 시간에 각 작업자가 받는 처리량을 모니터링하고 리스를 재할당하여 각 작업자가 할당된 리스에서 비슷한 총 처리량 수준을 얻을 수 있도록 합니다.