ETC/Kafka

[Kafka] 카프카 데이터 모델

seokhyun2 2020. 11. 29. 01:48

카프카의 데이터 모델은 토픽과 파티션으로 나누어집니다.

토픽은 메시지를 받을 수 있도록 논리적으로 묶은 개념, 파티션은 토픽을 구성하는 데이터 저장소로서 수평 확장이 가능한 단위라고 합니다.

 

토픽

메일 시스템을 생각해 보면, 메일 서버에는 많은 메일이 마구 섞여 있고, 원하는 메일을 찾기 위하여 메일 주소로 관리합니다.

카프카에서의 토픽이 메일 주소와 같은 개념입니다. 예를 들어 뉴스 토픽, 이미지 토픽이 존재하면 뉴스와 관련된 프로듀서들은 뉴스 토픽으로만 데이터를 보내고 이미지와 관련된 프로듀서들은 이미지 토픽으로만 메시지를 보냅니다.

뉴스 데이터만 보고 싶으면, 컨슈머에선 뉴스 토픽에서만 메시지를 가져가고 이미지 데이터만 보고 싶으면 이미지 토픽에서만 데이터를 가져가서 사용할 수 있습니다.

https://linuxhint.com/apache_kafka_partitions/

토픽 이름은 249자 미만으로 영문, 숫자, 그리고 . , _ - 와 같은 특수 기호들을 조합하여 사용할 수 있습니다.

 

파티션

파티션은 토픽을 분할한 것입니다. 토픽을 분할하는 이유에 대해서 한번 알아보겠습니다.

여러 개의 프로듀서가 하나의 토픽으로 동시에 메시지를 보낸다고 생각했을 때, 카프카에서는 들어오는 메시지 순으로 수신을 하는데 프로듀서가 보내는 속도를 따라가지 못할 수 있습니다.

그래서 토픽을 파티션으로 분할하고, 각 파티션이 동시에 들어온 메시지를 처리하도록 구성하여 병렬 처리 방식으로 속도를 높일 수 있습니다.

 

파티션 수를 이렇게 늘려주면 속도를 높일 수 있는데, 파티션 수를 늘렸을 때 단점도 존재합니다.

각 파티션은 브로커의 디렉토리와 매핑되고, 저장되는 데이터마다 인덱스와 실제 데이터 2개의 파일이 있습니다. 카프카에서는 모든 디렉토리의 파일들에 대해 파일 핸들을 해주므로 파티션의 수가 많을수록 파일 핸들 수 역시 많아져서 리소스를 많이 소비하는 단점이 있습니다.

또한, 파티션의 수를 늘리면 장애 복구 시간도 증가할 수 있습니다.

 

참고로 파티션의 수는 증가를 할 때는 쉽게 변경할 수 있지만, 파티션의 수를 줄이는 방법은 따로 제공하지 않기 떄문에 파티션을 줄이려면 토픽을 삭제해야만 합니다. 카프카에서는 브로커당 약 2,000개의 최대 파티션 수를 권장하고 있습니다.

 

 

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

[Kafka] 카프카 기본 실습  (0) 2020.12.27
Kafka 개요 / 설치  (0) 2020.07.19