1.로드 밸런싱(Load Balancing)이란 
Load Balancer를 클라이언트와 서버 사이에 두고 
트래픽을 분산하는 방식을 말한다.

로드 밸런싱이 필요한 가장 큰 이유는
인터넷의 발달로 인한 개인들의 트래픽 소모량도 늘었지만
접속하는 인구의 규모가 달라졌기 때문에
하나의 서버로는 모든 트래픽을 감당할 수 없어졌고
여러 서버로 트래픽을 감당하는 작업을 위해 
분산 서비스가 필요해졌기 때문이다.

이전 학습한 내용들과 같이 이런 분산 시스템은 
주로 3가지 처리 방식을 가지고 있는데 
로드 밸런서 또한 평등(라운드 로빈), 속도(최소 연결), 특정(IP 해싱)의 키워드로 볼 수 있다.

첫번째 라운드 로빈(Round Robin)은 모든 처리를 시분할 방식으로 
  우선순위 없이 공평하게 처리한다.
  서버에서 적용하는 방식은 데이터의 처리가 아닌 서버 연결이기 때문에
  서버의 갯수가 100개이며 트래픽이 250개인 경우 
  1~100번까지는 1~100번까지의 서버에 연결하고
  101~200까지는 1~100번까지로 연결
  그리고 201~250은 1~50번까지 연결 후 종료하는 방식이다.
  
  또한 가중 라운드 로빈 방식을 통해 서버마다 가중치를 둘 수 있는데
  1(3), 2(1), 3(1), 4(2), 5(2), 6(1)의 6개의 서버가 있을 경우
  1~20까지의 트래픽이 들어오는 경우 아래와 같이 분배된다.
  1서버에는 1,2,3 11,12,13
  2서버에는 4,14
  3서버에는 5,15
  4서버에는 6,7,16,17
  5서버에는 8,9,18,19
  6서버에는 10,20
  
  
두번째 최소 연결 방식(Least Connections)은 서버마다 연결된 수치를 파악한 후
  현재 연결 수가 가장 적은 서버부터 하나씩 분배하는 방식으로 처리한다.
  트래픽간 세션 차이가 클 경우 세션 수의 불균형을 빠르게 해결할 수 있지만
  순간적으로 TPS(transaction per second)가 치솟아 장애가 생길 수 있다는 단점이 있다.
  
  
세번째 IP 해시 방식은 클라이언트 IP주소를 해싱처리한 다음
  각각의 서버로 분산 처리하는 방식으로 처리한다.
  해싱방식이 동일하게 유지된다는 조건하에
  규칙에 따라 같은 IP주소에서 들어온 트래픽의 경우
  일관된 서버로만 들어가는 것을 보장받을 수 있다.



로드 밸런서는 클라이언트 IP 주소에 대해 해싱이라고 하는 수학적 계산을 수행합니다. 클라이언트 IP 주소를 숫자로 변환한 다음 개별 서버에 매핑합니다.

로드밸런서에 문제가 생길 경우를 대비해 이중화해서 관리할 수 있다고 한다.


 

 


(1).백준 10178 할로윈의 사탕은 가족의 숫자와 사탕의 숫자가 주어질 경우
나머지가 몇개 남고 각자 몇개씩 가질 수 있는지를 묻는 문제였다.
특정한 문자열은 백틱으로 처리했고 
Math.floor로 갯수를 구하고 %를 통해 나머지를 구했다.

let input = `5
22 3
15 5
99 8
7 4
101 5`.split('\n')

let result = []

for(let i = 1 ; i < input.length ; i++){
    let [a,b] = input[i].split(' ').map(Number)
    result.push(`You get ${Math.floor(a/b)} piece(s) and your dad gets ${a%b} piece(s).`)
}

console.log(result.join('\n'))

+ Recent posts