天天看点

springCloud(7):Ribbon实现客户端侧负载均衡-消费者整合Ribbon

一、简介

  Ribbon是Netfix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等,当然,也可以为Ribbon实现自定义的负载均衡算法。

  在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

二、为服务消费者整合Ribbon

2.1、引入ribbon依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>      

2.2、为RestTemplate添加@LoadBalanced注解(Application)

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
   return new RestTemplate();
}      

2.3、调用其它微服务

@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) throws Exception {
    ServiceInstance serviceInstance = this.loadBalancerClient.choose("spring-ribbon-eureka-client2");
    // 打印当前选择的是哪个节点
    System.out.println("serviceId : " + serviceInstance.getServiceId());
    System.out.println("hoost : " + serviceInstance.getHost());
    System.out.println("port : " + serviceInstance.getPort());
    System.out.println("============================================================");

    if (null == id) {
        return null;
    }
    return  this.restTemplate.getForObject("http://spring-ribbon-eureka-client2/" + id, User.class);
}      

说明:

 1、spring-ribbon-eureka-client2是服务提供者注册到Eureka Server上的应用名称

 2、本次测试开启了两个spring-ribbon-eureka-client2服务提供者,一个端口是8080,一个是8083

2.4、测试

访问:http://192.168.1.83:8082/user/1 

效果:

继续阅读