카프카에는 파티셔너에서 선택할수있는 몇 가지 전략이 존재한다.

이는 파티셔너에서 파니션으로 데이터를 분배해주게 되는데, 이때 어떤 방식으로 파티션에 분배할지에 대한 선택이다.

먼저 프로듀서가 무엇인지 부터 알아보자.

카프카의 프로듀서란 ?

카프카에서 프로듀서란 데이터를 생성해서 카프카 클러스터에 데이터를 보내어 큐에 쌓게 하는 역활을 한다. 프로듀셔는 카프카로 데이터를 전송할때 내부적으로 직렬화 → 분할→ 압축 단계를 거처 Accumulator 공간에 쌓여 있다가 Batch 형태로 브로커에 전송된다. 전체 적인 그림으로 보면 다음과같다.

Untitled

ProducerRecode 라는 클레스로 프로듀서를 만들어 send() 메세지를 보내면

이때 기본 파티셔너를 사용하고 Key 값을 넣었을때 Producer 는 key 값을 해쉬화 하고 같은 값에 대해서는 동일한 partition 으로 들어가도록 한다. 만약 key 값이 없다면 라운드로빈 방식으로 동일하게 분배 해준다. 이후 어큐물레이터(Accumulator) 버퍼안에 머물다가 batch size, 혹은 timer 설정에 의해 특정값이 되면 Single Thread 에 의해 클러스터노드로 전달 된다.

프로듀셔내의 파티셔너 란?

Untitled