Blog
강의 리뷰
Resilience4j

Resilience4j

주요기능

  • Retry : 실패시 재시도
  • CircuitBreaker : 회로 차단에서 유래, 실패시 수행할 다른 동작을 수행 (Open, Half-Open, Close)

Retry

RetryException이 발생하면

CircuitBreaker

예를 들어서 강의 정보를 가져오는 API를 요청했을 때 강의 평점을 받아오는 요청이 오래 걸린다면 전체 API 실패가 아니라 강의평점 정보를 제외한 나머지 정보를 정상적으로 가져오게 함. 이러한 장애 핸들링을 처리하기 위해서 사용하는게 CircuitBreaker.

Circuit의 3가지 상태

CircuitBreaker에 의해 관리되는 상태Circuit이라고 함.

  • OPEN : 차단된 상태
  • CLOSE : 정상적인 상태
  • HALF_OPEN : 차단된 상태에서 정상적인 상태로 갈 수 있는지 점검하는 상태

CircuitBreaker의 주요옵션

  • SlidingWindow
    • COUNT_BASED(default) : 최근 몇 번의 실패율을 계산(만약 10이라면 10번 중 실패가 몇 번인지로 CircuitBreaker의 상태 결정)
    • TIME_BASED : 최근 몇 초간의 실패율을 계산
  • failureRateThreshold(70) : 실패율 임계치, 퍼센트 단위로 디폴트는 70%가 실패하면 열림
  • slidingWindowSize(10) : 실패율을 계산할 sliding window 크기
  • minimumNumberOfCalls(10) : CircuitBreaker가 열리기 전 최소 호출 횟수
  • waitDurationInOpenState : CircuitBreaker가 열린 후 다시 닫히기까지 대기시간