使用feign调用出现连接错误,最底层异常是 UnknownHostException,也就是直接使用服务名去请求了;最终解决方法,未加对应的负载实现;
加入此解决;
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
分析:在feign调用的时候比如 A 服务调用B服务A 拿到的是B服务的服务名称 b-service
那么在调用的时候是 http://b-service/xx
这时候会判断feignclient 是否设置url 属性,如果设置了,那么直接使用url属性的值进行调用,如果没有 就会使用对应的LoadBalance api 从对应的注册中心获取服务的实例地址,也就是说当使用服务名调用的时候,负载均衡总需要一个,Ribbon 或spring-cloud-loadbalancer ;
不然就无法将服务名替换成对应的真实服务地址进行调用;