Search

[아파치 카프카] 토픽 정책과 ISR

[아파치 카프카] 토픽 정책과 ISR

ISR(In-Sync-Replicas)

리더 파티션과 팔로워 파티션 모두 동기화된 상태
replica.lag.time.max.ms: 팔로워 파티션이 데이터 복제 상태를 확인하는 주기
⇒ 데이터를 가져가지 않으면 문제가 있다고 판단하여 ISR 그룹에서 제외
ISR 그룹: 팔로워 파티션은 리더 선출 자격이 있다.
그 외: 팔로워 파티션은 리더 선출 자격이 없다.
⇒ unclean.leader.election.enable = true 설정하면 그 외 팔로워 파티션도 리더로 선출 가능하다.
unclean.leader.election.enable 옵션
일부 데이터 유실 가능성이 있으나 무중단 운영 필요한 경우 → true
데이터 유실 불가능한 경우 → false

토픽 정리 정책(cleanup.policy)

1.
delete(삭제): 데이터 완전 삭제
2.
compact(압축): 동일한 메시지 키의 가장 오래된 데이터 삭제

delete policy

일반적인 정리 정책으로 세그먼트 단위로 삭제
segment.bytes: 세그먼트 저장 용량 단위
retention.ms: 토픽 데이터 유지 기간(밀리초)
retention.bytes: 토픽 최대 데이터 크기

compact policy

동일한 메시지 키의 가장 오래된 데이터 삭제
KTable 같은 메시지 키 기반 데이터 처리 상황에서 유용
min.cleanable.dirty.ratio : 데이터 압축 시작 시점 설정
min.cleanable.dirty.ratio : 액티브 세그먼트 제외한 남은 세그먼트 데이터의 tail 영역 레코드 개수와 head 영역 레코드 개수의 비율⇒ 옵션값이 0.5일 경우, dirty ratio가 0.5를 넘으면 압축이 수행된다.
tail 영역: 압축 완료된 레코드로 중복된 메시지 키 없음 (== clean log)
head 영역: 중복된 메시지 키가 있음 (== dirty log)