Microservice 모니터링

Dasole Kwon·2022년 9월 7일
0

Resilience4J

  • Resilience4j는 Netflix Hystrix에서 영감을 얻어 만들어진 라이브러리이다. Java8 및 함수형 프로그래밍을 위해 설계되었고, 라이브러리는 다른 외부 라이브러리 종속성이 없는 Vavr(Vavr core is a functional library for Java. It helps to reduce the amount of code and to increase the robustness)만 사용하기 때문에 가볍다.

Resilience4j에는 Circuit Breaker / Rate Limier / Bulkhead / Retry / Cache / Time Limiter 구현체들이 있다.

CircuitBreaker

  • 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단
  • 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 ->장애 회피
  • circuit breaker가 필요한 이유는,
    누전차단기가 전기사고가 발생하기 전에 전기를 미리 차단하는것과 동일하게, 문제가 있는 마이크로서비스로의 트래픽을 차단하여 전체서비스가 느려지거나 중단되는것을 미리 방지하기 위해서임.
  • 요청 중 지연 된 응답이 몇 퍼센트 이상일 때 서킷의 상태를 Closed에서 Open으로 바꿀지 설정
  • 서킷 상태가 Open일때 CallNotPermittedException과 함께 요청 거절
  • 서킷 상태가 Open이 되면 설정한 시간 이후에 Half_Open으로 바뀌고 설정한 수 만큼 요청을 허용해 서버가 사용 가능 상태인지 확인
  • 서킷 상태를 바꾸는 방식(sliding window)에는 Count-based sliding window, Time-based sliding window 두가지가 있음
  1. Count-based Sliding window: N번의 요청 중 M번 실패 했을 때 실패율(Failure Rate)이 설정값(FailureRateThreshold)보다 클 경우 서킷 상태를 Open으로 변경 시키는 방식
  2. Time-based sliding window: N번의 요청 중 요청 시간이 M시간을 초과하는 퍼센트(Slow Call Rate)가 설정값(SlowCallRateThreshold)보다 클 경우 서킷 상태를 Open으로 변경 시키는 방식

Zipkin

  • Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템(오픈소스)
  • Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악
  • Collector, Query Service, DataBasem WebUI로 구성
  • Span
    -하나의 요청에 사용되는 작업의 단위
    -64 bit unique ID
  • Trace
    -트리 구조로 이뤄진 Span 셋
    -하나의 요청에 대한 같은 Trace ID발급

Turbine Server
마이크로서비스에 설치된 Hystrix클라이언트의 스트림을 통합

  • 마이크로서비스에서 생성되는 Hystrix클라이언트 스트림 메시지를 터빈 서버로 수집

가상화(Virtualization)란?

  • 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공
    -플랫폼
    -리소스 가상화

0개의 댓글

관련 채용 정보