관리 메뉴

IT.FARMER

spring cloud eureka 본문

Spring/Spring Cloud

spring cloud eureka

아이티.파머 2021. 7. 21. 19:12
반응형

2021.07.21 - [Spring/Spring Cloud] - Spring Cloud
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS 와 Spring Cloud 의 ecosystem
2021.07.21 - [Spring/Spring Cloud] - spring cloud eureka
2021.07.21 - [Spring/Spring Cloud] - Spring Cloud Gateway, Circuit Breaker and Hystrix with in Eureka
2021.07.21 - [Spring/Spring Cloud] - API Gateway (Application Programming Interface)
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS(eureka, Hystrix , zull, ribbon)
2021.07.21 - [Spring/Spring Cloud] - circuit breaker (hystrix and the resilience4j)

 

what is the spring cloud eureka ?

중간계층 서버의 로드벨런싱 및 장애 조치를 위해 서비스를 찾기 위해 AWS 및 클라우드 에서 주로 사용되는 REST 기반 서비스이며, 이를 eureka server 라칭한다.

what is the need eureka?

스프링 클라우드에 접하기전에 사전지식으로는 마이크로소프트 아키텍처에대해 공부해야 한다.(그중에서도 유레카 서비스는 Discovery pattern) 스프링 클라우드의 유레카라는 서비스는 마이크로서비스의 가장 기초가 되는 프로젝트로 넷플릭스에서 이미 사용되었고 지금도 사용중인 서비스 이다. 마이크로서비스를 하다보면 수많은 모듈들의 가지고 있게 되는데 이를 관리하기 쉽게 만든 것이라 생각하면 된다.

요즘과 같이 AWA/AZUR/K8 과 같은 클라우드 및 vm 시스템들을 많이 사용하게 되는데 이서버들에 대한 아이피/포트/인스턴스 정보등을 클라이언트가 모두 관리하기엔 무리가 있다. 서버가 바뀔때마다 클라이언트에서 IP와 PORT 그리고 Instance 정보등을 수정 하는건 리소스 낭비다. 유레카서버비스는 쉽게말해 AWS와 같은 클라우드 시스템에서 마이크로서비스 정보들을 (IP/PORT 등등)한곳에서 관리해주고 로드벨런싱과 실패 처리등을 유연하게 가지기 위한 시스템 이라 보면 된다.

유레카 구성

유레카서비스가 다른 인스턴스 (모듈)들의 정보를 가지고 있어야함으로 두가지로 구분된다.

  • Eureka Client서비스에 등록한뒤에 30초마다 정보를 갱신하는 요청을 날린다.
  • 클라이언트가 90초간 정보갱신을 요청하지 않으면 등록된 내역이 서버에서 삭제된다.
  • 서비스모듈을 유레카 서버에 등록 하는 모듈
  • Eureka Server
  • 유레카 서버로 마이크로 서비스를 관리한다. 유레카 클라이언트를 등록 삭제 관리한다.

유레카는 이렇게 두가지 모듈이 있으다. 위에 언급한 바와 같이 Server 와 Client 모듈로 나뉘게 되는데 Server 모듈을 띄어 두고 client 모듈로 서비스드를 eureka 서버에 등록하여 사용 하게 된다.

또한 유레카서버 모듈을 clustering 하여 replicated 로 구성할 수도 있다. 등록정보와 갱신된 내역은 클러스터 내에 모든 유레카 노드에 복제된다.

Eureka High level Architecture

Non-java service and clients

기본적으로 Netflix 에서 java client를 제공하고, spring boot starter 로 제공하기 때문에 spring boot 사용자라면 해당 library 에 대해 dependence 만 걸어주면된다. 하지만 java platform 이 아닌경우도 있다. 처음에도 언급했듯이 eureka 서비스는 REST based endpoint 를 제공하기 때문에 Non-java clinets 들도 REST end points 를 사용하여 서비스에 등록하고 정보를 쿼리 할 수 있다.

eureka 에서 round-robin 방식의 load balancing 내용이 나오는데 이는 ribbon 을 사용했을때 가능 하다.

refrence

https://netflixtechblog.com/netflix-shares-cloud-load-balancing-and-failover-tool-eureka-c10647ef95e5
https://github.com/Netflix/eureka/wiki
https://cloud.spring.io/spring-cloud-netflix/reference/html/index.html#authenticating-with-the-eureka-server
https://brunch.co.kr/@springboot/451
https://sabarada.tistory.com/61?category=822738

반응형