반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

간단한 개발관련 내용

CHAPTER3. 카프카 프로듀서: 카프카에 메시지 쓰기 본문

IT 책/카프카 핵심 가이드

CHAPTER3. 카프카 프로듀서: 카프카에 메시지 쓰기

vincenzo.dev.82 2024. 11. 21. 08:34
반응형

카프카 프로듀서 완벽 가이드 3장 요약

 

3.1 프로듀서 개요

  • 메시지 쓰기:
    • ProducerRecord 생성 → 직렬화 → 파티션 결정(기본적으로 키 기반) → 레코드 배치 생성 → 브로커로 전송.
  • 브로커 응답:
    • 성공 시 RecordMetadata 반환, 실패 시 에러 발생.
    • 프로듀서는 자동으로 재전송을 시도하지만 실패 시 예외를 발생.

 

3.2 카프카 프로듀서 생성

  • 필수 속성:
    1. bootstrap.servers: 브로커 주소 목록.
    2. key.serializer & value.serializer: 직렬화 클래스 지정.
  • 전송 방식:
    • Fire and Forget: 성공 여부 확인 없이 전송.
    • Synchronous send: send() 호출 후 Future.get()로 응답 대기.
    • Asynchronous send: 콜백 함수와 함께 send() 호출.

 

3.3 메시지 전달

  • 직렬화 및 에러 처리:
    • 직렬화 실패: SerializationException.
    • 타임아웃: TimeoutException.
    • 인터럽트: InterruptException.
  • 전송 방식:
    • 동기 전송: 성능 저하 가능.
    • 비동기 전송: 콜백을 통해 처리.

 

3.4 프로듀서 설정

  • 중요 속성:
    • acks: 메시지 신뢰성 수준 결정. (acks=all이 가장 신뢰성 높음).
    • linger.ms: 배치 전송 전 대기 시간.
    • buffer.memory: 메시지를 대기시키는 버퍼 크기.
    • compression.type: 메시지 압축(네트워크 대역폭 절약).
    • enable.idempotence: 멱등성 설정(순서 보장 및 중복 방지).

 

3.5 시리얼라이저

  • 기본 시리얼라이저:
    • 문자열, 정수 등 기본 데이터 타입 지원.
  • 커스텀 시리얼라이저:
    • 객체 타입의 메시지를 처리하기 위해 커스텀 직렬화 로직 작성.
  • Apache Avro 사용:
    • 스키마를 통해 언어 독립적 데이터 직렬화 제공.
    • 스키마 레지스트리를 사용해 스키마와 데이터를 함께 관리.

 

3.6 파티션

  • 파티셔너:
    • 기본 파티셔너: 키 해시를 통해 파티션 결정.
    • 커스텀 파티셔너: 특정 논리로 파티션 지정 가능.
  • 파티션 장애:
    • 특정 파티션이 장애 발생 시, 다른 파티션으로 전환 필요.

 

3.7 헤더

  • 레코드의 추가 메타데이터를 포함해 메시지 라우팅 및 추적에 사용.
  • 예: 데이터 출처를 헤더에 저장.

 

3.8 인터셉터

  • 목적: 클라이언트 코드를 변경하지 않고 동작 수정.
  • 주요 메서드:
    • onSend: 메시지 직렬화 전 호출.
    • onAcknowledgement: 브로커 응답 시 호출.

 

3.9 쿼터와 스로틀링

  • 쓰기/읽기 속도 제한: 초당 바이트 단위로 조정 가능.
  • 클라이언트 버퍼 고갈 시: TimeoutException 발생.
  • 모니터링: 브로커 처리 용량에 맞게 전송 속도 조정 필요.

 

3.10 요약

  • 카프카 프로듀서는 효율성, 신뢰성, 확장성을 기반으로 설계됨.
  • 설정 및 사용 방법을 이해하고 적절히 조정하면 최적의 성능을 발휘.
  • 전송 방식, 파티션 로직, 에러 처리, 압축 및 직렬화 등의 설정이 주요 성능과 신뢰성을 좌우.
반응형