一、服务提供方启动两个服务
二、服务消费方,restTemplate增加注解
@Bean
@LoadBalanced//开启Ribbon的负载均衡,调用时,可以通过user-service名字,找到对应的服务。
public RestTemplate restTemplate(){
return new RestTemplate();
}
三、服务消费方以服务提供方名字进行调用
@GetMapping("/{id}")
public User queryById(@PathVariable Long id){
String url = "http://user-service/user/"+id;
log.info(url);
return restTemplate.getForObject(url, User.class);
}
四、ribbon默认采用轮询的负载均衡算法,也可以通过增加配置来更改为随机的负载均衡算法
在服务的调用方
#rebbion 默认的负载均衡算法是 轮询。通过下面这个配置,可以开启随机访问服务
user-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #开启服务的随机访问
五、原理
原理:LoadBalancerInterceptor中有一个execute方法,其中加载RibbonLoadBalancerClient会根据负载均衡算法,完成对被调用方服务的翻译工作。