inflearn logo
강의

Course

Instructor

First-come, first-served event system that you learn through practice

Using Consumer

consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.

74

lecture0055497

1 asked

0

운영중인 서비스에서 선착순 100명 이벤트를 적용한다고 가정하겠습니다.

 

redis를 통해 100명을 제한했고, kafka를 적용하여 부하를 줄여주는 것은 까지는 이해했습니다.

 

부하를 줄이는 방법이 kafka를 적용할때 때 provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 입력하는 작업을 하는 것으로 이해했는데요.

 

만약 이게 실제 운영 환경이라고 가정했을때 궁금한것은 다음과 같습니다.

  1. 사용자가 이벤트 신청

  2. redis에서 쿠폰 생성 수량 확인 결과 생성 가능한 조건 임으로 새로운 쿠폰 발급

  3. provider가 새로운 토픽을 생성

     

  4. 토픽을 생성한 그 순간 바로 직후, 사용자는 새로운 쿠폰이 발급된 것으로 확인 해야함.

  5. 그치만 consumer에서 topic을 가져오기 전으로 DB에는 새로운 쿠폰이 생성되지 않음.

  6. 쿠폰을 사용(또는 확인) 하려고 DB에서 select해보니 쿠폰이 없음

  7. consumer가 이제서야 쿠폰 생성

이 경우에서 보는 것과 같이.

provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 넣는 과정 사이에 사용자가 select를 진행하는 케이스가 있을것같습니다.

이 부분은 어떻게 해결할 수 있을까요?

혹시 다음과 같이 해결 할 수 있을까요?

  1. provider가 topic을 생성하는 과정에서 발급 내역을 redis에 입력

  2. consumer가 모든 토픽을 전부 사용하여 DB에 입력하기 전까지 redis에 입력되어 있는 쿠폰 정보로 사용자에게 보여줌

  3. consumer가 모든 토픽을 사용했을때(= 생성된 모든 쿠폰정보를 DB에 입력했을때) redis에 있는 쿠폰정보는 삭제하고 DB에서 select해서 보여줌.

궁금합니다.

java docker spring-boot kafka redis

Answer 1

0

169developer9973

황준성님 안녕하세요.
말씀해주신것과 같이 kafka 를 사용하게 되면 잠시동안 쿠폰이 생성되지 않는 케이스가 있을 수 있습니다.

말씀해주신 방법으로 해결할수는 있겠으나, 여러가지 케이스를 고려해보았을때 복잡도가 높아지는 경우가 있을 수 있을듯합니다.

 

조금의 딜레이도 허용되지 않는 서비스라면 앞에 대기열을 만든 후 디비가 처리할 수 있을만큼의 트래픽만 받을 수 있도록 제어하는 방법을 많이 사용합니다.

 

감사합니다.

ApplyService와 Consumer서비스의 db공유?

0

54

2

쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?

0

83

2

흐름정리 제가 이해한게 맞나요?

0

70

2

안되서 스트레스 받아요

-2

108

2

프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!

0

183

2

Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...

0

213

1

카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.

0

167

2

키생성 방식에 따른 성능

0

166

2

사용자 동선에 대한 트랜잭션 문의

0

134

2

강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.

0

209

1

쿠폰 발급 개수 제한

0

182

2

ApplyService 의 총 처리 시간이 궁금합니다.

0

154

1

쿠폰 생성 에러 처리에 관해서 질문이 있습니다.

0

224

2

마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??

0

274

2

안녕하세요 질문 있습니다!

0

293

1

쿠폰 발급 유저 흐름에 대한 질문

0

307

2

수량 조절에 대한 질문이 있습니다.

0

230

2

kafka Producer 실행 중 에러 시 redis count 정합성 이슈

0

398

2

test 과정에서 오류가 발생합니다.

0

381

1

도커 환경설정에 대해서

0

268

2

Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제

0

594

1

consumer 모듈

0

322

2

카프카 토픽 생성오류

0

381

2

redis 를 사용하여 문제점 해결하기

0

371

2