Kafka Partitioner
Kafka Partitioner Producer 가 데이터를 보내면 무조건 Partitioner 를 통해 Broker 로 데이터를 보낸다. Recode 에 포함된 Message Key 혹은 Message 값에 따라서 Partition 의 위치가 결정된다. Producer 를 사용할때 Partitiooner 를 설정하지 않는다면 UniformStickyPartitioner 로 설정된다. Key 가 있는 Message Message Key 를 가진 레코드는 Partitioner 에 의해서 특정한 Hash 값이 생성된다. 해당 Hash 값을 이용해 어느 Partition 에 저장될지 결정된다. 동일한 Message Key 를 가진 Record 는 동일한 Hash 값을 만들기 때문에 항상 동일한 Partition 에 들어가는 것을 보장한다. 순서를 지켜서 데이터를 처리할 수 있는 장점이 있다. Partition 내부에서는 Queue 처럼 동작하기 때문에 순서를 지킬 수 있다. Key 가 없는 MessageRound Robin 형태로 데이터가 들어가게 된다. UniformStickyPartitioner 는 프로듀서에서 배치로 모을 수 있는 최대한의 Record 를 모아서 Partition 으로 데이터를 보내게 된다. Message Key 가 없는 Record 들은 Partition 에 적절히 분배된다.