IT 삽질기

Kafka ISR(In-Sync-Replicas) 본문

BigData/Kafka

Kafka ISR(In-Sync-Replicas)

화이팅빌런 2021. 5. 29. 11:58

ISR(In-Sync-Replicas)이란?

ISR은 kafka 리더 파티션과 팔로워 파티션이 모두 싱크가 된 상태를 말하는데, 리더 파티션과 팔로워 파티션에 대해 간단하게 알아보도록 하자.

 

리더 파티션과 팔로워 파티션

Kafka에서는 복제 계수라는 것이 존재하는데, 이는 Hadoop에서 사용하는 복제 계수와 비슷한 개념으로 데이터의 유실을 방지 하기 위해 사용되는 개념이다.

복제 계수가 2인 kafka topic은 리더 파티션 1개와 팔로워 파티션이 1개 생성이 되며, 데이터를 전달받았을 때 각각 아래의 역할을 수행한다.

리더 파티션

리더 파티션은 producer로부터 데이터를 전달받아 저장하는 작업을 진행

팔로워 파티션

복제 계수를 맞추기 위해 리더 파티션으로부터 데이터를 전달받아 동기화

 

그림을 통해 리더파티션, 팔로워 파티션, ISR 상태에 대해서 알아보자.

먼저 아래의 그림은 producer에서 kafka로 데이터를 보내고 리더 파티션이 데이터를 팔로워 파티션으로 복제하는 그림을 나타낸 것이다. 리더 파티션에는 4번째 데이터까지 존재하고, 팔로워 파티션에는 3번까지의 데이터가 존재하는 그림으로 복제 하는 과정에서 딜레이가 발생할 수 있으며, 항상 같은 데이터를 가지고 있는 것이 아니다.

다음으로 ISR 상태에 대해서 알아보자

위의 그림과 다르게 리더 파티션의 데이터와 팔로워 파티션에 있는 데이터가 모두 동일한 것을 알 수 있는데 이를 ISR 상태라고 한다.

 

ISR 관련 설정

그렇다면 ISR을 이용해 뭘 할 수 있을까?

리더 파티션에 문제가 생기는 경우 새로운 리더를 선출해야하는데 ISR상태의 파티션이 리더가 될 것인지, 아닌 파티션도 리더 파티션이 될 수 있는지에 대한 옵션을 설정할 수 있다. kafka document의 내용을 살펴보자.

unclean.leader.election.enable 옵션을 false로 설정하는 경우 ISR이 아닌 팔로워 파티션은 리더가 되지 않으며, ISR이 전혀 이루어지지 않은 경우에는 리더 파티션이 포함된 브로커가 다시 정상 동작을 할 때까지 기다리게 되며, 서비스에는 영향이 생길 수 있으나, 데이터의 유실은 발생하지 않을 것이다.

 

반대로 true로 설정하는 경우 ISR이 아닌 팔로워 파티션도 리더가 될 수 있는데, 이 경우 데이터는 일부 유실될 수 있지만 서비스에는 영향을 미치지 않게 된다.

데이터 유실과 서비스 영향도를 잘 고려하여 해당 옵션을 설정하고 사용해야 할 것이다.

'BigData > Kafka' 카테고리의 다른 글

Kafka Acks  (0) 2021.06.08
Kafka-manager을 이용한 Partition reassign  (0) 2021.06.05
Kafka scale out  (0) 2021.06.01
Kafka 보관 주기 설정하기  (0) 2021.05.28
Docker을 이용한 Kafka 시작하기  (0) 2021.05.02
Comments