T_era

1. Kafka Topic에 대하여 본문

이론/백엔드 개념정리

1. Kafka Topic에 대하여

블스뜸 2025. 5. 1. 13:15

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

Topic의 주요 특징

  1. 파티션: Topic은 데이터의 병렬 처리 및 분산을 위해 하나 이상의 파티션으로 구성된다.
  2. 큐(Queue): 각 파티션 내의 데이터는 FIFO(First-In, First-Out) 기반의 큐 형태로 저장 및 관리된다.
  3. 순서 보장: 프로듀서가 특정 파티션에 삽입한 데이터는 삽입 순서를 유지하며 저장된다.
  4. 순차적 소비: 컨슈머는 파티션 내 데이터를 저장된 순서대로 순차적으로 소비한다.
  5. Offset 관리: 컨슈머는 파티션 내 마지막 소비 위치(Offset)를 추적하며, 다음 소비 시 해당 Offset부터 데이터를 읽는다. 새로운 데이터가 없을 경우 대기 상태를 유지한다.
  6. 데이터 보존: 컨슈머의 데이터 소비 여부와 관계없이 카프카 내부의 데이터는 삭제되지 않는다.
  7. 데이터 재사용: 동일 데이터를 재소비하려면 새로운 컨슈머 그룹을 생성하고 auto.offset.reset 옵션을 earliest로 설정해야 한다. 이를 통해 데이터의 초기 Offset부터 재처리가 가능하다.
  8. 활용 가치: 데이터의 비소멸성 및 재사용성은 이벤트 처리 및 데이터 백업 등 다양한 활용 사례를 지원한다.

파티션 증가 시 데이터 할당 메커니즘

Topic의 파티션 수가 복수 개일 경우, 프로듀서에 의한 데이터 할당 방식은 다음과 같다.

  1. Key 부재: 데이터 Key가 Null인 경우, Round Robin 방식으로 파티션에 순차적으로 할당된다.
  2. Key 존재: 데이터 Key 기반 해싱을 통해 특정 파티션이 결정되어 데이터가 할당된다. 동일 Key 값은 항상 동일 파티션에 저장된다.

주의: 파티션 수 증가는 신중히 결정해야 한다. 카프카는 파티션 생성 후 축소 또는 삭제를 지원하지 않는다.

파티션 확장 필요성

파티션 수 증설의 주요 목적은 컨슈머의 병렬 처리 능력 향상이다. 파티션 수에 상응하는 컨슈머를 그룹에 할당하여 데이터 처리량을 증대시킬 수 있다.

파티션 데이터 삭제 정책

Topic 파티션 내 데이터 삭제는 설정된 보존 정책에 따라 수행된다.

  • log.retention.ms: 레코드 최대 보존 시간(밀리초)을 설정한다. 경과된 레코드는 삭제 대상이 된다.
  • log.retention.bytes: 파티션 최대 보존 용량(바이트)을 설정한다. 초과 시 오래된 레코드부터 삭제된다.

상기 옵션을 통해 데이터 보존 기간 및 용량을 관리하여 시스템 자원을 효율적으로 운영할 수 있다.