본문 바로가기

Apache Kafka

Idempotent Producer

Udemy 강의를 들으며, 카프카 produce Acks에 대해 정리한 글이다

내용 정리 중 O'RELLY의 카프카 핵심 가이드에 수록된 내용도 참고를 하였다

Producer는 네트워크 에러 등의 이유로 동일한 메세지가 복사되어 두번 전송되는 일이 발생하곤 한다

본디 Producer에서 메세지를 전송하고, kafka broker가 메세지를 commit했다는 사실을 acknowledge 할 수 있어야 하나,

네트워크의 이유로 ack가 Producer에게 도달하지 못한다면 Producer는 메세지를 retry하게 된다

그러나 broker의 입장에서는 이미 한번 commit한 데이터와 동일한 메세지를 중복해서 commit하게 된다

문제는 Producer의 입장에서는 메세지는 단 한번만 전송이 된 것으로 간주한다

(broker로부터 acks는 네트워크가 정상화 된 이후에 한번 받게 되었으므로)

Idempotemt Procuder

kafka 0.11 이후로 produce request ID라는 것이 생겼다.이로 인해 brocker는 동일한 메세지를 두번 commit하는 것을 막을 수 있다.

Idempotent Producer를 통해서 안정적인 pipeline을 만들 수 있다.

retries=Integer.MAX_VALUE( == 2^31 - 1)

max.in.flight.request=5(카프카 1.0 버전 이후)

acks=all이 매개변수 셋팅은 임의로 조정하지 않는 이상 default 값으로 설정된다

'Apache Kafka' 카테고리의 다른 글

Confluent Schema Registry에 curl로 접속하기  (0) 2022.12.23
Apache Kafka의 성능: append-only and zero copy  (0) 2022.07.03
Producer Acks  (0) 2020.07.16