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

+ Recent posts