Skip to content

실습으로 배우는 선착순 이벤트 시스템 (Redis, Kafka)

Notifications You must be signed in to change notification settings

bjo6300/coupon-system-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

coupon-system-example

실습으로 배우는 선착순 이벤트 시스템


환경 구성

MySQL

  1. docker pull mysql
  2. docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql
  3. docker ps
  4. docker exec -it mysql bash

이후 DB 생성

  1. mysql -u root -p
  2. create database coupon_example;
  3. use coupon_example;

Redis

  1. docker pull redis
  2. docker run --name myredis -d -p 6379:6379 redis
  3. docker ps로 컨테이너 아이디 가져오기
  4. docker exec -it ee7309a05852(컨테이너 아이디) redis-cli

KafKa

  1. docker-compose 파일 경로에서 docker-compose up -d

토픽 생성

  • 카프카 기본 세팅에서 토픽 하나만 생성 가능

docker exec -it kafka kafka-topics.sh --bootstrap-server localhost:9092 --create --topic testTopic

프로듀서 실행

docker exec -it kafka kafka-console-producer.sh --topic testTopic --broker-list 0.0.0.0:9092

컨슈머 실행

docker exec -it kafka kafka-console-consumer.sh --topic testTopic --bootstrap-server localhost:9092


Topic 생성

docker exec -it kafka kafka-topics.sh --bootstrap-server localhost:9092 --create --topic coupon_create

Consumer 실행

docker exec -it kafka kafka-console-consumer.sh --topic coupon_create --bootstrap-server localhost:9092 --key-deserializer "org.apache.kafka.common.serialization.StringDeserializer" --value-deserializer "org.apache.kafka.common.serialization.LongDeserializer"


Redis 문제점

  • mysql에서 시간이 오래 걸리는 대량의 insert가 발생하고 주문 생성, 회원 가입을 한다면 대량의 insert가 실행되는 동안 이후 플로우가 진행되지 않는다.
  • 그러면 서비스 지연이나 타임아웃이 걸려 실행되지 않을 수 있다.

About

실습으로 배우는 선착순 이벤트 시스템 (Redis, Kafka)

Resources

Stars

Watchers

Forks

Languages