View a markdown version of this page

KCL용 단일 테이블 형식 - Amazon Kinesis Data Streams

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

KCL용 단일 테이블 형식

KCL 3.5부터는 단일 테이블 형식을 사용하여 모든 DynamoDB 메타데이터를 단일 임대 테이블로 통합할 수 있습니다. 기본적으로 KCL 3.x는 각 애플리케이션에 대해 리스 테이블, 작업자 지표 테이블 및 조정자 상태 테이블이라는 세 개의 DynamoDB 테이블을 생성합니다. 단일 테이블 형식은이 세 테이블을 하나로 줄여 DynamoDB 계정 수준 테이블 제한을 방지하는 데 도움이 됩니다.

단일 테이블 형식의 작동 방식

단일 테이블 형식으로 KCL은 작업자 지표 및 조정자 상태 항목을 임대 항목과 함께 임대 테이블에 저장합니다. 각 항목에는 서로 다른 레코드 유형을 구분하는 entityType 속성이 포함되어 있습니다.

작업자 지표 및 조정자 상태 항목은 리스 테이블과 동일한 기본 키 구조를 사용하지만 고유한 entityType 값을 포함합니다. 이 속성을 사용하면 KCL이 테이블 스캔 중에 각 항목의 목적을 식별할 수 있습니다.

KCL의 각 구성 요소는 entityType 속성을 기반으로 비즈니스 로직에 필요한 항목을 필터링합니다. 예를 들어, 리스 할당 관리자(LAM)는 리스 및 작업자 지표 항목을 필터링하여 리스 할당을 수행합니다.

단일 테이블 형식 구성

단일 테이블 형식을 활성화하는 방법은 현재 KCL 버전에 따라 다릅니다.

  • KCL 2.x를 사용하는 경우: 업데이트된 마이그레이션 가이드에 따라 KCL 3.5로 업그레이드합니다. 단일 테이블 형식은 기본적으로 2.x에서 3.5로 새 마이그레이션에 사용됩니다.

  • KCL 3.0~3.4를 사용하는 경우: 단일 테이블 형식으로 마이그레이션하려면 2단계 배포를 수행해야 합니다. 다음 구성 및 마이그레이션 단계를 참조하세요.

기존 KCL 3.x 고객의 경우에서 migrateAllEntitiesToLeaseTable 구성 옵션을 설정합니다CoordinatorConfig. 이 옵션은 KCL이 모든 메타데이터 엔터티 유형을 리스 테이블에 저장할지 여부를 제어합니다.

의 구성 값 migrateAllEntitiesToLeaseTable
기본값 Effect
false

KCL은 작업자 지표 및 조정자 상태에 대해 별도의 테이블을 사용합니다. 애플리케이션 코드는 단일 테이블 형식을 지원하지만 활성화하지는 않습니다.

true 아니요

KCL은 작업자 지표 및 조정자 상태 데이터를 임대 테이블에 쓰기 시작합니다. 에 TableMigrationStatus 도달DEPLOYED하고 회귀 없이 베이크한 후 2단계 배포에서이 값을 설정합니다.

KCL 3.x에서 단일 테이블 형식으로 마이그레이션하려면 2단계 배포가 필요합니다.

  1. 1단계:false (기본값)로 migrateAllEntitiesToLeaseTable 설정된 업데이트된 KCL 3.5 코드를 배포합니다. 그러면 단일 테이블 형식을 지원하지만 마이그레이션을 활성화하지 않는 새 코드가 설치됩니다.

  2. 2단계: 모든 작업자가 새 코드를 실행하고에 TableMigrationStatus 도달DEPLOYED하고 회귀가 없는지 확인한 후를 로 migrateAllEntitiesToLeaseTable 설정한 상태로 다시 배포true하여 마이그레이션을 시작합니다.

마이그레이션 상태

는 다중 테이블 형식에서 단일 테이블 형식으로의 전환을 TableMigrationStateMachine 관리합니다. KCL은 조정자 상태 테이블에서 라는 별도의 조정자 상태 항목TableMigration3.5에서 현재 마이그레이션 상태를 추적합니다. 상태, 전환 및 설명의 전체 목록은 KCL 단일 테이블 마이그레이션 상태를 참조하세요.

단일 테이블 형식 마이그레이션 상태
State 설명 전환 조건
INIT

초기 상태입니다. 모든 작업자가 작업자 지표 통계에서 최소 지원 코드를 내보내고 있습니다. 작업자는 계속해서 작업자 지표를 레거시 테이블로 내보내고 레거시 테이블과 임대 테이블 모두에서 작업자 지표와 조정자 상태를 읽습니다. 기능적으로 INIT와 DEPLOYED 간에는 차이가 없습니다.

모든 작업자는 베이크 시간 동안 최소 지원 코드를 안정적으로 내보냅니다. 애플리케이션이 2단계 배포로 이동할 준비가 되었습니다.

