잘 정리해보자
Spring Cloud 개념 본문
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
'Spring > Spring Boot' 카테고리의 다른 글
https Error - PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException (0) | 2022.01.10 |
---|---|
Spring Batch Error : Cannot change the ExecutorType when there is an existing transaction (0) | 2022.01.10 |
Nginx Error - 504 Gateway Time-out (0) | 2022.01.10 |
Spring Boot에 Swagger 적용 (3.0) (0) | 2022.01.05 |
Annotation 정리 (0) | 2021.04.09 |