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 |