티스토리 뷰
Neflix Hystrix
마이크로서비스는 작게 분산되어 있어 하나의 서비스의 문제가 연쇄적으로 소비자에게 전파되는것을 막아야한다. 이를 위해 회복성 패턴을 지원하는데, 이를 손쉽게 사용하기 위한 도구로 Netflix 에서 만든 Hystrix 가 있다.
즉, Hystrix는 마이크로 서비스 아키텍처에 회복성 패턴을 지원하는 도구 모음이라고 할 수 있다.
회복성 패턴의 종류
- client-side load balancing
- bulkhead pattern
- circuit breaker pattern
- fallback pattern
Hystrix를 활용한 Circuit breaker & Fallback 구현
전제
- 서비스 디스커버리 ( Eureka )가 구현되어 있다.
- 이 글의 코드를 Base로 작성하였습니다.
세팅
- Spring Web, eureka, openfeign, hystrix 의존성을 추가한다.
- @EnableHystix 어노테이션을 추가한다.
Hystrix Basic
- 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 패턴을 선언적으로 손쉽게 제공한다.
생각
선언적인 방식으로 마이크로 서비스간의 통신을 통한 상호 협력 애플리케이션을 구현해 나가는 것이 단일 서비스를 운영하는 모놀리틱 아키텍처의 서비스의 구현과 크게 다르지 않다는 점에서 비즈니스 로직에 집중하여 코드를 작성할 수 있다는 점을 체감할 수 있었다.
전체 코드
참조
'Infrastructure' 카테고리의 다른 글
[OS] 뮤텍스(Mutex) 와 세마포어(Semaphore) (0) | 2022.09.21 |
---|---|
MQ(Message Queue) 란? (0) | 2022.08.22 |
SPOF(Single Point of Failure) (0) | 2022.08.17 |
RPC(Remote Procedure Call)가 뭐에요? (0) | 2022.08.11 |
암호화(Encryption) 와 해싱(Hashing)의 차이 (0) | 2022.08.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 장애 해결기
- 내부 단편화
- Object Pool
- 세션 불일치
- 수평 분할
- Sticky Session
- SpringBoot 2.2
- pass by reference
- 외부 단편화
- java
- pool
- 뾰족함
- multimap
- pass by value
- 동적 디스패치
- 메모리 단편화
- 객체 풀
- 정적 타입 언어
- 클린 아키텍처
- 컴포짓 패턴
- Clean Architecture
- 메모리 파편화
- RestAssured
- 수직 분할
- Session
- 육각형 아키텍처
- Memory Fragmentation
- 동적 타입 언어
- OOP
- ATDD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함