先看一下结论:
只有当该服务的全部实例都不可用时,才会报Load balancer does not have available server。
假设1个服务有2个实例,其中一个实例不可用(健康检查异常或掉线)不会影响消费侧的正常调用,不会触发fallback。只有当服务的全部实例都不可用时,才会报这个异常。
com.netflix.client.ClientException: Load balancer does not have available server for client: YOUR-SERVICE-NAME
如果持续异常,可能会触发熔断,断路器开始工作,报Hystrix circuit short-circuited and is OPEN。
java.lang.RuntimeException: Hystrix circuit short-circuited and is OPEN
需要注意的是:熔断期间,即使服务恢复了健康状态也不会立即被调用,断路器每隔一段时间会放行一个请求,如果成功,才会停止熔断,恢复正常调用。
本文解析了当服务实例部分失效时,Loadbalancer如何处理负载均衡,并详细介绍了熔断机制(如Hystrix)如何在服务全部不可用时触发。讨论了异常上报、熔断原理及熔断期间的服务调用恢复策略。
6028

被折叠的 条评论
为什么被折叠?



