2.2. Circuit Breaker booster를 빌드하고 실행합니다.
넷플릭스/Hystrix 회로 차단기 구성 요소를 사용하면 분산 애플리케이션이 네트워크 연결 중단 및 백엔드 서비스를 일시적으로 사용할 수 없게 되는 문제를 해결할 수 있습니다. 회로 차단기 패턴의 기본 개념은 종속 서비스의 손실이 자동으로 감지되고 백엔드 서비스를 일시적으로 사용할 수 없는 경우 대체 동작이 프로그램될 수 있다는 것입니다.
Fuse 회로 차단기 부스터는 두 가지 관련 서비스로 구성됩니다.
- 이름을 로 반환하는 이름 서비스.
-
name 서비스를 호출하여 이름을 가져온 다음 문자열
Hello, NAME
.
이 데모에서는 인사말 서비스와 이름 서비스 사이에 Hystrix 회로 차단기가 삽입됩니다. 이름 서비스를 사용할 수 없게 되면 인사말 서비스가 다시 시작될 때까지 대기하는 동안 차단하거나 시간 초과하는 대신 대체 동작으로 대체되고 클라이언트에 즉시 응답할 수 있습니다.
사전 요구 사항
- 2.1절. “부스터 프로젝트 생성” 섹션에 언급된 단계를 완료했습니다.
프로세스
다음 단계에 따라 Circuit breaker booster 프로젝트를 빌드하고 실행합니다.
쉘 프롬프트를 열고 Maven을 사용하여 명령줄에서 프로젝트를 빌드합니다.
cd PROJECT_DIR mvn clean package
다음과 같이 새 쉘 프롬프트를 열고 name 서비스를 시작합니다.
cd name-service mvn spring-boot:run -DskipTests -Dserver.port=8081
Spring Boot가 시작되면 다음과 같은 몇 가지 출력이 표시됩니다.
... 2017-12-08 15:44:24.223 INFO 22758 --- [ main] o.a.camel.spring.SpringCamelContext : Total 1 routes, of which 1 are started 2017-12-08 15:44:24.227 INFO 22758 --- [ main] o.a.camel.spring.SpringCamelContext : Apache Camel 2.20.0 (CamelContext: camel-1) started in 0.776 seconds 2017-12-08 15:44:24.234 INFO 22758 --- [ main] org.jboss.fuse.boosters.cb.Application : Started Application in 4.137 seconds (JVM running for 4.744)
다음과 같이 새 쉘 프롬프트를 열고 인사말 서비스를 시작합니다.
cd greetings-service mvn spring-boot:run -DskipTests
Spring Boot가 시작되면 다음과 같은 몇 가지 출력이 표시됩니다.
... 2017-12-08 15:46:58.521 INFO 22887 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2017-12-08 15:46:58.524 INFO 22887 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-12-08 15:46:58.536 INFO 22887 --- [ main] org.jboss.fuse.boosters.cb.Application : Started Application in 6.263 seconds (JVM running for 6.819)
인사말 서비스는 URL
http://localhost:8080/camel/greetings
에서 REST 끝점을 노출합니다.http://localhost:8080으로 이동합니다.
이 페이지를 열면 서비스를 호출합니다.
이 페이지는 회로 차단기의 상태를 모니터링하는 Hystrix 대시보드에 대한 링크도 제공합니다.
Camel Hystrix에서 제공하는 회로 차단기 기능을 설명하기 위해 이름 서비스가 실행 중인 쉘 프롬프트 창에서 Ctrl+C 를 눌러 백엔드 이름 서비스를 종료합니다.
이제 이름 서비스를 사용할 수 없으므로 회로 차단기가 시작되어 인사말 서비스가 호출될 때 중단되지 않도록 합니다.
Hystrix Monitor 대시보드 및 서비스 출력에서 변경 사항을 확인합니다.