springCloud(7):Ribbon實現客戶端側負載均衡-消費者整合Ribbon

1、簡介java

  Ribbon是Netfix發佈的負載均衡器,它有助於控制HTTP和TCP客戶端的行爲。爲Ribbon配置服務提供者地址列表後,Ribbon就可基於某種負載均衡算法,自動地幫助服務消費者去請求。Ribbon默認爲咱們提供了不少的負載均衡算法,例如輪詢、隨機等,固然,也能夠爲Ribbon實現自定義的負載均衡算法。算法

  在Spring Cloud中,當Ribbon與Eureka配合使用時,Ribbon可自動從Eureka Server獲取服務提供者地址列表,並基於負載均衡算法,請求其中一個服務提供者實例。spring

2、爲服務消費者整合Ribbonapp

2.一、引入ribbon依賴負載均衡

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

2.二、爲RestTemplate添加@LoadBalanced註解(Application)ide

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

2.三、調用其它微服務
微服務

@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);
}


說明:測試

 一、spring-ribbon-eureka-client2是服務提供者註冊到Eureka Server上的應用名稱this

 二、本次測試開啓了兩個spring-ribbon-eureka-client2服務提供者,一個端口是8080,一個是8083spa

2.四、測試

訪問:http://192.168.1.83:8082/user/1 

效果:

 wKioL1lm9neDpTJeAAAVQZz47WE284.jpg

 wKioL1lm9uyhKyAPAAA9xMPUhGM811.jpg

相關文章
相關標籤/搜索