No instances available for localhost

 

   使用RestTemplate类调用其余系统的url的时候,加上ribbon的注解@LoadBalanced上这个注解以后访问,就报错了。算法

 

 

 

报错以下:app

 

由于这里你不能直接访问地址,须要把地址改为你所调用的ur在eureka上注册的application.name负载均衡

将代码修改成以下,就能够访问了url

 

具体缘由,我查看了一下源码和网上找了一下,貌似是在加了了注解 @LoadBalanced 以后,咱们的r estTemplate 会走这个类RibbonLoadBalancerClient,断点进入了以下的页面,serverid必须是咱们访问的服务名称 ,当咱们直接输入ip的时候获取的server是null,就会抛出异常.net

 

 

使用服务名称以下图:3d

 

仔细想了想,由于ribbon的做用是负载均衡,那么你直接使用ip地址,那么就没法起到负载均衡的做用,由于每次都是调用同一个服务,当你使用的是服务名称的时候,他会根据本身的算法去选择具备该服务名称的服务。server

 

转载:https://blog.csdn.net/november22/article/details/54612454blog