Skip to content

Latest commit

 

History

History
92 lines (55 loc) · 2.99 KB

File metadata and controls

92 lines (55 loc) · 2.99 KB

🎯Load_Balancer🎯

자바로 로드밸런서 구현하기

[Java로 로드밸런서 구현하기] 로드밸런서의 개념 (1)


✅ Registration

image

  • 각각의 서버는 로드밸런서에 연결되어야 한다 -> 서버에 대한 정보를 로드밸런서가 알고 있어야 함

    설정파일을 사용할 것이다. - json의 형태로 관리

  • dynamic하게 구현할 것이다 -> 로드밸런서는 프로토콜과 포트를 바인딩하고 listen해야 한다

load balancer는 register 받으면 하나씩 balance할 수 있는 기능을 구현해야한다 (round-robin으로 구현) => 그러고 나서 ack를 반환한다.


✅ Unregistration

image

  • 서버가 종료될 때, 로드 밸런서는 포트를 close한다.
  • 다른 서버는 여전히 open port를 유지한다 => member를 관리한다

✅ Health Check

image

  • 로드 밸런서는 각각의 서버에 hello message를 보낸다 hello message를 받으면 server에 traffic을 보낸다
  • server와 disconnection을 하면 traffic을 더 이상 보내지 않고 port를 close한다.

✅ Load Balancing

image

  • 비록 새로운 서버가 추가되더라도, 클라이언트의 트래픽은 같은 서버에 keeps going

  • 기본적으로 로드밸런서 RountRobin의 형태로 구현

    • Need to maintain a serverHandler list mapped to the open port
    • Need to maintain a session table
  • TCP UDP같은 경우는 network를 잘써서 줘야한다.


📌 추가 고려사항

  • 서론

  • 구현

    • architecture적으로 어떻게 짰는지 (code level말고)
      • 컴포넌트를 어떻게 나눴는지
      • 멀티쓰레드? 싱글 쓰레드?
    • 왜 그렇게 선택했는지
  • 환경설정

    • 어떻게 돌리는지
      • 컴파일하고 run어떻게 하는지
    • 스크린샷
    • 성능에 대한 그래프와 테이블

테스트

image image image image

트러블 슈팅

image

image

image

부하테스트

image