partitioner 2

Apache Kafka Client 2.4 이상 버전의 RoundRobin Partitioner에서 메시지가 골고루 분배되지 못하는 현상

[문제점] Apache Kafka Client 2.4 버전이상에서 RoundRobin Partitioner를 사용할 경우 partition 메소드가 두 번 호출되면서 메시지가 파티션에 골고루 분배되지 못하는 현상이 있다. [버그 재현: 메시지 4개를 생성하기] //RR 파티셔너 사용 props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class); ... KafkaTemplate kafkaTemplate = new KafkaTemplate(new DefaultKafkaProducerFactory(props)); ObjectMapper obj = new ObjectMapper(); //forloop를 통해 메시지 4개를 생성 f..

Kafka/Producer 2022.12.03

Sticky Partitioner

[개요] Apache Kafka 2.4 버전 이후부터 사용가능한 파티셔너이다. 기존에는 RR방식으로 동작했는데, 이 방식에 대한 단점이 있어 이를 보완한 방법 [파티셔닝?] Kafka의 메시지는 key/value 의 형태로 구성된다. 이 때 key값이 있을 수도 있고, null값으로 존재할 수도 있다. 그리고 producer는 batch.size, linger.ms 옵션을 통해 메시지를 바로 보내지 않고 배치에 일정기간 저장했다가 보내는 특성을 가진다. Key값이 있는 경우 modular 연산을 통해 어떤 파티션에 메시지가 적재될지 결정한다. Key값이 없는 경우 기존에는 RR 방식을 사용하여 메시지를 파티션에 배분했다. 아래 그림은 1~9 까지의 메시지를 생성했을 때 RR정책에 의해 파티셔닝 된 모습 ..

Kafka/Producer 2022.12.03