카프카를 사용하기 위해선 필수적으로 알아야할 개념 중 하나가 ISR 이다.
카프카에서 리더와 팔로워는 각자 역할이 나뉘는데 가장 중요한 것은
리더는 Read/Write를 하고, 팔로워는 주기적으로 리더의 데이터를 보며 복제만 한다는 것이다.
만약 리더가 있는 브로커가 장애가 난다면 팔로워는 새로운 리더가 될 수 있다.
이때 데이터의 정합성을 유지하기 위해 등장한 개념이 카프카의 ISR이다.
ISR은 In Sync Replica의 약어로 현재 리플리케이션이 되고 있는 리플리케이션 그룹(replication group)을 의미한다.
# 1
ISR이 가지고 있는 중요한 규칙 중 하나가 ISR에 속해 있는 구성원만이 리더의 자격을 가질 수 있는 것이다.
Replica 그룹으로 관리하며 ISR 그룹안에 구성원이 리더가 자신의 역할을 하지 못하게 되는 경우(예기치 못하게 죽는다던지..) 팔로워가 리더로 선정되며 그 역할을 대신한다.
#2
ISR그룹의 리더는 팔로워들이 주기적으로 데이터를 확인을 하고 있는지 확인한다.
만약 설정된 일정 주기 (replica.lag.time.max.ms)만큼 확인하고 요청이 오지 않는다면, 리더는 해당 팔로워의 이상을 감지한다. 그리고 해당 팔로워는 더 이상 리더의 역할을 대신할 수 없다고 판단해 ISR 그룹에서 해당 팔로워를 추방시키게 된다. ISR에서 추방당한 팔로워는 추방 과 동시에 ISR 그룹에서의 리더 자격도 박탈당하게 된다.
#3
이런 작업을 하기 위해 ISR의 리더와 팔로워간의 데이터 동기화 작업을 매우 중요하게 처리하고 있다.
ISR을 통해 파티션을 관리함으로써 리플리케이션의 신뢰성을 높이고 있다.
#4
아래는 logtopic003 Topic의 patition 3 replica 2 인 경우 ISR 구조를 확인해 보았다.
$ bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic logtopic003
Topic: logtopic003 PartitionCount: 3 ReplicationFactor: 2 Configs:
Topic: logtopic003 Partition: 0 Leader: 2 Replicas: 2,1 Isr: 2,1
Topic: logtopic003 Partition: 1 Leader: 3 Replicas: 3,2 Isr: 3,2
Topic: logtopic003 Partition: 2 Leader: 1 Replicas: 1,3 Isr: 3,1
'Programming > Kafka' 카테고리의 다른 글
[kafka] 보관 주기 설정 (0) | 2020.05.15 |
---|---|
[kafka] JVM Heap size (0) | 2020.05.13 |
[kafka] default partition replication-factor option (0) | 2020.05.12 |