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 은 무턱대고 실행하지 않고 실패 횟수를 조정하여 특정 횟수 이상이 되면 동작 시킬수도 있다.
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 |