先看一下结论:
只有当该服务的全部实例都不可用时,才会报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
需要注意的是:熔断期间,即使服务恢复了健康状态也不会立即被调用,断路器每隔一段时间会放行一个请求,如果成功,才会停止熔断,恢复正常调用。