[Kafka] 카프카 프로듀서 옵션

Options

bootstrap.servers

카프카 클러스터는 클러스터 마스터라는 개념이 없기 때문에 모든 서버가 클라이언트의 요청을 받을 수 있다. 이 옵션은 카프카 클러스터에 처음 연결을 위한 호스트와 포트정보로 구성된 리스트 정보이다. 호스트는 카프카 클러스터 전체를 입력하기를 권장한다. 일부만 입력했을 경우 해당 브로커가 다운되면 접속이 불가능하기 때문이다.

acks

카프카 토픽의 리더에게 메세지를 보낸 후 요청을 완료하기전 ack의 수이다. 옵션 수가 작으면 성능이 좋지만 손실 가능성이 있고 수가 크면 성능이 좋지 않지만 손실 가능성이 줄어들거나 없어진다.

0

0으로 설정된 경우 프로듀서는 서버로부터 ack를 기다리지 않는다. 그렇기 때문에 클라이언트는 전송 실패에 대한 결과를 알지 못해 재요청 설정도 적용되지 않는다. 또한 응답을 기다리지 않기 때문에 빠르게 메세지를 보낼 수 있어 처리량이 높다.

1

1의 경우 리더는 데이터를 기록하지만 모든 팔로워는 확인하지 않는다. 이 경우 일부 데이터 손실이 일어난다.

all || -1

all이나 -1의 경우 리더는 ISR의 팔로워로부터 데이터에 대한 ack를 기다린다. 최소 하나의 팔로워가 있는 한 데이터는 손실되지 않으며 무손실을 강력하게 보장한다.

buffer.memory

프로듀서가 카프카 서버로 데이터를 보내기 위해 대기할 수 있는 전체 메모리 바이트다.

compression.type

프로듀서가 데이터를 압축해서 보낼 수 있는데 어떤 타입으로 압축할지를 정하는 옵션이다. none, gzip, snappy, lz4 와 같은 다양한 포멧을 지원한다

retries

일시적 오류로 인해 전송에 실패한 데이터를 다시 보내는 횟수이다.

batch.size

프로듀서는 같은 파티션으로 보내는 여러 데이터를 배치로 보내려고 시도한다. 이를 통해 클라이언트와 서버 양일간 성능 향상을 기대할 수 있다. 이 옵션을 통해 배치 크키 바이트 단위를 조정할 수 있는데 정해진 크기보다 큰 데이터는 배치를 시도하지 않게 된다. 배치를 보내기 전 클라이언트에 장애가 발생하면 배치내의 메세지는 전달되지 않는다. 고가용성이 필요한 메세지의 경우 배치 사이즈를 주지 않는것도 하나의 방법이다.

linger.ms

배치형태의 메세지를 보내기 전 추가적인 메세지들을 위해 기다리는 시간을 조정할 수 있다. 카프카 프로듀서는 배치 사이즈에 도달하면 이 옵션과 관계 없이 메세지를 전송하고 배치 사이즈에 도달하지 못한 상황에서 linger.ms의 제한시간에 도달하면 메세지를 전송한다. 기본값은 0이다.

max.request.size

프로듀서가 보낼 수 있는 최대 메시지 바이트 사이즈이다. 기본값은 1MB이다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/13/kafka/producer_options/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.