Resilientce4J는 MSA를 구성하는 마이크로 서비스가 겪을 수 있는 장애 상황을 대비하기 위해 설계된 자바용 내결함성 라이브러리이다.
cf)내결함성 : 시스템의 일부 구성 요소가 작동하지 않더라도 계속 작동할 수 있는 기능
MSA 장애, 장애 대응: MSA는 여러개의 마이크로 서비스가 서로 호출을 하며 하나의 시스템을 이루는데, 각각의 MS는 무응답, 지연(응답이 오긴하는데, 늦게 옴)같은 상황을 발생할 수 있다. 따라서 위 상황이 발생할 때 해당 부분 MS(요청을 보냈을 때 무응답, 지연응답을 받는 MS를 말함)에 circuit을 open하여 일시적으로 다른 작업을 처리하도록 하는 MSA 장애 대응을 진행해야한다.
cf)circuit open : 요청을 보내지 않는 상태
Resilience4J가 지원하는 모듈
1. circuit-breaker : 핵심 모듈로 장애 또는 지연 상황에서 circuit을 일시적으로 오픈하는 기능을 제공한다
서킷을 오픈 하는 조건 - 실패(호출 후 특정 비율 이상 실패) / 지연(호출 후 특정 비율 이상 지연)
cf)circuit-breaker는 슬라이딩 윈도우 기법을 통해 응답에 대한 실패 및 지연 개수를 측정한다. 따라서 윈도우 터널내에 있는 지연이나 실패의 개수가 특정 비율을 넘으면 open해주는 방식이다.
CLOSED : 평상시 상태 - 기존의 메소드를 실행한다.
OPEN : 평상시 상태에서 사용자가 설정한 임계치 이상의 지연율 및 실패율이 달성되면 회로를 끊어버린 상태 - 대체 메소드를 실행한다.
HALP_OPEN : OPEN 상태에서 설정한 시간이 지난 후 HALF_OPEN 상태로 전환된다. HALF_OPEN 상태는 CLOSED 또는 OPEN 상태로 전환을 판단한다. - 일부는 기존 메소드, 일부는 대체 메소드 실행한다.
2. fall-back : circuit-breaker가 실패 또는 지연 상황 발생으로 circuit을 open할 경우 대비책으로 동작할 메소드 설정
3. retey : 실패한 요청을 일정 시간 이후에 재시도하는 모듈
4. bulk-head : 병렬 실행 제한을 위한 모듈
5. rate-limiter : 마이크로 서비스 내부 실해 중 일정 비율 이상의 부하를 막기 위한 속도 제한 모듈
6. time-limiter : 마이크로 서비스 내부 실행 중 일정 시간 이상의 지연을 막기 위한 시간 제한 모듈
cf)circuit breaker에서 차이점은 circuit breaker는 다른 MS와 통신할 때의 지연이지만, time-limiter는 내부적으로 실행되었을 때의 지연시간을 의미한다.
7. cache : 요청에 대한 결과 저장(캐싱)을 위한 모듈
'Spring Boot > MSA' 카테고리의 다른 글
Spring Boot MSA OpenFeign (0) | 2024.07.20 |
---|---|
Spring Boot Resilience4J (0) | 2024.05.07 |
Spring Boot MSA 게이트웨이 필터 (1) | 2024.04.27 |
Spring Boot MSA 게이트웨이 라우팅 추가 (actuator) (0) | 2024.04.26 |
Spring Boot MSA GateWay 설정 (0) | 2024.04.26 |