카프카 프로듀서 설정 옵션들에 대한 내용입니다. 카프카 프로듀서는 메시지를 보내는 역할을 하는 클라이언트를 의미합니다. 안정적인 데이타 파이프라인 구축을 위해서는 서비스 요구사항에 맞는 프로듀서 설정이 매우 중요하므로 각 설정에 대한 명확한 이해가 필요합니다.
카프카 컨슈머에 대한 설명이 필요하신 분은 여기 링크를 참고부탁드립니다.
카프카 프로듀서 설정 옵션
- bootstrap.servers : 클라이언트가 카프카 클러스터에 처음 연결하기 위한 호스트와 포트 정보를 기입합니다.
- java 소스를 예로 들어보겠습니다.
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
public class ProducerSample {
public static void main(String[] args) {
Properties props = new Properties(); // Properties 인스턴스 생성
props.put("bootstrap.servers", "kafka01.example.test:9092,kafka02.example.test:9092,kafka03.example.test:9092"); //브로커 설정.
....
}
}
- client.dns.lookup : 하나의 호스트에 여러 IP를 매핑해 사용하는 일부 환경에서 클라이언트가 하나의 IP와 연결하지 못할 경우에 다른 IP로 시도하는 설정입니다.
- use_all_dns_ips : 기본값, DNS에 할당된 호스트의 모든 IP를 쿼리하고 저장함. 실패하면 다음 IP로 접근을 시도합니다.
- resolve_canonical_bootstrap_servers_only : 커버로스 환경에서 FQDN을 얻기 위한 용도로 사용됩니다.
- acks : 프로듀서가 토픽의 리더 측에 메시지를 전송한 후 전송 완료를 결정하는 옵션입니다.
- 0 : 빠른 전송 보장하나 일부 메시지 손상 가능성이 있습니다.
- 1 : 리더가 메시지를 받았는지 확인합니다. 모든 팔로워를 전부 확인하지는 않고 대부분 이 설정을 사용합니다.
- all : 팔로워까지 메시지를 받았는지 여부를 확인함. 느릴 수는 있지만 하나 이상의 팔로워가 있는 한 메시지는 손실되지 않습니다.
- buffer.memory : 프로듀서가 카프카 서버로 데이터를 보내기 위해 잠시 대기(배치 전송이나 딜레이 등)할 수 있는 전체 메모리 바이트(byte)입니다.
- compression.type : 프로듀서가 메시지 전송시 선택할 수 있는 압축 타입. none, gzip, snappy, lz4, zstd 중 원하는 타입을 선택할 수 있습니다.
- enable.idempotence : 설정을 true로 하는 경우 중복 없는 전송이 가능하며, 이와 동시에 max.in.flight.requests.per.connection은 5 이하, retries는 0이상, acks는 all로 설정해야 합니다.
- max.in.flight.requests.per.connection : 하나의 커낵션에서 프로듀서가 최대한 ACK 없이 전송할 수 있는 요청수. 메시지의 순서가 중요하다면 1로 설정할 것을 권장하나 성능은 다소 떨어집니다.
- retries : 일시적인 오류로 인해 전송에 실패한 데이터를 다시 보내는 횟수입니다.
- batch.size : 프로듀서가 동일한 파티션으로 전송할 데이타의 배치 크기입니다.
- linger.ms : 배치 크기에 도달하지 못한 상황에서 linger.ms 제한 시간에 도달했을 때 메시지를 전송합니다.
- transactional.id : ‘정확히 한 번 전송’을 위해 사용하는 옵션. 동일한 TransactionalId에 한해 정확히 한 번 보장합니다. enable.idempotence를 true로 설정해야 합니다.
이상으로 간략한 카프카 프로듀서 설정 정리를 마치겠습니다.
카프카 프로듀서 설정에 대한 자세한 내용은 여기 링크를 참고바랍니다.
좀더 자세한 설명을 원하시는 분은 여기 링크로 ‘실전 카프카 개발부터 운영까지’ 책을 사서 보시길 추천드립니다.
참고 : 실전 카프카 개발부터 운영까지
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”