Obsidian/Recognition/Programing/Kafka(AMQP)/Kafka Producer.md

1.9 KiB

프로듀서(producer) 특징

  • 카프카로 메시지를 보내는 역할을 하는 클라이언트 총칭.
  • 카프카로 레코드를 전송할 때, 특정 토픽으로 메세지를 전송
  • 특정 파티션을 지정하기 위한 레코드의 파티션 과 특정 파티션에 레코드들을 정렬하기 위한 레코드의 키는 선택사항
  • 각 레코드들은 프로듀서의 send() 메소드를 통해서 직렬화
  • send() 메소드 동작 이후 레코드들을 프로듀서가 카프카로 전송하기 전에 배치 전송을 하기 위해서 파티션 별로 잠시 모아둠.
  • 전송이 실패되면 재시도 동작이 이루어지게 되고 지정한 횟수만큼 재시도가 실패하면 최종 실패로 전달

Pastedcer Ack

데이터 유실 방지, Acks 옵션으로 [1, 0, -1(all)] 값으로 설정할 수 있음. acks = 0

  • 브로커에게 메시지 전달이 정상적으로 되었는 지를 확인하지 않는다.
  • 처리성능 면에서는 세 가지 옵션 중 가장 월등.
  • 메시지 전달이 정상적으로 되고 있는 지를 보장하지 않음. Acks = 1
  • 리더(replication)에게 메시지가 제대로 전달되었는 지를 확인.
  • 팔로워들에게 메시지를 복제하는 것을 기다리지 않고 잘 전달되었다고 프로듀서에게 알림.
  • 복제가 되었는 지를 확인하지 않기 때문에 리더가 메시지를 받고 바로 장애가 발생할 경우 메시지가 유실될 수 있음. acks = all (-1)
  • 리더와 ISR 팔로워들이 메시지를 모두 전달받았는 지를 확인.
  • 메시지의 전달에 있어 상대적으로 매우 긴 시간이 필요하지만, 다른 옵션들에 비해 월등한 안정성을 제공
  • ※ min.insync.replicas : 3으로 설정시 장애 등이 발생하여 2개의 replica만 존재하는 경우 토픽에 메시지를 적재할 수 없음. https://www.javatpoint.com/apache-kafka-producer