아키텍처+MSA

[아키텍처/Kafka] 메세지 복제(Replication)와 브로커의 Leader-Follower 구조

깃짱 2025. 9. 17. 14:00
반응형
반응형

🌏 메세지 복제(Replication)와 브로커의 Leader-Follower 구조

✅ Replication (복제)

Kafka는 데이터를 여러 Broker에 복제(Replication) 해서 저장합니다.

데이터를 다중화하기 때문에 Broker 하나가 장애가 나도 다른 Broker에 복제된 데이터를 사용할 수 있습니다. 이 복제 개수는 Replication Factor로 설정합니다.

예를 들어 Replication Factor = 3이라면 하나의 Partition 데이터가 총 3개의 Broker에 저장됩니다

✅ Leader-Follower 구조

Kafka의 Partition은 LeaderFollower라는 두 가지 역할로 나뉘어 관리됩니다.

  • Leader
    • 읽기/쓰기는 Leader가 담당합니다.
      • Producer가 데이터를 쓸 때 반드시 Leader Partition에 기록합니다.
      • Consumer가 데이터를 읽을 때도 Leader Partition에서 읽습니다.
    • 카프카 서비스는 리더가 죽지 않으면 리더에서만 모두 일어납니다
  • Follower
    • 리더가 죽었을 때를 위한 대비용 복제본입니다
    • Leader에 기록된 데이터를 그대로 복제만 하고 평상시에는 직접 읽기/쓰기를 처리하지 않습니다.
    • Leader가 죽으면 Follower 중 하나가 새로운 Leader로 선출되어 서비스가 중단되지 않도록 합니다.

✅ 동작 예시

Replication Factor가 3이고, order-topic의 Partition 0이 있다고 가정해봅시다.

  • Broker1: Leader Partition 0
  • Broker2: Follower Partition 0
  • Broker3: Follower Partition 0
  1. Producer 메세지 전송: Producer가 메시지를 전송합니다
  2. Leader 기록: Broker1(Leader)에 먼저 저장됩니다. (디스크 기록)
  3. Followers 동기화: Broker2, Broker3은 Broker1의 데이터를 그대로 따라 적습니다.
  4. 만약 Broker1이 장애로 다운되면 Kafka는 Broker2나 Broker3 중 하나를 새 Leader로 선출합니다.
  5. 서비스는 중단되지 않고 그대로 이어집니다.

앞선 포스팅에서 설명했던 acks를 더 명확하게 이해해 보자면,
acks=0: step 1 직후 OK 반환
acks=1: step 2 직후 OK 반환
acks=all: step 3 이후 OK 반환 (min.insync.replicas 수만큼 Followers가 복제 완료한 뒤)

✔️ 데이터베이스와 비교

이 구조는 데이터베이스의 Master-Slave 복제와 비슷합니다.

  • Master = Leader (쓰기/읽기 담당)
  • Slave = Follower (복제본 유지, 필요시 Master 승격)

 

 

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형