Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

장애 처리와 Microservice 분산 추적

장애 처리와 Microservice 분산 추적

Microservice 통신 시 연쇄 오류

  • img.png
  • img_1.png

CircuitBreaker

Spring Cloud Betflix Hystrix

  • Spring Cloud Netflix Hystrix
    • pom.xml (User-ws)
      • img_5.png
    • Application.java (User-ws)
      • img_6.png
    • application.yml (User-ws)
      • img_7.png
  • Hystrix 지원 끝 Resilience4j 사용
    • img_8.png

Resilience4j

Resilience4j – CircuitBreaker

  • DefaultConfiguration
    • pom.xml
      • img_10.png
    • UserServiceImpl.java
      • img_11.png
      • img_12.png
    • img_13.png
  • Customize CircuitBreakerFactory -> Resilience4JCircuitBreakerFactory
    • img_14.png
    • img_15.png

Microservice 분산 추적

  • Zipkin
    • https://zipkin.io/
    • Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스)
    • Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악
    • Collector, Query Service, Databasem WebUI로 구성
    • Span
      • 하나의 요청에 사용되는 작업의 단위
      • 64 bit unique ID
    • Trace
      • 트리 구조로 이뤄진 Span 셋
      • 하나의 요청에 대한 같은 Trace ID 발급
    • img_16.png
  • Spring Cloud Sleuth
    • 스프링 부트 애플리케이션을 Zipkin과 연동
    • 요청 값에 따른 Trace ID, Span ID 부여
    • Trace와 Span Ids를 로그에 추가 가능
      • servlet filter
      • rest template
      • scheduled actions
      • message channels
      • feign client
  • Spring Cloud Sleuth + Zipkin
    • img_17.png
  • Zipkin server 설치
    • img_18.png
    • img_19.png
  • Zipkin server 기동
    • img_20.png
    • img_21.png

Users Microservice 수정

  • img_22.png
  • Trace ID and Span ID
    • img_23.png
    • img_24.png
    • img_25.png
    • img_26.png
  • Zipkin server 활용
    • img_27.png
    • img_28.png
  • Zipkin에서의 추적
    • img_29.png
  • Orders Microservice 장애 발생
    • img_30.png
    • img_31.png
    • img_32.png

© 2020. All rights reserved.

SIKSIK