본문 바로가기

반응형

전체

(119)
Redis Pub/Sub 1. Redis Pub/Sub 기능Redis의 Pub/Sub(Publish/Subscribe) 기능은 메시지 기반의 통신 모델을 지원하는 기능이다. 이 모델에서는 메시지를 보내는 측(발행자, Publisher)과 메시지를 받는 측(구독자, Subscriber)이 직접 연결되지 않고, 채널을 통해 메시지를 주고받는다. 주요 개념은 다음과 같다.Publisher: 특정 채널에 메시지를 발행하는 역할Subscriber: 특정 채널을 구독하여 해당 채널에 발행된 메시지를 실시간으로 받아보는 역할Channel: 메시지가 전송되는 논리적 경로로, 구독자들은 이 채널에 연결되어 메시지를 수신Redis의 Pub/Sub는 다음과 같은 특성을 가진비동기 통신: 발행자는 구독자에게 직접 메시지를 보내는 대신 Redis 서버..
싱글톤 패턴 장단점 디자인 패턴이란??프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미한다싱글톤 패턴하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않는다보통 데이터베이스 연결 모듈에 많이 사용한다 장점하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다 단점의존성이 높아진다단위테스를 할 때 애로사항이 꼽힌다모듈 간의 결합을 강하게 만든다는 싱글톤 패턴의 단점을 의존성 주입(DI, Dependncy Injection)을 통해 모듈 간의 결합을 조금 더 느슨하게 만들어 해결..
Jmeter 꿀팁 이런식으로 HTTP Header Manager에 원하는 값을 넣어서 request의 헤더값을 지정 할 수 있다.내가 하던 프로젝트에서는 Jwt 로 유저를 구별하는데, 원하던 테스트는 1000명의 유저가 동시에 접근하는거다. 그렇다면 Header의 Authorization항목에 토큰값을 1000개를 준비해야 한다. 그걸 일일이 다 쓰는건 말이 안된다.몇 개 안될 때는   이런식으로 넣어 줄 수 있겠지만.... 그렇기에 있는 것이 JSR223 PreProcessor이다!!  이런 식으로 작성해준다면 요청을 보내기 전 User Defined Variables에 원하는 key, value를 넣어 준다. 참고로 ${__evalVar(token${__threadNum})} 위의 Http Header Manager에..
Jmeter 사용법!! (Mac OS brew로 설치) brew install jmeter우선 MacOS에서 터미널에 위와 같은 명령어를 넣어주면 brew가 알아서 Jmeter를 설치해준다. open /opt/homebrew/bin/Jmeter위 명령어를 입력시 아래와 같이 Jmeter가 켜진다  테스트 플랜의 Thread Group을 설정해주면 된다 Number of Threads : 스레드 개수 , 즉 유저의 수이다.Loop Count : 몇 번 반복 할지나는 멀티 스레드 환경에서 동시성 테스트를 할 것이기 때문에 Thread개수는 4로 해주었다.  Thread Group오른쪽 클릭, Add -> Sampler -> HTTP Request로  Http 요청을 작성해준다   Thread Group에서 오른쪽 클릭, Listener 에서 원하는 결과를 볼 수..
Spring 인터페이스의 구현체가 여러 개일 때 package newCar.event_page.jwt;import newCar.event_page.model.entity.Team;public interface JwtTokenProvider { public String generateToken(String username, boolean isAdmin); public Long getUserId(String token); //토큰에서 유저 Id를 추출 public Team getTeam(String token); //토큰에서 유저 Team을 추출 public boolean validateToken(String token); //JWT 토큰 유효성 검증 public boolean validateAdminToken(String to..
JWT 이란? JWT이란 JSON Web Token의 약자로 주로 로그인 할 때 서버에서 생성해서 유저에게 발급해준다.또한 웹에서 정보를 안전하게 전달하기 위한 열려있는 표준이다.JWT는 JSON 형식으로 구성되어 있으며, 클레임(claim)이라는 속성을 사용하여 필요한 정보를 포함하고 서명(signature)을 통해 인증과 데이터 무결성을 보장하며, 주로 인증(Authentication)과 정보 교환을 위해 사용된다.  JWT는 기본적으로 세 부분으로 구성된다 HeaderPayloadSignature생선된 토큰은....서버는 생성된 JWT 토큰을 클라이언트에 응답으로 반환합니다.이때 토큰을 응답 헤더에 담아서 반환하거나, 응답 바디(JSON)에 담아 반환할 수 있습니다.일반적으로 HTTP 응답 헤더에 Authoriz..
RedisTemplate.opsForValue().decremet() 이전 포스팅에서 명시적으로 락을 걸어주고 MySQL락과 성능 테스트를 했는데 별 차이가 안났엇다. 이전 포스팅 : https://red-tiger.tistory.com/118 Spring Redis 분산 락 사용법우선 Redis의 고급 기능 들을 지원해주는 Redisson 클라이언트 종속성을 build.gradle에 넣어준다 당연한 얘기지만 로컬환경에 redis를 미리 다운 받아 놔야한다.macOS에서는 brew 로 쉽게 설치가 가능하다red-tiger.tistory.com  그런데 알고보니 해당 key에 해당하는 value를 별도의 락 없이(정확히 얘기하면 redis 자체가 원자적으로 작동한다) value를 줄여주는 메소드를 발견했다. public void decreaseValueWithLock(Str..
Spring Redis 분산 락 사용법 우선 Redis의 고급 기능 들을 지원해주는 Redisson 클라이언트 종속성을 build.gradle에 넣어준다 당연한 얘기지만 로컬환경에 redis를 미리 다운 받아 놔야한다.macOS에서는 brew 로 쉽게 설치가 가능하다. build.gradledependecies{ //... implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.redisson:redisson-spring-boot-starter:3.17.0'}  나는 선착순 티켓팅에서 동시성 문제를 해결하기 위해 분산 락을 걸어줄 것이다!! 아래와 같이 작성한다. package softeer.demo.config;import or..

반응형