0

我已经使用Spring Boot,Eureka,Zuul,Ribbon框架配置了我的项目体系结构。 其工作正常,但有时(很少)得到以下情况除外:在Spring引导,eureka,zuul,ribbon框架中很少获得ClientException和ZuulException

  1. 造成的:com.netflix.client.ClientException:负载均衡器没有为客户端可用的服务器:服务1
  2. 产生的原因: com.netflix.hystrix.exception.HystrixRuntimeException:service1超时且无回退可用。

以下是我的服务配置: 看一下,请让我知道,如果我错过了任何导致上述例外的问题。

尤里卡服务application.properties:

server.port=8070 
spring.application.name=eureka_service 
eureka.client.register-with-eureka=false 
eureka.client.fetch-registry=false 
eureka.instance.hostname=localhost 
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8070/eureka/ 
logging.level.com.netflix.eureka=OFF 
logging.level.com.netflix.discovery=OFF 

zuul服务application.properties:

server.port=8071 
spring.application.name=zuul_service 
zuul.prefix=/api 
zuul.routes.service1.path=/service1/** 
zuul.routes.service1.service-id=service1 
eureka.client.register-with-eureka=true 
eureka.client.fetch-registry=true 
eureka.instance.hostname=localhost 
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8070/eureka/ 
ribbon.eureka.enabled=true 

服务1 application.properties:

server.port=8072 
spring.application.name=service1 
eureka.client.register-with-eureka=true 
eureka.client.fetch-registry=true 
eureka.instance.hostname=localhost 
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8070/eureka/ 
ribbon.eureka.enabled=true 

请让我知道如果我需要添加任何其他配置来解决? 谢谢。

+0

是在启动这些异常向上? 如果您不幸,可能需要120秒才能在服务之间共享元数据。 此外Hystrix有一个默认的1秒超时,其线程池为10,如果您保持Hystrix的默认值,您可以轻松地自我DOS。 –

+0

@DarrenForsythe这些例外不在启动。当我试图通过Zuul访问service1 API时,我得到了。 http:// localhost:8071/api/security1/user/***** 如何解决这些异常? – Krish

+0

我应该澄清一下,在应用程序出现后,您尝试访问API的速度有多快? –

回答

0

您可以尝试通过设置例如增加丝带超时:

ribbon.ReadTimeout=10000 

如果上面的代码不能正常工作通过禁用超时,你可以尝试:

hystrix.command.default.execution.timeout.enabled=false 
+0

这不单单与hystrix有关。 –