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 가 없는 Message

Round Robin 형태로 데이터가 들어가게 된다.

  • UniformStickyPartitioner 는 프로듀서에서 배치로 모을 수 있는 최대한의 Record 를 모아서 Partition 으로 데이터를 보내게 된다.
  • Message Key 가 없는 Record 들은 Partition 에 적절히 분배된다.
Share