261
12
장
경량 프레임워크 마이크로서비스
12.4.2
상태 할당
확장 시 새로운 내부 상태를 할당받은 인스턴스는 새 이벤트를 처리하기 전에 반드시 체인
지로그에 있는 데이터를 로드해야 합니다. 이 과정은 대용량 프레임워크가 영구 저장소에
서 체크포인트를 로드하는 것과 비슷합니다. 전체 이벤트 스트림 파티션의 오퍼레이터 상태
(
<
partitionId
,
offset
>
매핑 )와 각 애플리케이션의 컨슈머 그룹 내부에 저장되고 키 있는
상태 (
<
key
,
state
>
쌍)는 애플리케이션에 있는 각 상태 저장소별 체인지로그 내부에 저장됩
니다.
체인지로그에서 상태를 재로드할 때 애플리케이션 인스턴스는 새 이벤트를 처리하기 전에 먼
저 모든 내부 상태 저장 데이터의 소비/로드 우선순위를 정해야 합니다. 이는 상태 복구 단계라
서 상태가 완전히 복구되기 전에 이벤트가 처리되면 비확정적 결과가 초래될 위험이 있습니다.
애플리케이션 토폴로지 내부의 각 상태 저장소마다 완전히 상태가 복구되면 다시 입력/내부 스
트림을 안전하게 소비할 수 있습니다.
12.4.3
상태 복제와 핫 레플리카
핫 레플리카
hot
replica
는 체인지로그에서 구체화된 상태 저장소의 사본입니다(
7
.
3
절의 ‘핫 레플
리카 사용’ 참고). 핫 레플리카는 데이터를 서비스하는 메인 인스턴스가 실패할 경우를 대비한
장치지만 상태 저장 애플리케이션의 규모를 우아하게
gracefully
축소하는 쓰임새도 있습니다. 인
스턴스 종료 후 컨슈머 그룹이 리밸런스되면 파티션이 할당되고 핫 레플리카의 상태를