본문 바로가기

251020 (월) MSA 요청과 응답의 흐름, 서킷 브레이커

@6uiw2025. 10. 20. 23:27

 

학습 목표

1. MSA에서의 요청과 응답의 흐름을 이해한다.
2. 서킷 브레이커의 역할과 작동 방식에 대해 이해한다.

 

MSA 요청과 응답의 흐름

  1. 외부 클라이언트가 요청을 보내면
  2. API게이트웨이가 받고, 인증/인가 처리 -> Gateway 안에 있는 Eureka Client 캐시에서 호출할 서비스(예: Order Service) 인스턴스 목록 확인
  3. Gateway 내부 클라이언트 사이드 로드밸런서(CSLB)가 어떤 인스턴스에 요청을 보낼지 결정 후 요청 전송
  4. 요청을 받은 서비스(Order)에서 요청 처리 후 -> 추가로 다른 서비스를 호출해야 할 시에는 본인 서비스 내에서 캐싱된 Eureka Client에서 서비스 인스턴스 목록을 보고 호출할 서비스 인스턴스 주소들을 확인
  5. FeignClient 안의 클라이언트 사이드 로드밸런서에서 어떤 인스턴스에 요청할지 결정해서 요청을 전송
  6. 요청을 받은 서비스(Product)에서 요청에 대한 처리
  7. 응답을 다시 Order에 반환
  8. Order에서 게이트웨이로 응답 전달
  9. Gateway가 클라이언트에 응답 반환 

 

 

 

 

 


서킷브레이커

  • 마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지
  • 외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 한다.
  • 서킷 브레이커 상태: 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리
  • Hystrix, Resilience4j 등이 존재

 

 

 

Resilience4j의 주요 특징 

  • 클로즈드(Closed):
    • 기본 상태로, 모든 요청을 통과시킵니다.
    • 이 상태에서 호출이 실패하면 실패 카운터가 증가합니다.
    • 실패율이 설정된 임계값(예: 50%)을 초과하면 서킷 브레이커가 오픈 상태로 전환됩니다.
    • 예시: 최근 5번의 호출 중 3번이 실패하여 실패율이 60%에 도달하면 오픈 상태로 전환됩니다.
  • 오픈(Open):
    • 서킷 브레이커가 오픈 상태로 전환되면 모든 요청을 즉시 실패로 처리합니다.
    • 이 상태에서 요청이 실패하지 않고 바로 에러 응답을 반환합니다.
    • 설정된 대기 시간이 지난 후, 서킷 브레이커는 하프-오픈 상태로 전환됩니다.
    • 예시: 서킷 브레이커가 오픈 상태로 전환되고 20초 동안 모든 요청이 차단됩니다.
  • 하프-오픈(Half-Open):
    • 오픈 상태에서 대기 시간이 지나면 서킷 브레이커는 하프-오픈 상태로 전환됩니다.
    • 하프-오픈 상태에서는 제한된 수의 요청을 허용하여 시스템이 정상 상태로 복구되었는지 확인합니다.
    • 요청이 성공하면 서킷 브레이커는 클로즈드 상태로 전환됩니다.
    • 요청이 다시 실패하면 서킷 브레이커는 다시 오픈 상태로 전환됩니다.
    • 예시: 하프-오픈 상태에서 3개의 요청을 허용하고, 모두 성공하면 클로즈드 상태로 전환됩니다. 만약 하나라도 실패하면 다시 오픈 상태로 전환됩니다.
  • Fallback: 호출 실패 시 대체 로직을 제공하여 시스템 안정성 확보
  • 모니터링: 서킷 브레이커 상태를 모니터링하고 관리할 수 있는 다양한 도구 제공

 

<흐름>

 

 


오늘의 코멘트

한번에 꼼꼼하게 공부하려는 것도 좋지만, 전체적 흐름을 파악한 뒤, 세부적인 사항을 공부하는 것도 좋은 방법이라는 것을 깨달았다. 
6uiw
@6uiw :: LOG.INFO("MING's DEVLOG")

개발을 하면서 공부한 기록을 남깁니다

목차