Circuit Breaker (Hystrix)
circuit breaker는 사전적 의미로는 회로 차단기, 주식에서는 [주식시장에서 주가가 급등 또는 급락하는 경우 주식매매를 일시 정지하는 제도.] 이다.
VI(변동성 완화장치)랑 다른건가... 아무튼 중요한건 회로 차단기나 주식에서나 과부하가 발생되면 조정해주는 장치이다. Netflix Hystrix도 동일한 기능을 제공한다.
분산환경에서는 종속성있는 많은 서비스들이 불가피하게 실패한다. Netflix Hystrix는 latency tolerance 와 fault tolerance 를 추가해서 분산 서비스 간 상호작용을 제어할수 있도록 지원한다. Hstrix는 서비스 간에 액세스 지점을 분리하고, 서비스 전체에 걸쳐 계단식 장애를 중지하며, 시스템 전체 복원력을 향상시키는 폴백 옵션을 제공합니다.
어떤 한 서비스가 실패하면 종속성 있는 서비스들이 cascading failures 하는 것을 막고, 빠르게 복구 할수 있다. gracefully degrade도 가능하다.
circuit breaker는 3가지의 상태를 가지고 있다.
- Closed
- Open
- Half-Open
Closed 상태는 다른 마이크로 서비스에 대한 호출이 정상 작동하는 상태.
Open 상태는 서비스 호출에 대한 에러 발생 횟수 등이 설정된 임계치 값을 넘겨서 작동이 중단된 상태.
서비스를 호출하면 서비스를 호출하지 않고 바로 error 를 리턴한다.
문제가 전파 되는것을 방지
Half-Open 상태는 Open상태에서 일정 시간 지나면 서비스에 문제가 있는지 확인하기 위해 Half-open으로 변하게됨.
Flow Chart
hystrix가 어떻게 디자인되어서 처리되는지 나오는 flow 차트인데...
대충 살펴보면 Semaphore, observer pattern 이런 용어들이 눈에 띈다.
이 차트만 보고 설명하는건 의미가 없으므로 스프링하고 이게 어떻게 적용되어서 돌아가는지 확인해보자.