DEPLOYED

모든 작업자가 새 코드와 함께 배포되었습니다(1단계 완료). 애플리케이션은 단일 테이블 형식을 지원하지만 활성화하지 않았습니다.

2단계 배포는 로 migrateAllEntitiesToLeaseTable 설정된 로 시작됩니다true.

PENDING

모든 작업자가 새 코드를 실행합니다. KCL은 작업자 지표 및 조정자 상태 테이블의 데이터를 리스 테이블로 마이그레이션합니다.

마이그레이션이 완료된 후 24시간의 기본 베이크 시간이 경과합니다.

COMPLETE

마이그레이션이 완료되었습니다. KCL은 모든 읽기 및 쓰기에만 리스 테이블을 사용합니다. 이전 작업자 지표 및 조정자 상태 테이블은 더 이상 사용되지 않습니다.

터미널 상태. 더 이상 전환이 발생하지 않습니다.

각 상태, 전환 조건 및 전체 상태 시스템 동작에 대한 자세한 내용은 KCL 단일 테이블 마이그레이션 상태 시스템을 참조하세요.

참고

PENDING 상태와 COMPLETE 상태 사이의 기본 베이크 시간은 24시간이지만 최대 1주까지 구성할 수 있습니다. 이 기간 동안 KCL은 모든 읽기 및 쓰기에 임대 테이블을 사용하지만 이전 테이블은 삭제하지 않습니다. 마이그레이션이 성공했는지 확인한 후 이전 작업자 지표 및 조정자 상태 테이블을 수동으로 삭제해야 합니다. KCL은 이러한 테이블을 자동으로 삭제하지 않습니다.

롤백 고려 사항

롤백 지원은 현재에 따라 달라집니다TableMigrationStatus.

  • 1단계(DEPLOYED이거나 아직 설정되지 않음): 이전 버전으로 안전하게 롤백할 수 있습니다.TableMigrationStatus 새 코드는 이전 버전과 호환되는 모드에서 실행되며 리스 테이블의 비임대 항목에 데이터가 기록되지 않았습니다.

  • 2단계( DEPLOYED 또는 PENDING): 1단계로 롤백할 수 있습니다.TableMigrationStatus 작업자는 작업자 지표 및 조정자 상태에 레거시 테이블(다중 테이블 형식)을 사용하여 로 돌아갑니다. 마이그레이션이 실행 취소되었습니다.

  • COMPLETE 상태 이후: 롤백은 지원되지 않습니다. KCL은 모든 엔터티에 대해서만 리스 테이블을 사용합니다. 코드가 1단계로 롤백되더라도 작업자는 모든 개체에 대해 임대 테이블을 계속 사용하며 구성은 무시됩니다.

주의

마이그레이션이 COMPLETE 상태에 도달하면 애플리케이션은 단일 테이블 모드에서만 작동합니다. migrateAllEntitiesToLeaseTable 구성은 무시되고 KCL은 별도의 테이블 사용으로 돌아가지 않습니다. COMPLETE로 이동하기 전에 베이크 시간이 충분한지 확인합니다. 그 이후에는 코드 롤백도 여러 테이블로 다시 전환되지 않기 때문입니다.

모범 사례

단일 테이블 형식을 채택할 때는 다음 모범 사례를 따르세요.

  • 1단계 배포 후 조정자 상태 항목이 DEPLOYED 상태에 TableMigration3.5 도달하는지 확인합니다. 2단계로 진행하기 전에 회귀가 없는지 확인합니다.

  • TableMigration3.5 조정자 상태 항목의 TableMigrationStatus를 모니터링하여 DEPLOYED, PENDING 및 COMPLETE 상태의 진행 상황을 추적합니다. 상태는 마이그레이션이 COMPLETE에 도달할 때까지 조정자 상태 테이블에 별도의 항목(리스 테이블에는 없음)으로 저장됩니다.

  • COMPLETE로 이동하기 전에 베이크 시간이 충분한지 확인합니다. 그 이후에는 코드 롤백도 여러 테이블로 다시 전환되지 않기 때문입니다. 애플리케이션은 단일 테이블 모드에서만 작동합니다.

  • 마이그레이션이 COMPLETE에 도달하면 이전 작업자 지표 및 조정자 상태 테이블을 수동으로 삭제합니다. KCL은 이러한 테이블을 자동으로 삭제하지 않고 사용만 중지합니다.

  • CoordinatorConfig.coordinatorStateTableConfig 또는를 구성한 경우 마이그레이션이 완료된 후 이러한 구성을 제거할 LeaseManagementConfig.workerUtilizationAwareAssignmentConfig.workerMetricsTableConfig수 있습니다. 이러한 구성은 KCL 3.5 이상에서는 더 이상 사용되지 않습니다.