Kafka Streams, 코파티셔닝(co-partitioning)을 모르면 벌어지는 KStream-KTable Join 대참사
·
트러블슈팅
TL;DRKafka Streams 애플리케이션에서 5초마다 들어오는 주가 데이터(KStream)와 오전에 한번 업데이트되는 valuation 데이터(KTable)를 조인하여 조건에 맞는 시그널 기업 메시지를 생성하려 했지만, 파티션 불일치(코파티셔닝 미흡)로 인해 동일 기업의 시그널이 여러 Task의 로컬 상태 저장소에 분산되어 중복 생성되는 문제가 발생했습니다. GlobalKTable을 사용해 보았으나, 비동기 업데이트로 인한 약간의 지연 때문에 중복 필터링에 실패했습니다. 결국, 동일 키가 반드시 동일 파티션에 위치하도록 파티션 수를 맞추거나 재파티셔닝을 수행하는 코파티셔닝 방식을 적용해야 중복 메시지 문제를 확실히 해결할 수 있다는것을 배웠습니다. Kafka Streams를 활용하여 실시간 피드 제..