Kafka 메시지 중복 및 유실 케이스별 해결 방법
·2024.10.17 03:00
올리브영 OMS 프로젝트에서 Kafka를 활용해 메시지 중복과 유실을 방지하고 고가용성을 확보한 사례를 공유한다.
올리브영은 OMS(Order Management System) 프로젝트를 통해 기존 EAI와 Batch 기반의 연동 방식을 Kafka 기반의 실시간 인터페이스로 전면 개편했다. 이를 통해 처리량을 기존 대비 최대 45배까지 향상시키며 안정적인 데이터 송수신 구조를 구축했다.
메시지 전송 시 발생할 수 있는 중복과 유실 문제를 해결하기 위해 다음과 같은 설정을 적용했다.
-
Producer - Broker 구간
- 유실 방지:
acks=all옵션과retries설정을 통해 메시지 전달을 보장한다. - 중복 방지:
enable.idempotence=true옵션을 사용하여 네트워크 오류로 인한 재시도 시에도 메시지가 한 번만 저장되도록 멱등성을 보장한다.
- 유실 방지:
-
Consumer - Broker 구간
- 유실 방지:
auto.offset.reset=earliest와 Graceful Shutdown(immediate-stop=false) 설정을 통해 컨슈머 재기동 시 데이터 유실을 막는다. - 중복 방지:
AcksMode=MANUAL_IMMEDIATE설정을 통해 메시지 처리 완료 후 명시적으로 Ack를 전달함으로써 중복 소비를 방지한다.
- 유실 방지:
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.