반응형
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 내의 데이터 순서를 보장합니다.
- Topic > Partition > Segment(로그 파일 조각) > Record Batch, (index/timeindex 파일들) > Record(message)

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인 경우 물리적으로 배치가 불가능합니다.
- 예) Partition의 각 Replica는 서로 다른 Broker에 올라가야 합니다.

*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), 리더 밸런싱 같은 운영 작업을 조율합니다.
반응형
'Server > Kafka' 카테고리의 다른 글
| [Kafka] Producer 메시지 전송 보장 수준 (최대/최소/정확히 한 번) (0) | 2026.06.17 |
|---|---|
| [Kafka] Producer acks, Consumer AckMode 그리고 Listener (0) | 2026.05.24 |
| [Kafka] Producer 메시지 전송 방식 (0) | 2026.05.03 |
| [Kafka] Consumer 동작 방식과 리밸런싱 (0) | 2026.03.31 |
| [Kafka] Producer 동작 방식과 파티셔닝 전략 (0) | 2026.02.02 |