T_era
1. Kafka Topic에 대하여 본문
Topic은 카프카 클러스터에 저장되는 데이터의 논리적인 분류 단위로, 데이터베이스의 테이블이나 파일 시스템의 폴더와 유사한 성질을 갖는다.
Topic 이름을 통해 어떤 종류의 데이터가 저장되어 있는지 명확하게 식별할 수 있다.
프로듀서는 특정 Topic에 데이터를 적재하고, 컨슈머는 해당 Topic에서 데이터를 소비한다.

Topic의 주요 특징
- 파티션: Topic은 데이터의 병렬 처리 및 분산을 위해 하나 이상의 파티션으로 구성된다.
- 큐(Queue): 각 파티션 내의 데이터는 FIFO(First-In, First-Out) 기반의 큐 형태로 저장 및 관리된다.
- 순서 보장: 프로듀서가 특정 파티션에 삽입한 데이터는 삽입 순서를 유지하며 저장된다.
- 순차적 소비: 컨슈머는 파티션 내 데이터를 저장된 순서대로 순차적으로 소비한다.
- Offset 관리: 컨슈머는 파티션 내 마지막 소비 위치(Offset)를 추적하며, 다음 소비 시 해당 Offset부터 데이터를 읽는다. 새로운 데이터가 없을 경우 대기 상태를 유지한다.
- 데이터 보존: 컨슈머의 데이터 소비 여부와 관계없이 카프카 내부의 데이터는 삭제되지 않는다.
- 데이터 재사용: 동일 데이터를 재소비하려면 새로운 컨슈머 그룹을 생성하고 auto.offset.reset 옵션을 earliest로 설정해야 한다. 이를 통해 데이터의 초기 Offset부터 재처리가 가능하다.
- 활용 가치: 데이터의 비소멸성 및 재사용성은 이벤트 처리 및 데이터 백업 등 다양한 활용 사례를 지원한다.
파티션 증가 시 데이터 할당 메커니즘
Topic의 파티션 수가 복수 개일 경우, 프로듀서에 의한 데이터 할당 방식은 다음과 같다.
- Key 부재: 데이터 Key가 Null인 경우, Round Robin 방식으로 파티션에 순차적으로 할당된다.
- Key 존재: 데이터 Key 기반 해싱을 통해 특정 파티션이 결정되어 데이터가 할당된다. 동일 Key 값은 항상 동일 파티션에 저장된다.
주의: 파티션 수 증가는 신중히 결정해야 한다. 카프카는 파티션 생성 후 축소 또는 삭제를 지원하지 않는다.
파티션 확장 필요성
파티션 수 증설의 주요 목적은 컨슈머의 병렬 처리 능력 향상이다. 파티션 수에 상응하는 컨슈머를 그룹에 할당하여 데이터 처리량을 증대시킬 수 있다.
파티션 데이터 삭제 정책
Topic 파티션 내 데이터 삭제는 설정된 보존 정책에 따라 수행된다.
- log.retention.ms: 레코드 최대 보존 시간(밀리초)을 설정한다. 경과된 레코드는 삭제 대상이 된다.
- log.retention.bytes: 파티션 최대 보존 용량(바이트)을 설정한다. 초과 시 오래된 레코드부터 삭제된다.
상기 옵션을 통해 데이터 보존 기간 및 용량을 관리하여 시스템 자원을 효율적으로 운영할 수 있다.
'이론 > 백엔드 개념정리' 카테고리의 다른 글
| 3. 카프카 파티셔너란? (0) | 2025.05.01 |
|---|---|
| 2. 카프카 핵심 개념 정리: Broker, Replication, ISR (0) | 2025.05.01 |
| 0. Kafka 도입 배경 및 주요 특징 (1) | 2025.05.01 |
| Redis, RabbitMQ, Kafka의 차이점 (0) | 2025.04.30 |
| 7. Redis 서버구성 (0) | 2025.04.30 |