msa로 환경을 구성하고 feign으로 통신하던 중 아래와 같은 에러가 났다. Caused by: java.lang.IllegalStateException: PathVariable annotation was empty on param 1. Caused by: java.lang.IllegalStateException: RequestParam.value() was empty on parameter 2. 그 이유는 Feign을 사용할 때 @PathVariable @RequestParam에 name을 아래처럼 명시적으로 넣어줘야 한다. @GetMapping("/sample/{samplePath}") String sampleGet(@PathVariable(name = "samplePath") String samp..
GitHub - oddnine/eureka-msa-practice-coupon: 회원가입 동시에 웰컴 쿠폰 발행하는 간단 MSA 예제 회원가입 동시에 웰컴 쿠폰 발행하는 간단 MSA 예제. Contribute to oddnine/eureka-msa-practice-coupon development by creating an account on GitHub. github.com 일단 게이트웨이에서 사용되는 필터 중 아래의 두 가지를 써볼 것이다. Global Filter: 모든 api 요청 시 필터 적용(먼저 실행) Custom Filter: 설정된 api 요청만 필터 적용 참고로 글로벌 필터랑 커스텀 필터 적용하는 방법은 크게 차이가 안 난다. filter 생성 나는 전역 필터로 모든 접근(로그인, 회원..
GitHub - oddnine/eureka-msa-practice-coupon: 회원가입 동시에 웰컴 쿠폰 발행하는 간단 MSA 예제 회원가입 동시에 웰컴 쿠폰 발행하는 간단 MSA 예제. Contribute to oddnine/eureka-msa-practice-coupon development by creating an account on GitHub. github.com 서비스를 구축하다 보면 한 서비스가 고장 났을 때 다른 서비스는 영향을 받지 않기 위해 MSA를 구축해야 한다. 시나리오 회원가입 즉시 웰컴 쿠폰을 발행해줘야 한다. 1. 회원가입을 요청한다. 2. 스프링 클라우드 게이트웨이에 접속한다. 3. 게이트웨이를 거쳐 유레카로 보낸다. 4. 유레카에서 해당 요청을 해당 서비스에 전달하고 로..
GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결 과정 with Redis, kafka. Contribute to oddnine/spring-concurrency-problem-solving development by creating an account on GitHub. github.com [Redis/kafka] 데이터베이스 동시성 문제 해결 코드 (STEP 3. Redisson, kafka로 과부하 줄이기) GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링..
GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결 과정 with Redis, kafka. Contribute to oddnine/spring-concurrency-problem-solving development by creating an account on GitHub. github.com [Spring/Redis] 데이터베이스 동시성 문제 해결 코드 (STEP 2. Redisson 분산 락) GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결..
GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결 과정 with Redis, kafka. Contribute to oddnine/spring-concurrency-problem-solving development by creating an account on GitHub. github.com [Spring/Redis] 데이터베이스 동시성 문제 해결 코드 (STEP 1. LOCK) GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결 과정 with ..
GitHub - oddnine/spring-concurrency-problem-solving: 스프링 동시성 문제 해결 과정 with Redis, kafka 스프링 동시성 문제 해결 과정 with Redis, kafka. Contribute to oddnine/spring-concurrency-problem-solving development by creating an account on GitHub. github.com 프로젝트를 진행하다 보면 트래픽이 몰릴 경우 동시성 문제가 발생할 수 있다. 그러기 위해선 다양한 방법을 사용할 수 있는데 첫 번째로 나는 DB LOCK을 걸어볼 것이다. 상황은 다음과 같다. 1. 티켓 서비스를 제공하고 티켓을 n장을 준비해 둔다. 2. 스레드로 동시 접속으로 티켓을 ..
Redis란? Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine. Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 메모리 내 데이터 구조 저장소 입니다. Redis는 캐시 기반의 인메모리 데이터 저장소로 분류하며 NoSQL 데이터베이스의 한 종류다. Redis는 메모리에 데이터를 저장하고 조회하는 빠른 성능을 제공하고 데이터는 키-값(key-value) 형태로 저장한다. 데이터의 구조는 문자열, 해시, 리스트, Set, Sorted Set 등 다양하게 활용..
일단 수강 신청 시에 많은 트래픽이 몰려온다고 가정을 하고 아래와 같이 아키텍처를 구성하였다. 구조는 브로커를 복제해서 하나의 브로커가 고장이 나도 예비 브로커를 사용할 수 있도록 하였고, enrollment_create의 경우 순서 보장이 확실하게 이루어져야 하기 때문에 파티션 하나를 사용하였다. 그 외는 순서 보장이 필요 없기 때문에 파티션 3개를 사용하여 분할 적재하였다. 흐름은 아래와 같다. 학생은 수강 신청을 요청하면 수강 신청 정보는 학생 쪽 Producer에서 enrollment_create 토픽에 적재가 된다. 적재된 정보는 수강 신청 서비스에서 Consumer 해준 다음 수강 신청 로직을 돌린 후 enrollment_history_create에 수강 신청 정보를 적재한다. 수강 신청 로그..
카프카란? 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산형 데이터 스트리밍 플랫폼이다. 즉, API로 데이터를 바로 요청을 하는 것이 아닌 미들웨어인 카프카를 둬서 프로듀서가 메시지를 생산해서 토픽으로 메시지를 보내고, 컨슈머는 토픽의 메시지를 가져와 사용하는 애플리케이션 부분이다. 따라서 연결되어 있는 토픽에 메시지(큐)가 들어오면 컨슈머는 그 메시지를 받을 수 있는 것이다. 장점) 1. 대량의 데이터를 처리 가능하고, 시스템 부하에 따라 확장이 가능하다. 2. 카프카는 실시간 데이터 처리를 위해 설계되었다. 데이터가 전송되는 즉시 프로듀서와 컨슈머가 데이터를 처리할 수 있고, 데이터의 지연 시간이 최소화되기 때문에 실시간 데이터 스트리밍이 가능하다. 3. 카프카는 메시지를 영속..