我在我的网关上使用JHipster版本4.6.2 . 我有一个JHipster注册表和两个相同微服务的实例 . 在JHipster注册表中,我可以看到网关和两个微服务实例都已正确注册 . 我可以配置,查看 Health 状况等 . 总之,一切正常 .
微服务是使用较新的JHipster版本(4.11.1)创建的 . 网关和微服务似乎都很好地合作 . 例如,网关上的默认(生成的)用户界面能够从微服务获取数据(实体) . 在网关上我只使用Jhipster为我生成的逻辑从微服务中获取数据 . 我可以在日志中看到调用被路由到两个微服务实例 .
我面临的问题是,当我关闭一个微服务实例时,网关仍然有时会尝试将服务调用路由到已经关闭的微服务实例 . 当然,经过一段时间后,所有服务调用都只是正确地路由到正确/正在运行的微服务实例 . 但有时在关闭一个微服务实例后,调用可能会被路由到“错误”实例 .
我预计如果对第一个微服务实例的服务调用失败,像ribbon,zuul和eureka这样的组件会自动尝试其他微服务实例 . 我的期望是否正确? Jhipster“微服务平台”应该自动重试其他注册微服务实例的服务调用吗?
如果默认情况下不支持重试,我该怎么做才能实现?
1 回答
谢谢你的回应盖尔 . 我尝试从您提供的链接进行配置,但这并没有完全解决我的问题 .
当设法摆脱原始异常("com.netflix.client.ClientException: null")时,我遇到了下一个问题("Caused by: com.netflix.client.ClientException: Number of retries on next server exceeded max 2 retries, while making a call for: 192.168.1.4:8082") . 我需要调整MaxAutoRetriesNextServer(参见https://github.com/spring-cloud/spring-cloud-netflix/issues/2052) . 这让我更进一步,但仍然得到了hystrix例外("Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: myservice timed-out and no fallback available.") .
最后借助这两个链接(https://github.com/jhipster/generator-jhipster/issues/3323和https://github.com/spring-cloud/spring-cloud-netflix/issues/321),我设法进行了配置,在我的测试中提供了100%的可用性(到目前为止) .
这是对我有用的配置 . 我并不完全了解所有这些设置背后的所有细节,因此如果您发现这些设置存在任何不一致之处或者您有改进建议,请提出它们 . 谢谢!