Programming/Kafka

[kafka][용어정리] ISR : In Sync Replica

bisi 2020. 5. 14. 12:00

카프카를 사용하기 위해선 필수적으로 알아야할 개념 중 하나가 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

 

 

 

참고 : https://kok202.tistory.com/306

'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