-
[Resilience4j] Circuit Breaker Config 정리📖 개발 공부 2023. 3. 19. 19:07
property default value description failureRateThreshold 50 실패한 호출에 대한 임계값으로 이 값을 초과하면 서킷이 열린다. slowCallDurationThreshold 60000 [ms] 호출 시간이 설정한 값보다 길면 slow call로 판단한다. slowCallRateThreshold 100 slow call 비율이 설정한 값보다 크거나 같으면 OPEN 상태로 바뀌고 호출을 차단한다. minimumNumberOfCalls 100 failure/slow rate을 계산하기 위한 최소 호출 수 waitDurationInOpenState 60000 [ms] OPEN → HALF_OPEN 으로 변경 되기까지 대기 시간 recordExceptions empty 서킷 작동에 영향을 주는 예외 리스트
리스트에 등록된 예외 중에서만 서킷 작동에 영향을 준다.ignoreExceptions empty 서킷 작동에 영향을 주지 않는 예외 리스트 slidingWindowType COUNT_BASED 서킷브레이커가 닫힐 때 호출 결과를 기록하는데 사용하는 슬라이딩 윈도우의 유형
- COUNT_BASED: 호출 오류 횟수 기준
- TIME_BASED: 호출 응답 시간 기준slidingWindowSize 100 슬라이딩 윈도우의 크기
- COUNT_BASED: 마지막 100개의 호출을 기준으로 임계치를 측정한다.
- TIME_BASED: 마지막 100초의 호출을 기준으로 임계치를 측정한다permittedNumberOfCallsInHalfOpenState 10 HALF_OPEN 상태일 때 허용할 호출 횟수다. yml 파일로 서킷 브레이커 설정한 예시
resilience4j: circuitbreaker: configs: default: sliding-window-type: TIME_BASED # 마지막 60초의 요청들로 상태를 판단한다. sliding-window-size: 60 # 실패율 90%를 초과하면 OPEN 상태가 된다. failure-rate-threshold: 90 # 호출 시간이 500ms를 초과하면 slow call로 판단한다. slow-call-duration-threshold: 500 # 이 리스트에 등록된 예외 중에서만 서킷 작동에 영향을 준다. record-exceptions: - com.~~.exception.TimeoutException instances: # 특정 서킷 브레이커에 대해 custom 설정 example-circuitbreaker-name: base-config: default # 해당 서킷 브레이커에만 느린 호출의 임계값을 500ms -> 2000ms로 늘린다. slow-call-duration-threshold: 2000
서킷이 작동하여 OPEN 상태가 되면 CallNotPermittedException 예외가 발생하게 된다.
fallback 메서드를 구현하여 예외를 발생시키지 않고, 다른 값을 리턴하도록 할 수 있고, 호출하는 쪽에서 CallNotPermittedException 예외를 핸들링할 수 있다.
🔗 참고 링크
반응형'📖 개발 공부' 카테고리의 다른 글
intellij로 디버깅 하기 (0) 2023.06.06 배포 전략 (Rolling Update, Blue/Green, Canary) (0) 2023.04.09 Eventual Consistency (0) 2023.04.01 [Memcached] slab allocator (0) 2023.03.19 Circuit Breaker (서킷 브레이커) (0) 2023.02.17