T_era
3. 카프카 파티셔너란? 본문
프로듀서가 카프카로 데이터를 전송할 때, 파티셔너는 데이터를 특정 토픽의 어느 파티션에 할당할지 결정하는 핵심적인 컴포넌트이다. 파티셔너는 레코드에 포함된 메시지 또는 메시지 키 값을 기반으로 파티션을 선택한다.
기본 파티셔너: Uniform Sticky Partitioner
별도의 파티셔너 설정을 하지 않으면, 카프카 프로듀서는 기본적으로 **Uniform Sticky Partitioner (USP)**를 사용한다. USP는 메시지 키의 존재 유무에 따라 다른 방식으로 동작한다.
- 키가 있는 경우:
- 레코드의 메시지 키를 기반으로 파티셔너 내부의 해시 함수를 통해 특정 해시 값이 생성된다.
- 생성된 해시 값을 기준으로 레코드를 할당할 파티션이 결정된다.
- 토픽에 여러 개의 파티션이 존재할 경우, 파티셔너는 해시 로직에 따라 파티션을 순환하며 선택한다.
- 핵심: 동일한 메시지 키를 갖는 레코드는 항상 동일한 해시 값을 생성하므로, 동일한 파티션에 순서대로 저장된다. 이는 컨슈머가 데이터를 큐처럼 순서대로 처리할 수 있도록 보장하는 중요한 특징이다.
- 키가 없는 경우:
- 레코드는 전통적인 Round Robin 방식이 아닌, USP의 최적화된 방식으로 파티션에 할당된다.
- USP는 프로듀서 내에서 배치(batch) 처리할 수 있을 만큼 레코드를 모은 후, 해당 배치를 특정 파티션으로 전송한다.
- 배치 단위로 파티션을 Round Robin 방식으로 순환하며 데이터를 할당한다.
- 결론: 키가 없는 레코드는 여러 파티션에 비교적 균등하게 분배된다고 볼 수 있다.
사용자 정의 파티셔너 (Custom Partitioner)
카프카는 org.apache.kafka.clients.producer.Partitioner 인터페이스를 통해 사용자 지정 파티셔너를 구현할 수 있는 기능을 제공한다.
- 기능: 사용자 정의 파티셔너를 구현하면 레코드의 키, 값, 그리고 대상 토픽의 이름 등 다양한 요소를 기반으로 레코드를 할당할 파티션을 결정할 수 있다.
- 활용 예시:
- VIP 고객의 데이터 처리 우선순위를 높이기 위해 특정 파티션을 VIP 고객 전용으로 할당할 수 있다. 예를 들어, 10개의 파티션 중 8개를 VIP 고객 데이터, 2개를 일반 고객 데이터 처리용으로 운영하여 VIP 고객의 데이터 처리량을 집중시키는 방식이다.
- 이는 AMQP 기반 메시징 시스템의 우선순위 큐와 유사한 방식으로, 특정 조건의 데이터 처리를 가속화하는 데 활용될 수 있다.
'이론 > 백엔드 개념정리' 카테고리의 다른 글
| 5. 카프카 컨슈머 랙 모니터링 방식 비교: 컨슈머 기반 vs Burrow (0) | 2025.05.01 |
|---|---|
| 4. 카프카 컨슈머 랙(Consumer Lag)이란? (0) | 2025.05.01 |
| 2. 카프카 핵심 개념 정리: Broker, Replication, ISR (0) | 2025.05.01 |
| 1. Kafka Topic에 대하여 (0) | 2025.05.01 |
| 0. Kafka 도입 배경 및 주요 특징 (1) | 2025.05.01 |