본문 바로가기

OSS

[Apache Kafka] 카프카 토픽이란?

반응형

아파치 카프카는 실시간 데이터 스트리밍 처리의 강력한 도구입니다. 이 도구에서 중심적인 역할을 하는 것이 바로 '토픽(topic)'이라고 생각 합니다. 토픽은 카프카의 기본적인 데이터 저장소 단위로, 데이터베이스의 테이블이나 파일 시스템의 폴더와 유사한 역할을 합니다.

토픽의 구성과 특징

  • 다중 파티션 구조: 하나의 토픽은 여러 개의 파티션으로 나뉠 수 있습니다. 각 파티션은 데이터를 차례대로 쌓는 큐와 유사하며, 이 구조는 데이터 처리의 병렬성을 높이고 고가용성을 보장합니다.
  • 라운드 로빈 배치: 데이터가 토픽의 파티션에 저장될 때, 특정 키가 지정되지 않은 경우, 기본적으로 라운드 로빈 방식으로 데이터가 분산 저장됩니다. 이는 각 파티션에 데이터 부하를 균등하게 분배하여 처리 속도와 효율성을 높입니다.
  • 키 기반 파티셔닝: 데이터를 특정 파티션에 할당하기 위해 키를 사용할 수 있습니다. 키가 제공되면, 카프카는 키의 해시 값을 계산하여 데이터를 특정 파티션에 일관되게 할당합니다. 이는 특정 데이터 그룹을 함께 처리할 필요가 있을 때 유용합니다.

데이터 유지와 소비

  • 데이터 유지: 카프카에서 데이터는 컨슈머가 처리하더라도 즉시 삭제되지 않습니다. 이는 같은 데이터에 대해 여러 컨슈머가 접근하거나, 데이터를 재처리할 필요가 있을 때 유용합니다.
  • 컨슈머 그룹: 여러 컨슈머가 하나의 토픽을 구독할 때, 컨슈머 그룹을 형성하고 각 컨슈머는 특정 파티션에서만 데이터를 읽습니다. 이는 데이터 처리의 효율을 최대화합니다.

토픽의 동적 관리

  • 파티션 조정: 토픽의 파티션 수를 증가시킬 수는 있지만, 줄이는 것은 불가능합니다. 이는 설계 단계에서 파티션 수를 신중하게 결정해야 하는 이유입니다.
  • 데이터 삭제 정책: 파티션의 데이터는 설정된 보관 정책에 따라 삭제됩니다. 데이터는 최대 크기나 보관 기간에 도달하면 자동으로 삭제되며, 이는 저장 공간을 효율적으로 관리할 수 있게 합니다.
반응형