본문 바로가기
Spring/Spring Cloud

circuit breaker (hystrix and the resilience4j)

by 아이티.파머 2021. 7. 21.
반응형

2021.07.21 - [Spring/Spring Cloud] - Spring Cloud
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS 와 Spring Cloud 의 ecosystem
2021.07.21 - [Spring/Spring Cloud] - spring cloud eureka
2021.07.21 - [Spring/Spring Cloud] - Spring Cloud Gateway, Circuit Breaker and Hystrix with in Eureka
2021.07.21 - [Spring/Spring Cloud] - API Gateway (Application Programming Interface)
2021.07.21 - [Spring/Spring Cloud] - Netflix OSS(eureka, Hystrix , zull, ribbon)
2021.07.21 - [Spring/Spring Cloud] - circuit breaker (hystrix and the resilience4j)

 

what is the circuit breaker ?

ccircuit breaker 는 직역하자면 회로차단기이다. 전기가 만이 들어 왔들때 누전차단기가 내려가 다른 것들이 계단식으로 망가지는 것을 차단한다.

시스템에서는 A시스템에서 B시스템으로 호출하고 또 N..시스템 까지 원격으로 호출하는 시스템이 일반적이다. 메모리 내에서 호출하는 시스템과 원격호출의 가장큰 차이첨중 하나는 원격호출이 실패하거나 일부 시간 제한에 도달할때까지 아무 응닶없이 중단 될수 있다는 것이다.

이보다 더 나쁜 것은 호출후 응답하지 않는 공급 업체에 많은 호출을 주게 될경우 공급업체의 서버 리소스가 부족하여 버티지 못하고 시스템에서 계단식 오류가 발생될 수 있다. 그래서 등장한게 써킷 브레이커이다.

서킷브레이커의 동작원리는 간단하다. 호출하는 특정 메소드에 서킷브레이커로 감싸서 감시한다. 공급업체에게 호출하고 아무 응답이 정상적이라면 통과, 응답이 없거나 타임 아웃 오류가 발생한경우 Trip을 발생시켜 curcirt open 을 실행한다.

curcit open 은 무턱대고 실행하지 않고 실패 횟수를 조정하여 특정 횟수 이상이 되면 동작 시킬수도 있다.

https://martinfowler.com/bliki/CircuitBreaker.html

 

curcit open 되고 나서 정상화(close)가 어떻게 되는가 ?

서킷이 오픈된 상태에서 설정된 시간이 지나게 되면 반 개방상태로 변경되며 여기에서 클라이 언트 호출을 받을수 있다. 이때 반개방 상태에서 정의한 호출수 많큼의 호출을 정상적으로 들이고 정상수행 되면 정상(CLOSED )상태로 변경된다.

상태값과 상태값 전이

Circuit Breaker 의 상태값에는 3가지 상태 값이 있다.

  • CLOSED : 정상
  • OPEN : circuit 이 열려 있는 상태 , 제공자 서버 불안정
  • HALF_OPEN : 오류 상태에서 정상 상태 여부 판단을 하기 위한 반 열림 상태

Why should use circuit breaker

작업이 실패한 가능성이 높은 어플리케이션에서 원격호출을 할때?

conculsion

https://martinfowler.com/bliki/CircuitBreaker.html

https://docs.microsoft.com/ko-kr/azure/architecture/patterns/circuit-breaker

반응형

'Spring > Spring Cloud' 카테고리의 다른 글

open feign log 설정  (0) 2022.01.14
Spring Open Feign  (0) 2022.01.14
Netflix OSS(eureka, Hystrix , zull, ribbon)  (0) 2021.07.21
API Gateway (Application Programming Interface)  (0) 2021.07.21
spring cloud eureka  (0) 2021.07.21