Open source

Kafka Broker, Replication, ISR - kafka(3)

jogaknabi_1023 2024. 2. 22. 23:14

Broker, Replication, ISR

 

1. Broker

카프카가 설치 되어 있는 서버 단위. 보통 3개 이상의 broker로 구성하여 사용하는 것을 권장.

만약 파티션 : 1 , replication : 1 , broker : 3대 일 때, 브로커 3대 중 1대에 해당 토픽의 데이터가 저장됨.

 

2. Replication  : 파티션의 복제

replicaion: 1 → 파티션은 1개만 존재하는 것.

replicaion: 2 → 파티션은 원본 1개와 복제본 1개로 총 2개가 존재

replicaion: 3 → 파티션은 원본 1개와 복제본 2개로 총 3개가 존재

다만 브로커 개수에 따라 replication 개수가 제한된다. 브로커 개수가 3이면 replicaion은 4가 될 수 없다.

  • 사용이유: 파티션의 고가용성
    만약 replication : 1, partition : 1 인 topic이 존재한 때 브로커가 어떠한 이유로 사용 불가가 된다면 더이상 해당 파티션 복구 불가. 하지만 replication 2 라면 follower partition이 leader partition 역할을 승계하게 되면서 복구가 가능하다.

 

Replication ACK 옵션 (종류 : 0, 1, all)

프로듀서는 파티션에 토픽을 전달한다.

프로듀서에게 토픽을 전달 받는 주체가 Leader partition이다. 프로듀서는 ack라는 상세 옵션이 있다. ack를 통해 고가용성을 유지할 수 있다. 이 옵션은 파티션의 replication 과 관련이 있다.

 

1) ack = 0

프로듀서가 브로커와 소켓 연결을 맺어 보낸 즉시 성공으로 간주한다. Leader Partition에 데이터를 전송하고 응답값을 받지 않는다. 데이터가 정상적인 전송 여부와 나머지 파티션에 정상적인 복제 여부를 알 수 없고 보장할 수 없다. 속도는 빠르지만 데이터 유실 가능성이 있다.

 

 

2) ack = 1

Leader Partition에 데이터를 전송하고 Leader Partition이 정상적으로 데이터를 받았는지 응답값을 받는다. 다만 나머지 파티션에 복제되었는지는 알 수 없다. 만약 Leader Partition이 데이터를 받은 즉시 브로커가 장애가 난다면 나머지 Partitions 들에 데이터가 미처 전송되지 못한 상태가 되므로 데이터 유실 가능성이 있다.

 

 

3) ack = all

ack=1 옵션에서 나아가 follower partition에 복제가 잘 이루어졌는지 응답값을 받는다. 즉 Leader partition에 데이터를 보낸 후 나머지 follower partitions 에게도 데이터가 저장되었는지 확인하는 절차를 거치지 때문에 데이터 유실 가능성이 없다. 하지만 속도가 느리다는 단점이 있다.

 

💡 Replication(카프카의 고가용성의 중요한 역할)의 적절한 개수
replication이 늘어날수록 브로커의 리소스 사용량도 늘어남. 카프카에 들어오는 데이터 양과 저장 시간(retention date)을 잘 생각해서 replication 개수를 사용하는 것이 좋다.

권장 사항: 3개 이상의 브로커를 사용할 때 replication은 3으로 설정하는 것을 추천함.

 

3. ISR (In Sync Replica)

  • 원본 파티션 = Leader partition
  • 나머지 2개의 복제본 partition = Follower partition

'Open source' 카테고리의 다른 글

Kafka Consumer 실습 - kafka (6)  (0) 2024.03.04
Kafka Producer 실습 - kafka (5)  (0) 2024.03.02
Kafka Consumer & lag 모니터링 - kafka(4)  (0) 2024.02.28
Kafka Producer - kafka(2)  (0) 2024.02.22
Kafka 란? - kafka(1)  (0) 2024.02.22