Ribbon的负载均衡机制

原创 Laughing  2020-03-19 21:11  阅读 8 次 评论 0 条

Ribbon 的负载均衡器接口定义了服务器的操作,主要是用于进行服务器选择。在发送请求时,会使用负载均衡器CILoadBalancer) 接口,根据特定的逻辑来选择服务器。服务器列表可使用listOfServers进行配置,也可以使用动态更新机制。

添加依赖

  1. <dependency>  
  2.             <groupId>org.springframework.cloud</groupId>  
  3.             <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>  
  4.  </dependency>  

测试使用

  1. package org.lisen.first.ribbon.client;  
  2.   
  3. import com.netflix.client.ClientException;  
  4. import com.netflix.client.ClientFactory;  
  5. import com.netflix.client.http.HttpRequest;  
  6. import com.netflix.client.http.HttpResponse;  
  7. import com.netflix.config.ConfigurationManager;  
  8. import com.netflix.loadbalancer.BaseLoadBalancer;  
  9. import com.netflix.loadbalancer.ILoadBalancer;  
  10. import com.netflix.loadbalancer.Server;  
  11. import com.netflix.niws.client.http.RestClient;  
  12. import org.springframework.boot.SpringApplication;  
  13. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  14.   
  15. import java.util.ArrayList;  
  16. import java.util.List;  
  17.   
  18. @SpringBootApplication  
  19. public class FirstRibbonClientApplication {  
  20.   
  21.     public static void main(String[] args) throws Exception {  
  22. //        请求服务器  
  23. //        ConfigurationManager.getConfigInstance().setProperty(  
  24. //                "my-client.ribbon.listOfServers",  
  25. //                "localhost:7777,localhost:9000"  
  26. //        );  
  27.         ILoadBalancer iLoadBalancer = new BaseLoadBalancer();  
  28.         List<Server> serverList = new ArrayList<>();  
  29.         serverList.add(new Server("localhost",7777));  
  30.         serverList.add(new Server("localhost",9000));  
  31.         iLoadBalancer.addServers(serverList);  
  32. //        获取restClient  
  33. //        RestClient restClient = (RestClient) ClientFactory.getNamedClient("my-client");  
  34.         HttpRequest request = HttpRequest.newBuilder().uri("/person/lisen").build();  
  35.         for(int i=0;i<6;i++){  
  36.            Server server = iLoadBalancer.chooseServer(null);  
  37.            System.out.println(server.getHostPort());  
  38.         }  
  39.         SpringApplication.run(FirstRibbonClientApplication.class, args);  
  40.     }  
  41.   
  42. }  

本文地址:https://www.lisen.me/the-load-balancing-mechanism-of-ribbon.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情