스프링 클라우드 넷플릭스를 처음 접하고 그것에 관해 몇 가지 질문이 있습니다.
내가 Hystrix이 Zuul 에지 서버에서 실행과 함께 API 게이트웨이를 사용하고 그리고 난 내가 제대로 다음과 같은 행동을 이해하는 경우 있는지 확인하고 싶습니다 : 나는 "뒤에"실행하는 microservice을 죽일스프링 클라우드의 Zuul 서버의 폴백 메소드
를 API 게이트웨이는 그때에 hystrix 강제 회로를 엽니 다. 그 후 (약 10 초) 비 실행 마이크로 서비스에 요청을 보내고 TIMEOUT 오류를 수신합니다. 그러나 매우 짧은 시간 (최대 1 초) 내에 많은 (수십 개의) 요청을 보내면 바로 가기 오류가 발생합니다.
회로가 열려 있어도 TIMEOUT 오류가 발생하는 이유는 놀랍기 때문에 hystrix는 이러한 종류의 오류를 방지하기 위해 실행되어야합니다. 하지만 이유는 그 이유는 마지막 요청> circuitBreaker.sleepWindowInMilliseconds 이후 API 게이트웨이가 살아 있는지를 확인하기 위해 다시 마이크로 서비 스에 연결하려고 시도하지만 그렇게되지 않았기 때문입니다. -> TIMEOUT. 그것은 또한 짧은 시간에 많은 요청에 대해 SHORTCIRCUIT OPEN 오류가 발생하는 이유를 설명합니다.
HystrixRuntimeException: Microservice (timed-out | short-circuited) and no fallback available
어떻게 zuul 서버에서 대체 (모든 경로에 대해 동일 할 수 있음)로 지정할 수 있습니다
다음 일은 내가 "시간 초과"또는 내가 가진 "단락"오류가 발생 같은 것입니다 이 예외를 피하시겠습니까?
내가 지금까지 시도하는 것 :
는 this에 따르면 내가 타임 아웃을 피하기 위해 을 스레드 실행 고립 전략을 설정하려면 :
hystrix : command.default.execution.isolation.strategy : THREAD
하지만 hystrix.stream보고 후 내가 가진 propertyValue_executionIsolationStrategy":"SEMAPHORE"
- github의 솔루션에 대한 힌트가있는 것처럼 보이며 사용자 정의 RibbonCommand를 작성하고 getFallback()을 재정의하지만, RibbonCommand 인터페이스를보고 나서야합니다. RibbonCommand와 슈퍼 인터페이스가 그러한 메소드를 정의하지 않는다는 것을 알았습니다.
내 API 게이트웨이 서비스 :
@SpringBootApplication
@EnableSidecar // This annotation includes @EnableCircuitBreaker, @EnableDiscoveryClient, and @EnableZuulProxy
@EnableHystrixDashboard
public class ApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayApplication.class, args);
}
}
application.yml 최신 버전은 Zuul 수준에서 대체를 지원
server:
port: 10000
sidecar:
port: 8000
endpoints:
restart:
enabled: true
shutdown:
enabled: true
health:
sensitive: false
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
zuul:
routes:
microservice:
path: /microservice/**
hystrix:
command.default.execution.isolation.strategy: THREAD
debug: true
문제를 해결하는 올바른 버전/버전으로 사용자를 안내하기 위해 버전 번호를 입력하는 것을 고려해야합니다. – scicalculator
공식 스프링 문서에서 내가 얼마나 많은 것을 놓쳤는 지 놀라워합니다.실패한 URL 경로에 대해 내 대체 수단이 호출되지 않는 이유를 알 수 없습니다. +1 – Bal