새소식

반응형
MSA

Circuit Breaker - Hystrix

  • -
반응형

 

Hystrix는 넷플릭스(Netflix)에서 개발한 서킷 브레이커(Circuit Breaker) 패턴을 구현한 라이브러리로, 

마이크로서비스 아키텍처(MSA) 환경에서 장애 전파를 방지하고 애플리케이션의 안정성을 높이기 위해 사용된다.

 

Netflix는 마이크로서비스 환경에서 장애 전파를 막고 서비스 신뢰성을 높이는 역할을 하는 이 라이브러리를 만들면서, 

자신을 보호하는 고슴도치의 특성과 비슷하다고 생각해서 "Hystrix"라고 이름을 붙였다고 한다.
-> 즉, 고슴도치처럼 장애를 방어하고, 서킷을 닫았다가 다시 열어주는 역할을 한다는 의미에서 지어진 이름

 

  • 서킷 브레이커 (Circuit Breaker)
    • 호출하는 외부 서비스(API, DB 등)에 장애가 발생하면 즉시 차단하고 빠르게 실패 처리함.
      일정 시간이 지나면 다시 요청을 시도하여 장애가 복구되었는지 확인.
  • 타임아웃(Timeouts)
    • 응답 시간이 너무 길어지면 자동으로 요청을 취소함.
      느린 응답을 기다리지 않도록 하여 시스템 성능을 보장.
  • 폴백(Fallback) 메커니즘
    • 외부 서비스가 실패할 경우, 대체 응답(Fallback Response)을 제공할 수 있음.
      예: 사용자 정보 조회 API가 실패하면 기본값을 반환하는 방식.
  • 모니터링(Monitoring & Metrics)
    • Hystrix Dashboard 또는 Turbine을 사용하여 실행 상태를 모니터링할 수 있음.

 

  • org.springframework.cloud:spring-cloud-starter-netflix-hystrix
  • fallback 설정 방법
@Service public class UserService { @HystrixCommand(fallbackMethod = "getDefaultUser") public String getUserInfo() { if (Math.random() > 0.5) { // 50% 확률로 실패 시뮬레이션 throw new RuntimeException("Service is down!"); } return "User Data"; public String getDefaultUser() { // 장애 발생 시 대체 응답 return "Default User"; } }

 

circuit breaker 설정은 기본적으로 enable 

설정값 기본값 설명
circuitBreaker.enabled true 서킷 브레이커 기능 활성화 여부
circuitBreaker.requestVolumeThreshold 20 최소 20개 요청이 있어야 서킷 브레이커가 동작
circuitBreaker.errorThresholdPercentage 50 실패율이 50% 이상이면 서킷을 OPEN 상태로 변경
circuitBreaker.sleepWindowInMilliseconds 5000 5초 후 HALF-OPEN 상태로 변경하여 일부 요청 허용
circuitBreaker.forceOpen false true이면 서킷을 강제로 항상 OPEN 상태로 유지
circuitBreaker.forceClosed false true이면 서킷을 강제로 항상 CLOSED 상태로 유지
execution.isolation.strategy THREAD 격리 방식 (기본값: THREAD, 옵션: SEMAPHORE)
execution.timeout.enabled true 실행 시간 제한 활성화 여부
execution.isolation.thread.timeoutInMilliseconds 1000 실행 시간이 1초(1000ms)를 초과하면 실패로 간주
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.