【Java异常】com.netflix.client.ClientException: Load balancer does not have available server for client

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 【Java异常】com.netflix.client.ClientException: Load balancer does not have available server for client

一、问题描述

报错信息如下

Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: basic-iot-config
  at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483)
  at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184)
  at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)
  at rx.Observable.unsafeSubscribe(Observable.java:10211)
  at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
  at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
  at rx.Observable.subscribe(Observable.java:10307)
  at rx.Observable.subscribe(Observable.java:10274)
  at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:445)
  at rx.observables.BlockingObservable.single(BlockingObservable.java:342)
  at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:117)
  at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:63)
  ... 33 common frames omitted

二、错误原因

SpringCloud 项目,会经常用一个 服务A 中调用另一个 微服务B,明明启动了 微服务B,但是却仍然报错

com.netflix.client.ClientException: Load balancer does not have available server for client: xxx

这时候,造成这种情况的原因基本上都是 两个服务注册到注册中心的端口不一样或者是注册到注册中心的服务名字不一致。

三、解决方案

3.1 方案1

方案1解决了此问题:

将两个服务(注册的服务和消费的服务)的名字改为一致即可,或者访问访问的URL改成一样的。

public class SystemConstant {
    /**
     * 应用名
     */
    public static final String APPLICATION_NAME = "back-operation-service-123";
}
spring:
  application:
    name: back-operation-service-123
    system: operation

3.2 方案2

application.yml 配置文件中添加

ribbon.eureka.enable: true

 

完结!


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1天前
|
安全 IDE Java
Java中NullPointerException异常的处理方法详解
Java中NullPointerException异常的处理方法详解
|
1天前
|
Java 机器人 程序员
如何解决Java中的ClassCastException异常?
如何解决Java中的ClassCastException异常?
|
1天前
|
Java 机器人 程序员
Java中如何处理ArrayIndexOutOfBoundsException异常?
Java中如何处理ArrayIndexOutOfBoundsException异常?
|
1天前
|
安全 Java 机器人
解决Java中的NumberFormatException异常的实用方法
解决Java中的NumberFormatException异常的实用方法
|
1天前
|
运维 Java 机器人
如何在Java中优雅地处理异常?
如何在Java中优雅地处理异常?
|
1天前
|
安全 Java 机器人
如何在Java中优雅地处理ConcurrentModificationException异常?
如何在Java中优雅地处理ConcurrentModificationException异常?
|
1天前
|
Java 机器人 编译器
解决Java中的NoSuchElementException异常的常见方法
解决Java中的NoSuchElementException异常的常见方法
|
1天前
|
Java 机器人 程序员
Java中如何处理FileNotFoundException异常?
Java中如何处理FileNotFoundException异常?
|
1天前
|
Java 机器人 程序员
如何解决Java中的IOException异常?
如何解决Java中的IOException异常?
|
1天前
|
SQL Java 机器人
Java中如何处理SQLException异常?
Java中如何处理SQLException异常?