在hystrix调用回退之前,Ribbon是否会通过所有Eurkea注册的实例?

时间:2017-09-05 21:41:40

标签: java spring-boot spring-cloud

假设我有2个与Eureka注册的同名/类型的微服务实例,并且Ribbon在它们之间进行负载平衡。我还配置了Hystrix后备,以防服务中断。在调用Hystrix回退之前,Ribbon是否会尝试联系支持端点URL的所有可用服务?

1 个答案:

答案 0 :(得分:1)

这取决于您的配置。

通常,Hystrix后备将由以下任何条件执行。

  • 由HystrixCommand执行的代码抛出的任何异常(using (WebClient client = new WebClient()) { client.UploadFile(Sitecore Handler, FilePath); }除外)
  • Hystrix超时
  • Hystrix ThreadPool /信号量拒绝
  • Hystrix电路开启

在Hystrix超时期间,Hystrix不会阻止功能区重试。如果超时达到,Hystrix将在中断用户代码后执行回退方法。

可以使用以下属性调整功能区的重试次数。

  • HystrixBadRequestException
  • ribbon.MaxAutoRetriesNextServer
  • ribbon.MaxAutoRetries
  • ribbon.ReadTimeout

因此,您的后备将被称为

  • 在所有功能区重试失败后,如果它们在Hystrix的超时时间内结束

  • 或者,就在Hystrix超时后,如果Ribbon的所有重试操作都没有结束,直到Hystrix超时。