Til


title: 2026-04-29 author: 강병호 (이름) date: 2026-04-29 (날짜) category: TIL/강병호/2026/04 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —

  1. 프로듀서의 내부 동작 프로세스 메시지가 전송되기까지 프로듀서 내부에서는 다음과 같은 단계가 순차적으로 실행됩니다.

Serializer (직렬화): 설정된 설정값(String, JSON, Avro 등)에 따라 메시지 객체를 바이트 배열로 변환합니다.

Partitioner (파티셔닝): 메시지를 토픽의 어느 파티션으로 보낼지 결정합니다.

메시지 키가 있는 경우: 키의 해시값을 사용하여 특정 파티션을 지정합니다. (동일 키 = 동일 파티션 보장)

메시지 키가 없는 경우: 라운드 로빈이나 접착성(Sticky) 파티셔닝 전략을 사용하여 파티션에 골고루 분배합니다.

Accumulator (메시지 배치): 메시지를 즉시 보내지 않고, 내부 버퍼에 모읍니다. 지정된 배치 크기(batch.size)나 대기 시간(linger.ms)에 도달할 때까지 기다렸다가 한꺼번에 전송하여 네트워크 오버헤드를 줄입니다.

Sender (전송): 별도의 네트워크 스레드가 버퍼에 쌓인 메시지 배치를 브로커로 전송합니다.

  1. 프로듀서의 핵심 설정 파라미터 시스템의 안정성과 성능을 결정하는 가장 중요한 설정값들입니다.

bootstrap.servers: 프로듀서가 클러스터에 처음 연결하기 위한 브로커들의 주소 리스트입니다.

acks (Acknowledgement): 전송 성공 여부를 확인하는 수준을 결정합니다.

0: 확인 없음 (가장 빠름, 유실 가능성 높음)

1: 리더 파티션 저장만 확인

all 또는 -1: 모든 ISR(복제본) 저장까지 확인 (가장 안전함)

retries: 전송 실패 시 재시도 횟수를 지정합니다.

max.in.flight.requests.per.connection: 한 번에 보낼 수 있는 확인되지 않은 요청의 최대 개수입니다. 이 값이 1보다 크면 재시도 과정에서 메시지의 순서가 뒤바뀔 수 있습니다.

  1. 프로듀서 사용 시 고려해야 할 설계 포인트 1) 메시지 전달 순서 보장 카프카는 파티션 단위 내에서만 순서를 보장합니다. 토픽 전체의 순서가 중요하다면 메시지 키를 적절히 활용하여 관련 데이터가 동일한 파티션으로 들어가게 설계해야 합니다.

2) 멱등성 프로듀서 (Idempotent Producer) 네트워크 오류로 재시도가 발생했을 때, 브로커에 메시지가 중복 저장되는 것을 방지하는 기능입니다. enable.idempotence=true 설정을 통해 중복 없는(Exactly Once) 전송의 기초를 다질 수 있습니다.

3) 성능 최적화 (Throughput vs Latency) 처리량(Throughput) 중심: batch.size와 linger.ms를 크게 설정하여 한 번에 많은 데이터를 보냅니다.

지연시간(Latency) 중심: linger.ms를 0에 가깝게 설정하여 데이터가 생성되는 즉시 보냅니다.

results matching ""

    No results matching ""