티스토리 뷰
Circuit breaker Pattern
Retry Pattern (재시도 패턴)
클라이언트가 요청한 작업이 실패한 경우 다시 시도하여 성공하였을 때 결과를 반환하는 방식이다.
이러한 방식은 무한적으로 재시도를 하여 시스템 전체에 에러를 전파할 수 있기 때문에, Timeout을 통해 예외처리가 필요하다.
재시도 패턴의 문제점
재시도 패턴은 분산된 환경의 원격 리소스 요청시 요청되는 서비스가 완전히 멈춘 경우에도 여러번 재시도 하게 된다. 때문에 많은 리소스를 오랜 시간 잡고 있어 리소스 낭비가 발생할 수 있으며 이렇게 많은 지연 시간이 생기게 되면 연관된 다른 분산 서비스에도 영향이 전파될 수 있다.
Circuit breaker Pattern ( 회로 차단 패턴 )
회로 차단기 패턴은 실패할 가능성이 있는 작업을 호출을 막아 반복적으로 실행하지 않도록 하여 리소스 낭비를 막고 오류 해결 여부를 지속적으로 체크해 문제 해결시 호출을 다시 가능하게 하는 방법이다.
애플리케이션이 실패할 수 있는 작업을 시도하지 않도록 방지한다.
회로 차단기는 중간에서 프록시 역할을 하면서 애플리케이션 상태 모니터링 통해 실패할 가능성이 있는 애플리케이션인 경우 즉시 실패 시키거나 허용한다.
회로 차단기의 상태
닫힘
요청 작업을 정상적으로 라우팅하고 있는 상태이다. 실패 횟수를 내부적으로 관리하면서 임계치를 넘었을 때는 열림 상태로 변경된다.
실무에서 서비스간 통신이 닫힌 상태에서 대체 로직으로 유도하는 fallback 패턴을 같이 사용한다.
열림
요청작업을 즉시 실패하고 예외를 반환한다.
반열림
열림상태에서 특정 시간이 지나면 반열림 상태가 되어 일정 수의 요청만 허용한다.
이 허용된 요청들을 모니터링 하면서 열림 or 닫힘 상태로 변경을 결정한다.
회로 차단기 패턴의 장점
- 시스템 오류를 복구하는 동안 성능에 영향을 줄인다.
- 대기 시간을 줄여 즉시 응답 처리 할 수 있다.
회로 차단기 패턴의 동작 과정
참조
'BackEnd' 카테고리의 다른 글
Netty VS Tomcat 비교 분석하기 (0) | 2022.11.08 |
---|---|
nGrinder를 활용한 부하 테스트 (2) | 2022.10.05 |
[MSA] 벌크헤드 패턴( Bulkhead Pattern ) (0) | 2022.09.18 |
Fallback Pattern ( 대체 패턴 ) (0) | 2022.09.01 |
[Spring] Memory Leak 발생으로 주기적으로 멈추는 서버 (0) | 2022.06.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- OOP
- 메모리 파편화
- multimap
- 육각형 아키텍처
- 수직 분할
- Memory Fragmentation
- pass by reference
- 장애 해결기
- 외부 단편화
- 내부 단편화
- Sticky Session
- pass by value
- SpringBoot 2.2
- 동적 디스패치
- Clean Architecture
- 수평 분할
- java
- pool
- 메모리 단편화
- 동적 타입 언어
- 뾰족함
- 객체 풀
- ATDD
- 세션 불일치
- Session
- RestAssured
- 클린 아키텍처
- Object Pool
- 정적 타입 언어
- 컴포짓 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함