아키텍처+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은 Leader와 Follower라는 두 가지 역할로 나뉘어 관리됩니다.
- Leader
- 읽기/쓰기는 Leader가 담당합니다.
- Producer가 데이터를 쓸 때 반드시 Leader Partition에 기록합니다.
- Consumer가 데이터를 읽을 때도 Leader Partition에서 읽습니다.
- 카프카 서비스는 리더가 죽지 않으면 리더에서만 모두 일어납니다
- 읽기/쓰기는 Leader가 담당합니다.
- Follower
- 리더가 죽었을 때를 위한 대비용 복제본입니다
- Leader에 기록된 데이터를 그대로 복제만 하고 평상시에는 직접 읽기/쓰기를 처리하지 않습니다.
- Leader가 죽으면 Follower 중 하나가 새로운 Leader로 선출되어 서비스가 중단되지 않도록 합니다.
✅ 동작 예시
Replication Factor가 3이고, order-topic의 Partition 0이 있다고 가정해봅시다.
- Broker1: Leader Partition 0
- Broker2: Follower Partition 0
- Broker3: Follower Partition 0
- Producer 메세지 전송: Producer가 메시지를 전송합니다
- Leader 기록: Broker1(Leader)에 먼저 저장됩니다. (디스크 기록)
- Followers 동기화: Broker2, Broker3은 Broker1의 데이터를 그대로 따라 적습니다.
- 만약 Broker1이 장애로 다운되면 Kafka는 Broker2나 Broker3 중 하나를 새 Leader로 선출합니다.
- 서비스는 중단되지 않고 그대로 이어집니다.
앞선 포스팅에서 설명했던 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 승격)

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