使用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 ;

不然就无法将服务名替换成对应的真实服务地址进行调用;

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