잘 정리해보자

Spring Cloud 개념 본문

Spring/Spring Boot

Spring Cloud 개념

토마토오이 2021. 4. 9. 17:17

 

Zuul (API Gateway)

: web에서 백엔드 서비스 호출 시 거치는 gateway 역할의 어플리케이션.

MSA의 동적 라우팅, 모니터링, 보안 등 담당

 

- 동적 라우팅 : 호출하는 시점에 따라 백엔드의 핸들러를 호출

- 모니터링 : 어떤 서비스 호출되는지 모니터링

- 인증과 보안 : MSA에서 인증 구현으로, 모든 서비스에 보안 구성

 

 

 

Eureka

 : Cloud 환경에서 서비스의 로드밸런싱, 실패처리 등 유연한 처리를 위해 각 서비스들의 정보(IP, Port, InstanceID) 을 포함한 REST 기반 미들웨어 서버 MSA 기반 아키텍처로, Client-Server 방식

  -> Eureka client 가 server로 instance 정보들을 Eureka 서버로 등록 후, Eureka 의 정보를 client로 전달하며 REST 통신

 

1. 등록

Eureka client 는 실행중인 instance 정보를 Eureka Server로 등록. (REST 통신을 통해 등록)

 

2. 갱신

Eureka client 는 설정된 시간 (ex : 30초) 주기로 Server로 통신을 보내며, Server에서 정해진 시간동안 받지 못하면 Server 저장소에서 정보 제거됨.

 

3. 등록 정보 획득

Eureka client 는 서버 올라올 때 Server 모든 정보를 local cache에 저장하며, 그 정보로 http 통신에 이용.

local cache 저장된 정보는 30초 갱신을 통해 부분업데이트 진행.

 

4. 취소

서비스 종료 시, client -> server로 instance 삭제를 요청.

server에서 정해진 시간동안 cllient로부터 갱신이 없으면 자동으로 instance 삭제.

 


 

Eureka Server (서비스 정보 관리 서버)

Eureka Client - Zuul (서비스 게이트웨이)

Eureka Client - Service (로직 실행 서비스)

 

1. 각 서비스들(Service, Zuul) 은 정보 (IP,Port,InstanceID 등) 을 Eureka Server 로 등록

2. 정보 사용 시, Zuul을 통해 Server로 정보 요청

3. 해당 정보를 Server로부터 받은 후 Zuul -> Service로 통신

 

 

 

 


 

 

Hystrix 

: MSA Cloud 환경에서 발생되는 여러 장애상황을 견딜 수 있게 한다.

 

1. 다른 서비스 실패로 발생되는 지연과 실패를 방지 (분산 시스템의 연쇄적 실패 방지)

2. 빠른 실패와 빠른 복구

3. real-time 에 유사한 모니터링과 알림

 

- container의 thread를 직접 사용하지 못하게 한다.

- circuit-breaker 같은 독립적 기술로 외부 장애의 영향을 최소화

 

 

 

Ribbon 

: Spring Cloud Client의 Load Balancer 이다. (L4 스위치 같은 역할)

 

구성요소 - Rule, Ping, ServerList

 

1. ServerList

: 로드 밸런싱 대상 서버 목록, Eureka 기반으로 동적으로 설정 가능

 

2. Rule

: 요청을 보낼 서버 선택

 

3. Ping

: ServerList 가 살아있는지 체크

 

4. Retry

: 서버로부터 응답 못받은 경우 동일한 서버로 재시도하거나 다른 서버로 재시도

 

 

 

 

 

 

 

 

Eureka 설명 : https://sabarada.tistory.com/61?category=822738

Hystrix설명 : https://sabarada.tistory.com/52

Ribbon 설명 : https://sabarada.tistory.com/54?category=822738

Comments