kafka 메세지 전송
| topics | 400-인프라 & 아키텍처 404 마이크로서비스(MSA) |
| types | 학습 레퍼런스 |
| tags | #kafka #message #delivery |
| references | curiousjinan.tistory.com/entry/kafka-... oliveyoung.tech/2024-10-16/oliveyoung... |
Kafka 메세지 전송
Kafka에서 메세지 전송 시 어떤 보장 수준을 선택할지가 중요하다.
메세지 전송 보장 옵션
Kafka는 메세지 전송 시 다양한 보장 수준을 제공한다.
1. At Most Once (최대 1번)
- 메세지가 손실될 수 있지만, 중복은 발생하지 않음
- acks=0으로 설정
- 빠르지만 안정성이 낮음
2. At Least Once (최소 1번)
- 메세지 손실은 없지만, 중복이 발생할 수 있음
- acks=1로 설정
- 가장 일반적으로 사용됨
3. Exactly Once (정확히 1번)
- 메세지 손실도 없고 중복도 없음
- acks=all/-1로 설정
- 트랜잭션과 멱등성 프로듀서 사용
- 성능은 낮지만 가장 안정적
Producer acks 옵션
props.put("acks", "all"); // 0, 1, all/-1 중 선택
- acks=0: 프로듀서는 응답을 기다리지 않음
- acks=1: 프로듀서는 리더의 응답만 체크
- acks=all/-1: 모든 파티션(리더 + 팔로워)의 응답 확인
언제 어떤 옵션을 쓸까
본인의 경우, 다음 기준으로 선택한다:
로그 수집: At Most Once (acks=0)
- 일부 로그가 손실되어도 큰 문제 없음
일반적인 이벤트: At Least Once (acks=1)
- 중복은 어플리케이션에서 처리 가능
금융 거래, 결제: Exactly Once (acks=all)
- 데이터 정합성이 가장 중요함