유레카를 설명해보다.

Junyeong·2022년 5월 23일
0

설명해보다

목록 보기
2/7

🎶 Eureka

클라우드에서 Load Balancing 등을 유연하게 가져가기 위해 각 서비스들의 IP, Port, Instance Id, 를 가지고 있는 REST 기반의 미들웨어 서버

Netfilx는 MSA를 선도한 기업이라고 할 수 있다.
그 과정에서 Eureka, Feign을 비롯한 여러 오픈소스를 제공해줬다. (거의 MSA의 표본..?)


🤔 유레카의 필요성

  1. MSA는 주로 Cloud 환경에서 이루어지고, Cloud는 수시로 서버가 늘어나거나 줄어들거나 한다.

  2. 로드 밸런싱을 위해선 LB가 Ip, Port 등의 정보를 가져야 하는데, 서버의 수가 달라질때마다 이걸 수동으로 기록하는 건,,,, 무리다.

😝개발자는 반복작업(노가다 성)을 싫어한다.

  1. 유레카는 등록과 해지, 페치 등의 개념을 구체화하여 이를 자동화 해준다.

유레카의 역할(기능)

역할(기능)을 정의하면 서비스 디스커버리이다.


🌀 Eureka Work Flow

유레카는 우리에게 가장 친숙한 개념인 Client < - > Server 의 방식으로 동작한다.

각각의 인스턴스는 하나의 클라이언트와 같고, 본인들의 IP와 Port와 Instand Id를 서버(eureka server)로 전달한다.
그리고 이를 Fetch 하는 방식으로 클라이언트와 통신한다.

요약

클라이언트가 서비스를 시작하면서 자신의 정보를 서버에 등록한다.
등록된 클라이언트는 서버로부터 다른 클라이언트의 등록정보를 받아서 로컬에 저장한다.
30초를 주기로 서버로부터 변경 사항을 받는다.
변경이 있다면 갱신한다.
30초마다 클라이언트가 서버에 핑을 보내는데, 핑이 없다면 Registry에서 제외된다.

결국 MicroService의 정보를 레지스트리에 등록할 수 있도록 하고, 탐색 및 로드밸런싱을 제공한다.

이 과정에서 용어가 등장

  • Discovery
  • Registry
  • Renew
  • Fetch
  • Cancel
  • Time Lag

🐻 Discovery

서비스의 연결 정보를 찾는 것.

🐻‍❄️ Registry

서비스의 연결 정보를 등록하는 것.

🐨 Fetch

서버에 등록된 정보를 획득하는 것.

🐸 Cancel

유레카에 있는 본인의 인스턴스를 삭제하는 것.

🐷 Time Lag

서버에 등록된 정보가 변동되었을 때, 모든 클라이언트가 알기까지 시간 지연.


그 외 한줄 노트

잊지 말아야 할 키워드는 REST, MSA클라우드이다.

Eureka는 REST니까 JAVA가 아니어도 된다.

이미 사용중 이므로 실습은 따로 진행하지 않을 예정.
참조 URL을 통해 Code를 볼 수 있다.

참조 URL

https://sabarada.tistory.com/61

profile
좋아하는 것을 계속 좋아하자.

0개의 댓글