로드 밸런싱

김정용·2024년 8월 2일
1

Today I Learned

목록 보기
3/21

클라이언트 사이드 로드 밸런싱에 대해 알아본다.

로드 밸런싱이 무엇일까?

만약 같은 역할을 하는 서버 A, 서버 B로 이동하고자 하는 트래픽이 많을 때 서버 A로 갈지 서버 B로 갈지 어떤 기준으로 정하는 걸까 ?

로드밸런싱이 조절해준다.

로드 밸런싱은 서버에 가해지는 부하를 잘 조절한다는 의미이다.


로드밸런싱의 사용 이유

트래픽을 여러 서버로 균일하게 분산시키기때문에 서버 한 쪽으로 부하가 쏠리는 것을 방지한다. 이는 시스템 성능을 개선하는 효과를 가져온다.

로드 밸런싱 종류

  1. 서버 사이드 로드 밸런싱
    Switch라는 하드웨어 장비를 사용해 부하를 나누는 방식을 말한다.
    서버 사이드 로드 밸런싱의 경우 비용이 비싸고 설치 및 운영 방식이 비교적 어렵다는 특징이 있다.

  2. 클라이언트 사이드 로드 밸런싱
    클라이언트가 직접 여러 서버 중 하나를 선택해 요청을 보내는 방식을 말한다.


FeignClient?

FeignClient는 Spring cloud에서 제공하는 Http 클라이언트이다.
Eureka와 같은 서비스 디스커버리와 연동하여 로드 밸런싱을 수행한다.

Eureka : 각 서비스 어플리케이션은 자신의 위치를 중앙 서버인 Eureka에 등록한다.


Ribbon

FeignClient의 경우 Ribbon이 통합되어있어 로드밸런싱 수행이 가능하다.

여기서 Ribbon은 넷플릭스에서 개발한 클라이언트 사이드 로드밸런서이다.

로드 밸런싱 알고리즘

그렇다면 로드 밸런싱은 어떤 기준(알고리즘)으로 요청을 보낼 서버를 결정할까?



  1. 라운드 로빈

가장 평범하고 공평한 방법이다. 카드게임을 할때처럼 순차적으로 트래픽을 하나씩 분배하는 방법이다.



  1. 가중치 기반 로드 밸런싱

서버의 성능이나 네트워크 상태를 고려해 가중치를 부여하고 이에 따라 요청을 분배하는 방법이다.



  1. 최소 연결

클라이언트가 가장 적게 연결되어있는 서버 (비교적 덜 바쁜 서버)로 요청을 보내는 방법이다.



  1. 응답 시간 기반

서버의 응답시간을 기준으로 가장 빠르게 응답하는 서버로 요청을 보내는 방식이다.

정리 : 유레카 서버에 있는 리스트에서 서버를 다음과 같은 알고리즘을 통해 선정해 트래픽 부하를 나눈다 -> 로드 밸런싱

profile
누군가의 롤모델이 될 때까지😇

0개의 댓글