두 WAS를 띄었을때 JSESSIONID의 값이 다를것인데
graph LR
브라우저 --> 로드발란서 --> 서버1
로드발란서 --> 서버2
@GetMapping("/login")
public String login(HttpSession session){
return session.getId();
}
세션 아이디를 리턴하게 코드를 짜고
포트 8080과 8081로 따로 WAS를 띄워봤다.
다른 세션ID를 가지고 있다. 세션공유가 안되고있다.
Redis사용하기
이런 분산환경에서 redis를 사용한다면?
graph LR
브라우저 --> 로드발란서 --> 서버1 --> Redis
로드발란서 --> 서버2 --> Redis
아니 근데 RDB를 사용안하는 이유는?
- 과연 관계형 데이터 모델이 필요할까?
- 영속성이 필요한 데이터인가?
- 성능 요구사항을 충족할까?
Redis를 사용하자
- 세션데이터는 단순한 key-value구조
- 세션 데이터는 영속성이 필요없다.
- 세션 데이터는 변경이 빈번하고 빠른 데이터 엑세스 속도가 필요하다.
implementation("org.springframework.session:spring-session-data-redis")
추가해주고 프로퍼티 파일에spring.session.store-type=redis
를 추가gk지만 나는 스프링 부트 3.0 으로 하고있어서 따로 추가하지 않았다.스프링부트 3.0 부터 둘 이상의 세스토리지 구현제가 있을땐 Redis가 1순위로 알아서 고정된다고함
레디스 설정을 하고 다시 각각 따로 띄어봤더니
같은 세션 아이디를 사용한다. 자동으로 손쉽게 되는 세상 지저스 ~ !
'대용량 처리 이해 > Redis' 카테고리의 다른 글
Pub, Sub 패턴 (0) | 2023.02.20 |
---|---|
Redis Cache Layer (0) | 2023.02.19 |
Redis Data Type (0) | 2023.02.14 |
Redis (Remote Dictionary Server) (0) | 2023.02.13 |