最全解决:微服务之间调用出现Load balancer does not have available server for client
最佳答案 问答题库468位专家为你答疑解惑
问题:
背景:现在是一个服务A要调用服务B(media-api)中的方法上传文件,因此需要再服务A中写一个feignclient,里面包含的是要调用的B服务的方法,然后出现找不到目标的情况
问题分析:
首先要确保服务和要被调用的服务都已经注册上,这里我用的是nacos。可以看到都是正常注册上来了的。
然后检查自己有没有写错对应的服务名称,看看对应的调用请求是否有错。
然后点击在第一个出问题的地方点进去,在该方法上打个断点看看打下来的请求有没有问题,
在这发现uri请求应该是没有问题的,看到这的/media后面才发现是我网关没有启动
正常就应该打到网关,然后网关进行负载均衡的转到media-api服务
而media-api服务下的配置就是
问题解决:
方案一:将服务注册上
可以试试看用eureka进行注册。nacos和erueka都是进行注册的,选择一种方案注册服务即可。
先pom配置
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
然后application上或者nacos上进行配置
ribbon:eureka:
enabled: true
方案二:取消eurka
如果你用nacos注册上,但还是报错。可以试试将eureka取消 ribbon.eureka.enabled=false;
ribbon:ConnectTimeout: 60000 #连接超时时间ReadTimeout: 60000 #读超时时间MaxAutoRetries: 0 #重试次数MaxAutoRetriesNextServer: 1 #切换实例的重试次数eureka:
enabled: false
或者配置这个,这个就是禁用eureka然后将请求打到下面的服务提供者下,但这种写法比较固定。
大部分情况不是我们想要的
ribbon:eureka:enabled: false
## 这个IFeignService是加了@FeignClient注解的类
MediaServiceClient:ribbon:## 服务提供者的地址,不是服务注册中心的地址listOfServers: http://localhost:60350
或者这个
eureka:client:register-with-eureka: false #此EurekaServer不再注册到其他注册中心fetch-registry: false #不再从其他注册中心拉取服务信息
方案三:检查拼写
看看自己的要调用的服务名字有没有写错,和注册上nacos的名字是否一致。
然后检查自己的请求是否有错误,请求有错也是没有办法找到该服务的。看看自己的nginx,网关等有没有打开
99%的人还看了
相似问题
- 适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)
- ChatGpt3.5已经应用了一段时间,分享一些自己的使用心得.
- Github小彩蛋显示自己的README,git 个人首页的 README,readme基本语法
- YOLOv5独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
- 如何上传自己的npm包
- 实操创建属于自己的亚马逊云科技VPS服务:Amazon Lightsail
- 开设自己的网站系类03安装数据库(centos版)
- 用趋动云GPU部署自己的Stable Diffusion
- 如何高效的提升自己的逻辑思维能力?
- 3 任务3 使用趋动云部署自己的stable-diffusion
猜你感兴趣
版权申明
本文"最全解决:微服务之间调用出现Load balancer does not have available server for client":http://eshow365.cn/6-16395-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!