Kafka
Kafka Cluster 구조
marcel
2025. 4. 10. 10:31
개요
Kafka Cluster는 다음과 같은 주요 구성요소로 이루어집니다
- Broker (브로커)
- ZooKeeper 또는 Kafka Controller
- Topic / Partition / Replica
- Producer / Consumer
Broker (브로커)
Kafka에서 실제로 메시지를 저장하고 전송하는 서버 단위 구성원입니다.
- 하나의 Kafka 클러스터에는 여러 개의 브로커가 있습니다 (예: Broker 1, Broker 2, …).
- Topic은 여러 Partition으로 구성되고, 각 파티션은 하나의 브로커에 저장됩니다.
- 브로커는 메시지를 디스크에 저장하고, **복제(replication)**도 관리합니다.
역할 요약
- 메시지 저장 및 전송
- 리더/팔로워 역할 분담 (리더 파티션은 브로커 하나가 담당)
- 컨슈머 요청 처리
Kafka Controller (컨트롤러) / Apache Zookeeper
Kafka의 클러스터 메타데이터를 관리하고 브로커들을 통제 및 조정하는 역할입니다.
- 브로커 등록/해제
- 컨트롤러 선출
- 토픽/파티션 메타데이터 관리
- ACL/ISR 정보 등
Kraft Mode 기반 Controller
Kafka 2.8+부터는 **ZooKeeper 없이 자체 내장된 컨트롤러(KRaft Controller)**를 사용 가능
- Kafka 자체가 **메타데이터 관리 시스템(KRaft)**를 갖게 되면서 ZooKeeper를 제거
- 클러스터 메타데이터, 브로커 상태, 컨트롤러 선출 등도 Kafka 내부에서 처리
비교 항목ZooKeeper 기반KRaft 기반
외부 의존성 | ZooKeeper 필요 | Kafka 내부 처리 |
컨트롤러 역할 | ZooKeeper가 선출 | Kafka가 직접 선출 |
최신 버전 | 점점 KRaft로 이동 중 | Kafka 3.x 이상은 KRaft 사용 권장 |
Kafka 4.x 부터는 Zookeeper 호환성 제거됨 |
역할
- Leader 파티션 할당
- 브로커 추가/제거 감지
- 파티션 복제본 상태 확인
- ISR 관리
구조 흐름
Producer → Kafka Broker (리더 파티션) → Partition 저장 → Replication (팔로워 파티션)
Consumer ← Kafka Broker (리더 파티션)
Cluster 상태 조정 ← Controller(ZooKeeper or KRaft)
|