24 lines
1.9 KiB
Markdown
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
|