728x90
사이트 규모가 증가함에 따라서 과부하를 처리 하는 방식 중 하나를 로드 밸런싱이라 합니다. 그리고 로드 밸런싱은 N개의 다른포트에 똑같은 서비스 ( ex : 주문 서비스 ) 를 기동시켜 교차하며 서비스를 제공하도록 합니다. 이 방법은 굉장히 효율적으로 과부하에 대비 할 수 있지만 한가지 문제점이 존재합니다.
바로 데이터 동기화의 문제 인데, 만약 H2 DB처럼 각 Port별로 어플리케이션 실행 시 생성되는 DB인 경우에는 어떨까요?
#Load Balancer의 동작원리
많이 생략되어 있지만, LoadBalancer에서 어떤 Port로 접속 할지 접속 정보를 가지고 있습니다. 그리고 처음으로 요청이 들어오면, 보시는 것처럼 9091 Port로 요청값을 보냅니다. 그럼 9091Port 에서 H2-DB에는 유저의 주문정보1 이 저장이 됩니다.
이번에는 반대로 두번째 요청 시에는 9092 Port H2-DB에 두번째 주문 정보가 저장됩니다.
Load Balancer를 활용하면 해당 과정이 계속 반복해서 일어납니다. 계속해서 교차적으로 주문정보를 각 Port의 DB안에 저장하게 될거에요. 그렇다면 이런 상황에서의 가장 큰 문제점은 무엇일까요? 바로 데이터 동기화 문제입니다.
1번째 해결방안
2번째 해결방안
3번째 해결방안
- 출처 : 인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의
728x90
'MSA' 카테고리의 다른 글
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_Catalogs and Orders Microservice (1) | 2023.05.28 |
---|---|
Spring Cloud 로 개발하는 마이크로서비스 UserService 1-2 (0) | 2023.05.26 |
Spring Cloud 로 개발하는 마이크로서비스 UserService 1-1 (0) | 2023.05.24 |
Spring Cloud Gateway (0) | 2023.05.13 |