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 |