MSA Circuit Breaker - Hystrix - 반응형 Hystrix는 넷플릭스(Netflix)에서 개발한 서킷 브레이커(Circuit Breaker) 패턴을 구현한 라이브러리로, 마이크로서비스 아키텍처(MSA) 환경에서 장애 전파를 방지하고 애플리케이션의 안정성을 높이기 위해 사용된다. Netflix는 마이크로서비스 환경에서 장애 전파를 막고 서비스 신뢰성을 높이는 역할을 하는 이 라이브러리를 만들면서, 자신을 보호하는 고슴도치의 특성과 비슷하다고 생각해서 "Hystrix"라고 이름을 붙였다고 한다.-> 즉, 고슴도치처럼 장애를 방어하고, 서킷을 닫았다가 다시 열어주는 역할을 한다는 의미에서 지어진 이름 Hystrix의 주요 기능 서킷 브레이커 (Circuit Breaker) 호출하는 외부 서비스(API, DB 등)에 장애가 발생하면 즉시 차단하고 빠르게 실패 처리함.일정 시간이 지나면 다시 요청을 시도하여 장애가 복구되었는지 확인. 타임아웃(Timeouts) 응답 시간이 너무 길어지면 자동으로 요청을 취소함.느린 응답을 기다리지 않도록 하여 시스템 성능을 보장. 폴백(Fallback) 메커니즘 외부 서비스가 실패할 경우, 대체 응답(Fallback Response)을 제공할 수 있음.예: 사용자 정보 조회 API가 실패하면 기본값을 반환하는 방식. 모니터링(Monitoring & Metrics) Hystrix Dashboard 또는 Turbine을 사용하여 실행 상태를 모니터링할 수 있음. SpringBoot 사용 예시 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)를 초과하면 실패로 간주 반응형 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기my story 저작자표시 Contents Hystrix의 주요 기능 SpringBoot사용예시 관련기본값 당신이 좋아할만한 콘텐츠 [MSA] Service Mesh란 2024.03.03 [MSA] Prometheus Grafana 구성 및 특징 2024.02.23 [MSA] Prometheus Grafana docker 설치 2024.02.18 [MSA] Envoy 구조 및 주요 용어 정리 2024.02.10 댓글 0 + 이전 댓글 더보기