일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- nginx
- APNS
- 성능
- notification
- 카프카
- 웹사이트 성능
- JPA
- Java
- 푸시
- 웹사이트성능
- 카프카 트랜잭션
- redis
- NoSQL
- Design Pattern
- 레디스
- git
- kafka
- GCM 번역
- 웹사이트최적화기법
- nginx설치
- 페이스북 번역
- Push
- 푸시 번역
- gcm 푸시 번역
- php
- GCM
- nginx설정
- 디자인패턴
- 자바스크립트
Archives
- Today
- Total
간단한 개발관련 내용
CHAPTER3. 카프카 프로듀서: 카프카에 메시지 쓰기 본문
반응형
카프카 프로듀서 완벽 가이드 3장 요약
3.1 프로듀서 개요
- 메시지 쓰기:
ProducerRecord
생성 → 직렬화 → 파티션 결정(기본적으로 키 기반) → 레코드 배치 생성 → 브로커로 전송.
- 브로커 응답:
- 성공 시
RecordMetadata
반환, 실패 시 에러 발생. - 프로듀서는 자동으로 재전송을 시도하지만 실패 시 예외를 발생.
- 성공 시
3.2 카프카 프로듀서 생성
- 필수 속성:
bootstrap.servers
: 브로커 주소 목록.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 요약
- 카프카 프로듀서는 효율성, 신뢰성, 확장성을 기반으로 설계됨.
- 설정 및 사용 방법을 이해하고 적절히 조정하면 최적의 성능을 발휘.
- 전송 방식, 파티션 로직, 에러 처리, 압축 및 직렬화 등의 설정이 주요 성능과 신뢰성을 좌우.
반응형