티스토리 뷰

Neflix Hystrix

마이크로서비스는 작게 분산되어 있어 하나의 서비스의 문제가 연쇄적으로 소비자에게 전파되는것을 막아야한다. 이를 위해 회복성 패턴을 지원하는데, 이를 손쉽게 사용하기 위한 도구로 Netflix 에서 만든 Hystrix 가 있다.
즉, Hystrix는 마이크로 서비스 아키텍처에 회복성 패턴을 지원하는 도구 모음이라고 할 수 있다.

 

회복성 패턴의 종류

 

Hystrix를 활용한 Circuit breaker & Fallback 구현

전제

 

세팅

  • Spring Web, eureka, openfeign, hystrix 의존성을 추가한다.

 

  •  @EnableHystix  어노테이션을 추가한다.

 

 

Hystrix Basic

Feign Client 구현한 Service

 

  • Feign Client를 프록시 패턴으로 구현한다.
  •  @HystrixCommand   어노테이션을 통해 해당 메서드로 Hystrix를 통해 관리된 다는 것을 알린다.
  •  @HystrixCommand( fallbackMethod = "methodName" )    같은 방식으로 fallback Method를 지정함으로서 Circuit Breaker Pattern에 닫힘 상태과 되고 요청이 실패한 경우 회로 차단기에서 해당 요청을 가로채 fallBack Method를 실행하도록 유도한다.

 

Hystrix 를 OpenFeign 과 통합해서 사용하기

추가 설정

  • YAML(야믈) 파일에 feign 과 Circuit Breaker를 통합 사용할 수 있도록 설정한다.

 

 

 

  • Feign Client에 Curcit breaker 가 통합되도록 설정.
  •  @FeignClient ( ... fallback = SpringBean.class )  어노테이션을 통해 Feign 을 선언한 인터페이스의 서브 클래스인 스프링 빈을 지정함으로서 fallback 메소드를 사용할 수 있게 함.

 

정리

  • 마이크로서비스는 작게 분산되어 있어 하나의 서비스의 문제가 연쇄적으로 소비자에게 전파되는것에 주의를 기울여야 한다.
  • Hystrix 는 마이크로서비스간 통신에서 회로 차단 패턴및 Fallback 패턴을 선언적으로 손쉽게 제공한다.

 

생각

선언적인 방식으로 마이크로 서비스간의 통신을 통한 상호 협력 애플리케이션을 구현해 나가는 것이 단일 서비스를 운영하는 모놀리틱 아키텍처의 서비스의 구현과 크게 다르지 않다는 점에서  비즈니스 로직에 집중하여 코드를 작성할 수 있다는 점을 체감할 수 있었다.

 

 

 

전체 코드 

 

참조

 

스프링 마이크로서비스 코딩 공작소 - 교보문고

스프링 부트와 스프링 클라우드를 이용한 마이크로서비스 모범 사례 | 이론은 탄탄하게,실습은 실무에 가깝게! 스프링 부트 + 스프링 클라우드로 시작하자 마이크로서비스는 서비스 개발, 그 이

www.kyobobook.co.kr

 

 

Spring Cloud - Circuit Breaker using Hystrix

Spring Cloud - Circuit Breaker using Hystrix Introduction In a distributed environment, services need to communicate with each other. The communication can either happen synchronously or asynchronously. When services communicate synchronously, there can be

www.tutorialspoint.com

 

댓글