Kafka ISR (In-Sync Replicas)

헨도·2025년 4월 26일
0

Kafka

목록 보기
10/10
post-thumbnail

카프카에서 리더와 팔로워는 각자 역할이 나뉘는데 가장 중요한 것은 리더는 Write/Read 를 하고, 팔로워는 주기적으로 리더의 데이터를 보며 복제를 한다.

만약 리더가 있는 브로커가 장애가 난다면 팔로워는 새로운 리더가 될 수 있다.
이 때 데이터 정합성을 유지하기 위해 등장한 개념이 바로 ISR 이다.

Kafka 에서는 하나의 파티션은 여러 개의 복제본을 가지고 있다.
이 중, 리더와 동일한 데이터를 가진 복제본들을 ISR 이라고 한다.

ISR 이란?

  • 리더 파티션과 완전히 동기화된 팔로워들
  • 리더와 동일한 오프셋까지 데이터를 저장하고 있는 복제본들
  • 이 집합에 들어간 브로커만 안정적인 복제본으로 인정된다.

동적인 ISR

  • 팔로워가 너무 느려지면 ISR 에서 빠짐
  • 복구되면 다시 ISR 복귀

ISR 이 중요한 이유

  • Kafka 는 리더만 죽어도 파티션 리더를 교체할 수 있어야한다.
  • 근데 아무나 리더가 되면 안되기 때문에 "최신 데이터를 가진 복제본만 리더가 될 수 있다."
  • 그래서 Kafka 는 ISR 만 믿고 리더를 교체한다.

Kafka 메시지 복제 흐름

  1. Producer 가 리더에게 메시지 보냄
  2. 리더 파티션이 먼저 저장
  3. ISR 안에 있는 팔로워가 리더로부터 메시지를 복제
  4. acks = all 이면 ISR 안 모든 팔로워가 ack 해야 성공

쉽게 요약

  • ISR 은 "리더와 나 동기화 잘 되고 있어요" 하는 애들만 들어있는 믿을 수 있는 복제본 명단이다.
  • Kafka 는 이 명단을 보고 "리더가 죽으면 누굴 리더로 세울지" 정한다.
profile
Junior Backend Developer

0개의 댓글