마이크로 서비스의 경우 호출을 할 다른 서버가 죽거나 어떠한 상황 때문에 통신이 안 될 수 있다.
그러면 미리 예외처리를 하지 않았다면 예외가 발생하고 클라이언트는 에러 응답을 받게 된다.
어떤 서비스의 경우는 다른 서비스 호출 값을 꼭 클라이언트에 전달 안해도 되거나 하는 경우는 서비스가 호출하는 다른 서버와 연결이 지속적으로 안 되는 경우 Circuit Breaker 기능을 적용하여 그 서버를 설정한 시간동안 호출을 안 하도록 설정이 가능하다.
CircuitBreaker
- 장애가 발생하는 서비스에 반복적인 호출 차단
- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행하여 장애 회피
서킷브레이커를 적용 안 하고 강의에서 order 서비스 서버를 안 키고, order 서버를 호출하는 user 관련 API를 호출하면 아래처럼 에러가 발생함. (당연함)
{
"timestamp": "2022-12-05T22:29:27.080+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "feign.RetryableException: connect timed out executing GET http://order-service/order-service/546dee45-8fd7-49c6-b922-203a5c032350/orders\r\n\tat feign.FeignException.errorExecuting(FeignException.java:249)
'MSA > MSA관련기술' 카테고리의 다른 글
micro service 분산 추적 zipkin (0) | 2022.12.08 |
---|---|
서킷브레이커 (Resilience4j) 환경설정 방법 (0) | 2022.12.06 |
kafka 데이터 동기화 방법, connect (0) | 2022.12.04 |
kafka 설치 & 환경구성 (0) | 2022.12.02 |
Redis 환경설정 방법 (0) | 2022.11.29 |
댓글