반응형
반응형
🌏 메세지 복제(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 승격)

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'아키텍처+MSA' 카테고리의 다른 글
| [아키텍처/Kafka] 메세지 전송 보장 방식(At most once, At least once, Exactly once): 특징과 EOS 구현 방법 (0) | 2025.09.17 |
|---|---|
| [아키텍처/Kafka] acks(Acknowledgement) 설정: acks=0,1,all (0) | 2025.09.17 |
| [아키텍처/Kafka] Kafka만의 특징: 분산 로그 저장, Queue vs Topic (기존 메세징 시스템과 차이) (1) | 2025.09.17 |
| [아키텍처/Kafka] 비동기 메시징 시스템: 개념 + Consumer Group을 통한 병렬 처리의 원리를 간단히 알아보자! (0) | 2025.09.16 |
| [아키텍처] 아키텍처 개선과 SPOF 해결: SPOF 문제는 꼬리에 꼬리를 이어.. (3) | 2025.08.18 |