SpringCloud

[11번가 Spring Cloud 기반 MSA로의 전환] 7. Appendix

nineDeveloper 2021. 2. 8.
728x90

Appendix


youtu.be/J-VP0WFEQsY?t=4023


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

댓글

💲 추천 글