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

24 lines
1.9 KiB
Markdown

### 프로듀서(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