Section 13: 장애 처리와 Microservice 분산 추적 - KwangtaekJung/MSA-SpringCloud-user-service GitHub Wiki
Section 13: 장애 처리와 Microservice 분산 추적
- CircuitBreaker
- Resilience4j
- Distributd Tracing
- Trace ID and Span ID
- Zipkin server 활용
Microservice 통신 시 연쇄 오류
- Order Service가 정상 동작하지 않는 상황에서 User Service에서 Get User하면 500 발생함.
- `java.net.UnknownHostException: order-service'
CircuitBreaker
- 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단
- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 -> 장애 회피
Spring Cloud Netflix Hystrix
- Spring Cloud Netflix Hystrix <= 더 이상 지원하지 않음.
- 대체제로 Resilience4j를 사용
Microservice 분산 추적
-
Zipkin
- https://zipkin.io/
- Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈 소스)
- Google Drapper에서 발전하였으며, 분산 환경에서의 시스템 병목 현상 파악
- Collector, Query Service, Database WebUI로 구성
- Span
- 하나의 요청에 사용되는 작업의 단위
- 64 bit unique ID
- Trace
- 트리 구조로 이루어진 Span 셋
- 하나의 요청에 대한 같은 Trace ID 발급
-
Spring Cloud Sleuth
- 스프링 부트 애플리케이션을 Zipkin과 연동
- 요청 값에 따른 Trace ID, Span ID 부여
- Trace와 Span Ids를 로그에 추가 가능
- servlet fileter
- rest template
- scheduled actions
- message channels
- feign client
-
Spring Cloud Sleuth + Zipkin
-
Zipkin server 설치
- 다운로드: C:\WorkSpace\tools>curl -sSL https://zipkin.io/quickstart.sh | bash -s
- 실행: java -jar zipkin.jar