🧠 기술 적용 구조 논의
주제: Kafka 기반 Consumer 중복 데이터 처리 및 정합성 보장 전략
📌 목차
1. 📖 배경
호텔 요금 정보를 Kafka Topic을 통해 수신하여 DB에 저장하는 구조를 운영 중
현재 Kafka Producer는 메시지를
Key 없이 발행
하고 있으며, 이로 인해 동일한 기준의 데이터가
여러 파티션에 중복 전송
되는 문제가 발생
Consumer는 총 2대, 각 애플리케이션당 병렬 4개 Consumer Thread가 동작하여 총 8개 쓰레드가 병렬로 메시지를 처리함
동일한 데이터가 병렬로 처리되며 DB에 중복 저장 시도 →
DuplicateKeyException
, race condition 발생
따라서,
정합성 보장
과
병렬 처리 성능
사이에서 균형 잡힌 전략이 필요
2. 🔍 현재 고려 중인 방안
A. Kafka Key 설정 전략
hotelId:checkInDate
형태로 메시지에 Key를 부여
동일 Key는 항상 동일 파티션으로 라우팅되므로,
하나의 Consumer Thread만 순차적으로 처리
하게 됨
정합성 및 순서 보장 효과 탁월