일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 성능
- git
- notification
- 자바스크립트
- Push
- 웹사이트최적화기법
- php
- GCM
- NoSQL
- 웹사이트 성능
- nginx
- nginx설치
- 웹사이트성능
- Java
- 페이스북 번역
- 푸시
- APNS
- 디자인패턴
- 카프카
- kafka
- redis
- 레디스
- JPA
- gcm 푸시 번역
- Design Pattern
- GCM 번역
- 푸시 번역
- nginx설정
- 카프카 트랜잭션
Archives
- Today
- Total
간단한 개발관련 내용
CHAPTER7. 신뢰성 있는 데이터 전달 본문
반응형
7.1 신뢰성 보장
- 카프카는 다음과 같은 신뢰성 보장을 제공:
- 메시지 순서 보장: 동일한 프로듀서가 동일 파티션에 쓴 메시지는 순서를 유지.
- 커밋된 메시지 보존: 모든 인-싱크 레플리카에 저장된 메시지는 최소 하나의 레플리카가 살아 있는 한 유실되지 않음.
- 커밋된 메시지 소비: 컨슈머는 커밋된 메시지만 읽음.
7.2 복제
- 카프카는 복제를 통해 데이터 지속성과 고가용성을 보장.
- 인-싱크 레플리카:
- 조건:
- Zookeeper와의 세션이 유지됨(기본 6초).
- 최근 10초 이내에 리더 레플리카와 동기화.
- 최신 메시지를 복제 완료.
- 복제 지연 발생 시 아웃-오브-싱크 레플리카로 간주되어 신뢰성 저하.
- 조건:
7.3 브로커 설정
- 복제 팩터:
- 높은 복제 팩터 → 가용성과 신뢰성 증가, 디스크 사용량 증가.
- 설정:
replication.factor
(토픽 단위)default.replication.factor
(브로커 단위)
- 언클린 리더 선출:
- 설정:
unclean.leader.election.enable=false
(기본값). - 아웃-오브-싱크 레플리카를 리더로 선출하지 않아 데이터 유실 방지.
- 설정:
- 최소 인-싱크 레플리카:
- 설정:
min.insync.replicas
. - 설정 값 이하의 레플리카만 동기화되면 쓰기 불가(데이터 유실 방지).
- 예외:
NotEnoughReplicasException
.
- 설정:
- 디스크 플러시:
flush.messages
와flush.ms
설정으로 디스크 플러시 빈도 제어.
7.4 프로듀서에서 신뢰성 보장
- ACK 설정:
acks=0
: 네트워크 전송 완료 시점에서 성공으로 간주(가장 빠름, 데이터 유실 가능성 높음).acks=1
: 리더가 데이터를 수신 후 성공 응답.acks=all
: 모든 인-싱크 레플리카가 데이터를 수신해야 성공 응답(가장 안전).
- 재시도 설정:
- 재시도 가능한 에러를 자동으로 처리.
- 설정:
- 재시도 횟수:
retries=MAX_INT
. - 대기 시간:
delivery.timeout.ms
를 충분히 큰 값으로 설정.
- 재시도 횟수:
- 멱등성 활성화:
enable.idempotence=true
로 중복 전송 방지.
7.5 컨슈머에서 신뢰성 보장
- 컨슈머 설정:
group.id
: 컨슈머 그룹 내에서 파티션 분배.auto.offset.reset
:earliest
: 가장 오래된 메시지부터 읽기.latest
: 가장 최근 메시지부터 읽기.
enable.auto.commit
: 자동 오프셋 커밋 여부.
- 오프셋 커밋:
- 메시지 처리 완료 후 오프셋 커밋.
- 성능과 크래시 복구 시 중복 메시지 수 간의 트레이드오프를 고려한 빈도 설정.
- 리밸런스 발생 시 오프셋 커밋 주의.
7.6 시스템 신뢰성 검증 및 모니터링
- 설정 검증:
org.apache.kafka.tools
의 VerifiableProducer 및 VerifiableConsumer 활용.- 리더 선출, 컨트롤러 선출, 롤링 재시작 등 테스트.
- 애플리케이션 검증:
- 브로커 연결 끊김, 디스크 풀 사용, 긴 네트워크 지연 등 상황 테스트.
- 프로덕션 모니터링:
- 프로듀서:
- 에러율(
error-rate
), 재시도율(retry-rate
).
- 에러율(
- 컨슈머:
- 컨슈머 랙(
consumer-lag
): 메시지 처리 지연 상태 측정.
- 컨슈머 랙(
- 프로듀서:
7.7 요약
- 신뢰성은 단순히 카프카의 기능만으로 보장되지 않음.
- 아키텍처, API 사용 방식, 설정을 종합적으로 설계해야 함.
- 신뢰성 높은 시스템 구축은 애플리케이션 복잡성 증가와 디스크 사용량 증가와 같은 트레이드오프를 수반.
- 요구 조건에 맞는 설정과 구현으로 신뢰성과 효율성 간 균형을 유지해야 함.
반응형