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