Programming/Kafka

[kafka] 데이터 모델 토픽 파티션 오프셋

bisi 2020. 4. 14. 22:37

카프카가 고성능, 고가용성 메시징 어플리케이션으로 발전한 데는 토픽과 파티션의 역할이 컸다. 토픽은 메세지를 받을수 있도록 논리적으로 묶은 개념이고, 파티션은 토픽을 구성한는 데이터 저장소를 의미한다. 이에 대해 자세히 알아보자

 

1. 토픽

  • 카프카 클러스터가 데이터를 저장할 때 토픽이라 불리는 곳에 저장함

  • 메일시스템의 메일주소값과 같은 의미

  • 영문, 숫자, '.', '_', '-'의 자유로운 조합으로 249자 미만으로 네이밍

  • 접두어로 서비스명을 추가하여 구분 

 

2. 파티션

  • 토픽을 구성하는 데이터 저장소로 수평 확장 가능

  • 큐시스템의 제약 조건으로 메시지 순서 보장 (이전 메시지가 처리 완료되어야 다음메시지 처리)

  • 효율적 사용을 위해선 토픽의 파티션수가 많으면 좋지만, 무조건 늘리는 것은 아님. 

  • 파티션은 각 브로커의 디렉토라와 매핑되는데 저장되는 데이터마다 2개의 파일이 있음. 파티션수가 많아지면 파일핸들 수가 많아지고 결국 리소스 낭비가 심해짐.

  • 적절한 파티션 수는 목표 처리량 기준으로 계산

  • 예) 4개의 프로듀서가 초당 10개의 메세지를 보내면 카프카는 초당 40개를 처리하고, 8개의 컨슈머 고려서 각 5초당 8개 data 처리함. 

  • 컨슈머수 =파티션 수 동일하게 설정하기 권장

  • 최대 브로커당 약 2,000개 정도의 최대 파티션 수 저장

 

3. 오프셋과 메시지순서

  • 오프셋는 각 파티션 마다 메시지가 저장되는 위치 값을 의미함

  • 파티션내에 유일하게 순차적으로 증가하는 숫자(64비트) 형태로 되어 있음.

  • 오프셋은 순서대로 처리하기 때문에 순서 보장함.

'Programming > Kafka' 카테고리의 다른 글

[kafka] 고가용성 리플리케이션  (0) 2020.04.15
[kafka] 카프카 디자인  (0) 2020.04.13
[kafka] 카프카 주키퍼  (0) 2020.04.12