在接触springCloud的组件负载均衡Ribbon的时候,一个注解大家一定不会陌生,该注解就是@LoadBalanced注解,我们在使用这个注解后,就能在调用其他微服务的时候,通过服务实例名称就能进行调用其他的微服务,而不是直接把要调用的微服务的ip和端口号写死在代码当中。
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate;
public String findById(Integer id){
return restTemplate.getForObject("http://user-service/user/"+id,String.class);
}
我们在使用这个注解之后,除了能实现以上的功能外,还有就是再调用微服务的时候,可以实现负载均衡通过的算法,例如轮询,随机…
这个时候我们就需要具备多台被调用的微服务。例如用户微服务user-server
那么我们在idea上有如何的快速的搭建多台用户微服务呢?
其实很简单,idea工具也是很给力的
看图:
现在我们有一个用户微服务user-server,为了体验@LoadBalanced注解的作用,我们需要搭建两个用户微服务。
以上我们就创建了两个用户微服务,那么接下来我们开启服务消费者admin-web,我们通过消费者去调用提供者,看看到底是调用哪一个用户微服务。
我们访问访问消费者admin-web,消费者就会通过restTemplate调用用户微服务,也就是服务提供者。
我们注意观察服务提供者的控制台打印信息:
通过上述git可以看出,负载均衡使用的算法是随机,5次访问用户微服务,也就是服务提供者,第一次,第二次,第四次,第五次访问的都是同一个用户微服务(我们暂且称为用户微服务1),第三次访问的是用户微服务2,可以看出采用的并不是轮询算法。
在实际的开发当中,我们并不是使用以上的restTemplate来调用服务提供者,而是使用Feign