← 목록으로

kafka 메세지 전송

topics 400-인프라 & 아키텍처 404 마이크로서비스(MSA)
types 학습 레퍼런스
tags #kafka #message #delivery
references curiousjinan.tistory.com/entry/kafka-... oliveyoung.tech/2024-10-16/oliveyoung...

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)

    • 데이터 정합성이 가장 중요함

관련 문서