본문 바로가기

Server/Kafka

[Kafka] 핵심 개념 빠르게 알아보기

반응형

Topic

  • Topic은 N개의 Partition으로 구성되어 있는 log 파일입니다.
  • Topic은 시간의 흐름에 따라 Record(message)가 물리적인 파일에 순차적으로 write 됩니다.

Partition

  • Topic을 N개로 쪼갠 로그 조각이 Partition 입니다.
    • 개별 Partition 내에서 순서가 보장되는 단위
  • Partition은 Kafka의 병렬 성능과 가용성 기능의 핵심 요소입니다.
  • Record(message)는 병렬 성능과 가용성을 고려해 개별 Partition에 분산 저장됩니다.

Partition 과 Offset

  • 논리/개념 계층

 

  • 물리/저장 계층(Disk File 관점)
    • Topic > Partition > Segment(로그 파일 조각) > Record Batch, (index/timeindex 파일들) > Record(message)
      • Partition의 Record는 Offset으로 불리는 일련의 번호를 할당 받습니다.
      • Offset은 Partition 내에서 Record 위치를 나타내는 번호이며, 이를 통해 Partition 내의 데이터 순서를 보장합니다.

Partition 과 Offset

Topic과 Partition의 병렬 분산 처리

  • Record는 병렬 성능과 가용성을 고려하여 Topic 내 개별 Partition 들에 분산 저장됩니다.
  • Topic의 Partition들은 단일 Broker뿐 만 아니라, N개의 Broker에 분산 저장될 수 있습니다.
    • Kafka Cluster는 replication-factor 옵션을 통해 복제(leader/follower) 영역을 관리합니다.
    • replication-factor란?
      • Topic의 각 파티션을 총 몇 개의 복제본으로 저장할지 정하는 값.
      • Topic 생성 또는 Partition 배치 시점에 이 값은 Broker 수 이하여야 합니다.
        • 예) Partition의 각 Replica는 서로 다른 Broker에 올라가야 합니다.
          Broker가 2대 인데, replication-factor가 3인 경우 물리적으로 배치가 불가능합니다.

replication-factor = 2

*Kafka Cluster와 Broker
Broker는 Kafka 서버 한 대이고, Cluster는 Broker 여러 대가 하나로 묶여 Kafka를 제공하는 전체 시스템입니다.
Kafka 공식 문서에서는 “Kafka는 하나 이상의 서버(=Broker)로 실행되고, 이 서버들이 Cluster를 이룬다”고 설명합니다.

Controller

Kafka에서 Controller는 한 줄로 말하자면 "Kafka Cluster의 meta data와 partition leader를 관리하는 조정자" 입니다. 전통적으로는 Broker 들 중 1대가 Controller로 선출되어 위 역할을 수행합니다. 만약, Controller로 선출된 Broker가 장애가 발생하면, 다른 Broker가 재선출 됩니다. KRaft 모드에는 Controller 역할이 별도의 Controller quorum으로 분리될 수 있어서, "Broker=Controller가 아닐 수 있습니다.

Controller가 하는 일

브로커 장애 감지 후 조치

  • 어떤 Broker가 죽으면, 그 Broker가 Leader였던 Partition들의 새로운 Leader 를 선출하고 Cluser에 전파합니다.

파티션/리더 상태 관리

  • 각 Topic-Partition의 Leader/Follower(Replica) 배치를 관리합니다.

관리 작업 오케스트레이션

  • 파티션 재할당(reassignment), 리더 밸런싱 같은 운영 작업을 조율합니다.
반응형