Cloud

Netflix Component 설명

Jungsoomin :) 2020. 12. 7. 15:20
  • Eureka Server 와 Java 기반 클라이언트 구성요소인 Eureka Client로 제공 됨
  • Eureka Client 에는 로드 밸런서 내장
  • Eureka 를 감싸는 로드밸런서는 트래픽,리소스,오류조건 과 같은 요소를 기반으로 로드밸런싱을 제공

클라우드의 본질적 문제인 포트 및 주소 동적할당으로 클라이언트가 호출할 서비스 주소를 알수가 없음

 

이를 해결하고 로드밸런싱을 하기위해서는 서비스 정보를 가진 Registry 가 필요했고 그 것이 Eureka

 


통신

  • Eureka Client 를 내장한 ApplicationService 와 Client 가 Eureka Service 에 등록을 요청
  • 30 초 마다 HeartBeat 를 보냄
  • Eureka Client 의 등록정보, 갱신정보는 클러스터의 모든 유레카 노드에 복제되어 클라이언트는 레지스트리에 접근하여 서비스를 찾아 원격 호출 함


Zuul

  • 거대한 일체형 어플리케이션이 분산됨에 따라 다양한 요청정보를 받기위한 진입 창구가 필요 해졌음.

 


동작방식

  • Pre Filter : 라우팅 직전에 작동 / 인증 , OriginServer 선택, 디버그, 로깅 등 처리
  • Routing Filter : 요청을 Origin Server 로 라우팅시킴, Ribbon 이 사용됨
  • Post Filter : 요청 라우팅 이후 실행
  • Error Filter : 단계중 하나에서 오류가 나면 실행 됨.


기능

  • Filter 를 기반으로 Edge Service에 기능적용 가능
  • 인증, 보안 : 자원에 대한 인증으로 맞지않을시 거부
  • 모니터링 : 다른 구성요소들과 같이 작동하여 데이터, 통계추적

모니터링 기능과 움직이는 컴포넌트

  • Hystrix : 문제 발생시 트래픽 차단
  • Ribbon : Zull의 요청에대한 클라이언트 / 네트워크 성능 , 오류에 대한 자세한 정보제공, 시스템 부하 분산
  • Turbin : 실시간으로 세분화한 매트릭 집계
  • Archaius : 속성을 동적으로 변경
  • 동적 필터링으로 원하는 요청에 대한 디버깅 가능
  • Stress Test : 필터 내의 Archaius 를 사용하여 서버로 라우팅되는 트래픽을 지속적으로 증가시킴, 성능과 용량을 측정하여 피크 타이밍에 필요한 인스턴스 등의 정보를 알려줌
  • Multi-Region 복원 : Isthmus , ELB 가동 중간 같은 문제를 견디도록 다른 지역에 호스팅된 ELB 세트를 사용하게 함

Ribbon

  • Eureka 와 같이 사용되는 클라이언트 로드 밸런서
  • 다중 지역, 다중 영역 배포 아키택쳐를 가진다.
  • 요청을 서비스 상황에 맞게 줄 세워준다.
  • Ribbon Client 는 대상 서비스 각각에 대하여 생성되고 구성 된다.
  • 연결시간 제한, 재시도, 재시도 알고리즘 등의 구성요소를 가짐
  • 밸런싱 전략은 여러가지가 있으나 Zone Aware Round Robin 로드밸런서 로 설명
  • Zone Aware Round Robin 로드밸런서는 Amazon Cloud 에서 운영한 경험을 토대로 구축된 통신매커니즘을 제공
  • Zone Affinity ( 지역선호도 ) 에 따라 특정한 인스턴스를 선호하도록 구성 됨
  • 그로 인해 특정 Zone 이 운영 중단 되어도 탄력적으로 대응이 가능해 짐.

  • 로드밸런서는 가능한 모든 Zone 의 통계를 계산하고 검사함.
  • 활성 요청이 임계 값에 도달하면 Zone 은 활성 목록에서 삭제 됨
  • 삭제된 Zone 이외의 Zone 중에서 인스턴스 수에 비례하여 Zone을 선택한다.


Hystrix

  • 서비스 사이의 접근 지점 격리를 통해 계단식 오류 전파 방지, fallBack 옵션을 제공하여 서비스 복원력을 향상 시킴
  • Third-Party Lib 을 통하여 종속성에 대해 보호하고 장애를 제어함
  • 실패를 빠르게 복원
  • 실시간 모니터링을 제공함

회로차단 ( Circuit Breaker )

  • MSA 는 수십가지 종속성을 가지며, 실패할 시점이 존재함. 그러므로 액세스 지점을 격리시켜야 함
  • 대용량 트레픽 발생시 하나의 의존에 대한 모든 서버에서 리소스가 포화가 날 수 있음.
  • 무엇보다 심각한 것은 오류가 전파되는 것

  • 그러므로 종속 성과 Client Request 쓰레드 사이에 회로차단기를 설치하는 것이다.
  • 쓰레드 풀, 타임아웃, 로직실패 등을 탐지. 실패가 난다면 빠르게 fallBack을 실행시킨다.


Spring Cloud Netflix

 

Spring Boot 프로젝트와 NetflixOSS 를 쉽게 통합하도록 Spring Cloud Netflix 를 만들었음.

 

'Cloud' 카테고리의 다른 글

Zuul  (0) 2020.12.07
Eureka  (0) 2020.12.07
Netflix Components  (0) 2020.12.07
DiscoveryClient 를 이용한 API 콜  (0) 2020.12.07
유레카서버, 등록방법  (0) 2020.12.05