[Kafka] Producer 주요 설정

Woong·2021년 12월 17일
0

Apache Kafka

목록 보기
5/14

Producer 필수 설정

bootstrap.servers

  • broker의 주소 목록
    • hostname:port 형식으로 1개 이상의 broker 를 나열
  • 장애를 대비해 최소 2개 이상 권장

key.serializer, value.serializer

  • key, value 를 각각 직렬화하기 위한 클래스 지정
  • 내장 직렬화 클래스를 사용하거나, 커스텀 직렬화 클래스 사용
    • ByteArraySerializer, StringSerializer, IntegerSerializer, JsonSerializer, ...

그외 주요 설정

buffer.memory

  • 버퍼 메모리의 크기. 전송되지 않은 메시지를 보관하는 사이즈
    • 한계 도달시 max.block.ms 시간 동안 메시지 대기
    • batch 사이즈가 크다면 메모리를 늘려야함

acks

  • 메시지를 send한 후 ack를 확인할 것인지 옵션
  • acks=0
    • ACK 를 기다리지 않는다.
    • 속도는 제일 빠르지만, leader down 등 메시지 손실 가능성이 높음
  • acks=1
    • leader local log 에 메시지 기록하자마자 ACK 수신
    • 메시지 손실 가능성은 위에 비해 낮으나, leader down시 메시지 손실 가능성 있음
  • acks=all
    • leader가 모든 follower에 대해 ACK 수신 시에만 ACK 수신
      • min.insync.replicas 옵션을 통해 'write를 성공하기 위한 최소 복제본 수'를 지정
    • message 손실률이 제일 중요한 경우 사용
      • 복제본이 충분할 경우 손실률이 0에 가까워짐
    • 그러나, 확인을 위해 처리 속도가 느림

batch.size

  • message batch 처리를 허용, 임계값 도달시 message send
    • linger.ms 주기가 되면 batch size 도달하지 않아도 send

linger.ms

  • broker 에 send하기 전 추가 message를 기다리는 시간.
    • batch.size 도달하거나, linger.ms 시간동안 기다리게 된다.
    • 기본값 0
    • ex) linger.ms=5 추가시, 5ms 동안 대기시간 추가

compression.type ★

  • message 를 압축하여 전송
    • 네트워크 부하를 줄이고 전체적인 처리 성능을 높이기 위함
    • 기본값은 압축하지 않는 것
    • GZIP, Snappy, LZA 형식의 압축 제공
    • batch 처리가 많을수록 압축 효과가 좋음

reties

  • message 전송 실패시 exception 발생 전 재시도하는 횟수

max.in.flight.requests.per.connection

  • broker 의 응답을 기다리지 않고 보낼 수 있는 message 수
    • 1보다 큰 수 지정시 순서가 변경될 수 있음
    • message 순서가 상관없다면 1 보다 큰 수로 설정해 처리 성능 높일 수 있음

partitioner.class

  • producer에 사용자 정의 파티셔너 정의

timeout.ms

  • message에 대한 follower의 ACK를 leader가 기다리는 시간
    • acks=all 인 경우에만 유효

0개의 댓글