본문 바로가기

빗썸 테크코스 아카데미/2주차(WebFlux)

Circuit Breaker - resilience4j

Circuit Breaker 

  • 개별 모듈 장애로 인한 서비스 장애를 방지하기 위해 나온패턴이 서킷브레이커
  • 전기 회로 차단기의 개념을 차용한 패턴으로 전기 흐름에 문제없으면 close
  • 문제가 생기면 open하여 흐름을 차단

 

 

Circuit Breaker의 상태

  • 정상 상태 : Closed
  • 오류 상태 : Open
  • 반열림 상태 : Half Open (일부 request만 실행해보면서 기능이 다시 정상적으로 동작하는지 확인하는 과정)

 

3가지 상태 전환 과정

  • Closed 상태
    • 특정 모듈이 요청한 결과(성공/실패)를 기록.
    • 실패 횟수(또는 시간)가 임계치에 도달했을시 Open 상태로 전환
  • Open 상태
    • 지정된 시간만큼 open 상태를 유지하며
    • 요청에 대해 지정된 결과를 응답한다.(예외를 던지거나 임시복구 데이터를 응답한다.)
  • Half Open 상태
    • Open 상태가 종료되면, 조금씩 요청을 받아 처리한다.
    • 요청 결과가 성공적이면 Closed 상태로 전환

어떤 라이브러리를 사용할까?

  • 넷플릭스에서 개발한 Hystrix가 있는데 개발하지않고 유지보수만한다고 함. resilience4j를 추천.
  • resilience4j는 hystrix의 경량화된 버전으로 사용하기 쉽고, 자유도도 높다

사용 예

resilience4j:
  circuitbreaker:
    configs:
      default:
        failureRateThreshold: 50
        waitDurationInOpenState: 10s
        registerHealthIndicator: true
        minimumNumberOfCalls: 5
    instances:
      testCircuitBreaker:
        baseConfig: default
  • failureRateThreshld : 임계값을 나타낸 경우이고 위의 경우 50%가 넘을 경우 Open 상태로 전환
  • waitDurationInOpenStat : Open 상태 유지 시간. 위의 경우 10초동안 유지
  • minumumNumberOfCalls : 실패를 계산하기 위한 최소한의 호출 수. 위의 경우 최소 5번에서 3번은 실패해야 Open상태로 넘어간다
  • registerHealthIndicator : actuator를 통해 circuitbreaker상태를 확인하기 위해서 설정.

'빗썸 테크코스 아카데미 > 2주차(WebFlux)' 카테고리의 다른 글

WebFlux(User service 구현)  (0) 2022.05.09
Eureka Server  (0) 2022.05.09
API Gateway  (0) 2022.05.09