본문 바로가기
개발

Kafka 설정 값

by just다해 2024. 9. 8.

Producer 설정

acks

acks란 producer 가 카프카 토픽의 리더에게 메시지 전송 후 요청을 완료하기 전 ack 수를 말한다. (참고)

  • acks=0 : 프로듀서는 서버로부터 어떠한 ack도 기다리지 않는다.
    • 서버가 데이터를 받았는지 보장하지 않고, 클라이언트는 전송 실패에 대한 결과를 알지 못해 재요청 설정도 적용되지 않음
    • 높은 처리량, 데이터 손실될 수가 있음.
  • acks=1 : 리더는 데이터를 기록하지만, 모든 팔로워는 확인하지 않음.
    • 일부 데이터 손실이 발생할 수 있음.
  • acks=all : 리더는 ISR의 팔로워로부터 데이터에 대한 ack를 기다림.
    • 하나의 팔로워가 있는 한 데이터는 손실되지 않음.

데이터가 손실이 되어도 되는지 여부에 따라 알맞게 설정해야 한다.

compression-type (메시지 압축률)

  CPU 사용률 처리 시간 브로커 디스크 용량 압축률
none 1.00 1.00 1.00 1.00
gzip 1.70 0.84 0.31 3.17
lz4 1.54 0.61 0.46 2.16
snappy 1.54 0.60 0.46 2.16

retries

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

  • retry.backoff.ms : 실패한 요청에 대해 프로듀서가 재시도하기 전에 대기할 시간

batch.size

여러 데이터를 함께 일괄(배치)로 보내는 크기에 대한 설정값이다. 정의된 크기보다 큰 데이터는 배치로 전송하는 것을 시도하지 않는다.

  • 데이터가 모이면 일괄로 보내기 위해, 대기하는 중에 장애 발생 시 배치 내에 있던 메시지는 전달되지 않을 수도 있다.

max.block.ms

카프카 프로듀서가 동작하면서 기다려야 할 일이 있을 때, 기다리는 최대 시간 설정값이다.

  • 버퍼가 모자랄 때, 메타 데이터 응답을 기다릴 때 등 다양한 곳에서 이 설정이 사용되며, 여기에 명시한 시간이 지나면 TimeoutException이 발생한다.

request.timeout.ms

클라이언트가 요청 응답을 기다리는 최대 시간 설정값이다.

  • 정해진 시간 전에 응답받지 못하면 다시 요청을 보내거나 재시도 횟수를 넘어서면 요청이 실패한다.

Consumer 설정

auto-offset-reset

카프카에서 초기 오프셋이 없거나 현재 오프셋이 더 이상 존재하지 않은 경우에 reset 기준에 대한 설정값이다.

  • earlist : 가장 초기의 오프셋 값
  • latest : 가장 최근의 오프셋 값
  • none : 이전 오프셋 찾지 못하면 에러

enable.auto.commit

주기적으로 오프셋 자동으로 커밋할지에 대한 설정값이다.

 ackMode

  • RECORD: 수신기에 의해 각 레코드가 처리된 후 offset commit
  • BATCH : 다음 폴링 전에 직전까지 처리된 메시지 offset commit
  • TIME: AckTime마다 직전까지 처리된 메시지 offset commit
  • COUNT : AckCount마다 직전까지 처리된 메시지 offset commit
  • COUNT_TIME : COUNT 또는 TIME 중 하나의 조건이 충족할 경우 메시지 offset commit
  • MANUAL : BATCH 방식과 비슷한데 다른 점은 Ack 처리를 컨슈머에서 직접 처리
  • MANUAL_IMMEDIATE : Ack 처리를 컨슈머에서 직접 해줘야 하고 즉시 offset commit

'개발' 카테고리의 다른 글

GIT (1)  (0) 2024.09.09
JedisExhaustedPoolException 이슈  (4) 2024.09.08
Transaction  (1) 2024.09.08
NoSQL  (0) 2024.08.25
추천 시스템  (0) 2024.08.25