728x90
Appendix
Hystrix - Circuit Breaker
Hystrix Circuit Breaker 란
- Command 내부에서 실행된 사용자 코드(메소드)에서 발생한 Exception의 횟수의 통계를 집계
- 일정 시간 동안 일정 개수 이상의 호출이 발생한 경우, 일정 비율 이상의 에러가 발생하면 Circuit Open
- Circuit이 Open된 동안은 메서드를 호출하여도 실행하지 않고 막바로 Exception 발생(Fast Fail)
- 일정 시간 경과 후에 단 한개의 요청에 대해서 호출을 허용하며(Half Open), 이 호출이 성공하면 Circuit Close
API Routing in Zuul
Eureka + Ribbon 기반으로
API 서버를 찾아서(via Eureka)
Load Balancing까지 수행해서(via Ribbon) API를 Routing
특정 API 한개가 이상이 생긴다면
API 한개에 오류가 발생한 경우
Ribbon은 Retry로 다른 서버를 호출하겠지만...
그 서버에서도 오류가 발생!
Spring Cloud Feign 사용한 API Server에서는
- Method 단위 Circuit Breaker
- 해당 REST API Method가 Circuit Open으로 조기 차단
- Fallback을 통한 응답
Zuul 직접 호출한 경우는
- Zuul에서 Circuit Breaker는 서버군 단위
- Circuit Breaker는 열리지 않음
- Timeout, Isolation으로 Zuul 서버 자체는 보호
Hystrix 모니터링
Hystrix를 사용하는 환경에서는 Hystrix Metrics 정보가 중요한 모니터링의 대상
- Circuit Breaker의 상태
- 에러 비율, Open/Close, 지연시간
- Thread Pool의 상태
Spring Cloud에서는 Netflix Turbine을 손쉽게 구축
- 방식1) Turbine -> API Server
- 방식2) API Server -> MQ -> Turbine
Hystrix 모니터링 추가 구현
Circuit 의 Open/Close의 알람
- RabbitMQ 메세지를 읽어드려 Alarm 통지 구현하여 사용중
728x90
'SpringCloud' 카테고리의 다른 글
[Spring Cloud로 개발하는 마이크로서비스 애플리케이션] 1. Microservice 소개 (0) | 2021.08.01 |
---|---|
AWS 기반 Spring Cloud Config + Cloud Bus Kafka + Config Monitor 구성 (0) | 2021.07.23 |
[11번가 Spring Cloud 기반 MSA로의 전환] 6. 모니터링 (0) | 2021.02.08 |
[11번가 Spring Cloud 기반 MSA로의 전환] 5. 11번가 MSA 환경 구성 (0) | 2021.02.08 |
[11번가 Spring Cloud 기반 MSA로의 전환] 4. 장애 시나리오 (0) | 2021.02.08 |
댓글