Kafka

아파치 카프카 | Broker, Replication, ISR

highgrace 2022. 3. 8. 23:41
Kafka broker

카프카가 설치되어 있는 서버 단위

보통 3개 이상의 브로커 권장

또 여러개의 브로커가 모여있는 것을 카프카 클러스터라고 부른다.

 

replication : 복제

클러스터에서 서버에 장애가 생겼을 때 카프카의 가용성을 보장하는 방법

말 그대로 데이터를 복제해서 저장해두는 것인데,

replication은 broker의 갯수로 한정된다.

broker가 3개(서버 3대)라면, replication은 최대 3(원본 leader partition 1 + 복제본 follower partition 2)까지 가능하다는 것이다.

 

Kafka의 Producer가 kafka 클러스터에 메시지를 보내면 leader partition이 받는다.

또한 메세지를 보낼 때 ack값을 보내는데 0,1,all이라는 세개의 옵션이 있다.

ack = 0 ) producer가 leader partition에 메시지를 전송하고 응답값을 받지 않는다.

                속도는 빠르지만 제대로 데이터가 갔는지 보장할 수 없다. 유실가능성이 있다.

ack = 1 ) producer가 leader partition에게 메시지를 전송하고 leader partition이 데이터를 정상적으로 받았는지 응답받는다.

                다만 복제까지 되었는지는 알 수 없다. leader partition이 위치한 브로커에 장애가 발생하면 데이터가 유실될 수 있다.

ack = all ) producer가 follower partition까지 복제가 완료되었는지 응답받는다.

                속도 현저히 느리지만 데이터 유실 가능성은 거의 없다.

 

속도/디스크 용량과 데이터 유실 가능성이라는 트레이드 오프가 존재한다.

따라서 데이터의 용량과 저장시간을 고려해서 replication을 적절히 지정해주어야한다.

 

다만 3개 이상의 브로커를 사용할 때 replication은 3 이상을 유지하는 것이 추천된다.

 

ISR

같은 데이터를 품고있는 leader partition과 follower partition들을 합쳐서 ISR(In Sync Replica)라고 부른다.

 

 

 

 

 

 

'Kafka' 카테고리의 다른 글

아파치 카프카 | 파티셔너, 컨슈머 랙  (0) 2022.03.09