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)