작성
·
15
0
운영중인 서비스에서 선착순 100명 이벤트를 적용한다고 가정하겠습니다.
redis를 통해 100명을 제한했고, kafka를 적용하여 부하를 줄여주는 것은 까지는 이해했습니다.
부하를 줄이는 방법이 kafka를 적용할때 때 provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 입력하는 작업을 하는 것으로 이해했는데요.
만약 이게 실제 운영 환경이라고 가정했을때 궁금한것은 다음과 같습니다.
사용자가 이벤트 신청
redis에서 쿠폰 생성 수량 확인 결과 생성 가능한 조건 임으로 새로운 쿠폰 발급
provider가 새로운 토픽을 생성
토픽을 생성한 그 순간 바로 직후, 사용자는 새로운 쿠폰이 발급된 것으로 확인 해야함.
그치만 consumer에서 topic을 가져오기 전으로 DB에는 새로운 쿠폰이 생성되지 않음.
쿠폰을 사용(또는 확인) 하려고 DB에서 select해보니 쿠폰이 없음
consumer가 이제서야 쿠폰 생성
이 경우에서 보는 것과 같이.
provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 넣는 과정 사이에 사용자가 select를 진행하는 케이스가 있을것같습니다.
이 부분은 어떻게 해결할 수 있을까요?
혹시 다음과 같이 해결 할 수 있을까요?
provider가 topic을 생성하는 과정에서 발급 내역을 redis에 입력
consumer가 모든 토픽을 전부 사용하여 DB에 입력하기 전까지 redis에 입력되어 있는 쿠폰 정보로 사용자에게 보여줌
consumer가 모든 토픽을 사용했을때(= 생성된 모든 쿠폰정보를 DB에 입력했을때) redis에 있는 쿠폰정보는 삭제하고 DB에서 select해서 보여줌.
궁금합니다.
답변