실습으로 배우는 선착순 이벤트 시스템
MySQL
- docker pull mysql
- docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql mysql
- docker ps
- docker exec -it mysql bash
이후 DB 생성
- mysql -u root -p
- create database coupon_example;
- use coupon_example;
Redis
- docker pull redis
- docker run --name myredis -d -p 6379:6379 redis
- docker ps로 컨테이너 아이디 가져오기
- docker exec -it ee7309a05852(컨테이너 아이디) redis-cli
KafKa
- 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"
- mysql에서 시간이 오래 걸리는 대량의 insert가 발생하고 주문 생성, 회원 가입을 한다면 대량의 insert가 실행되는 동안 이후 플로우가 진행되지 않는다.
- 그러면 서비스 지연이나 타임아웃이 걸려 실행되지 않을 수 있다.