标签:包含 bean 之间 失败 end org 控制器 cal vat
ribbin是Netflix发布的负载均衡器,有助于控制http和tcp客户端的行为,为ribbon配置服务提供者列表后,ribbon就可以基于某种负载均衡算法,自动的帮助服务消费者去请求。ribbon提供了很多的负载均衡算法例如
在springCloud中,当ribbon和Eureka配和使用时ribbon可以自动获取服务注册列表,并基于负载均衡算法,请求其中的一个服务提供实例

在消费者与服务者之间做了一个Nginx代理,有效的分发请求到同一个服务者集群,如果将ribbon搭建在服务者一方,没有任何作用。
注意:如果已经引入了spring-cloud-starter-eureka依赖,其中已经包含了spring-cloud-starter-ribbon,所以不需要再次引入
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>   @Bean
   @LoadBalanced
    RestTemplate getRestTemplate(){
        return new RestTemplate();
    }@RestController
@RequestMapping("/query")
public class ClientController {
    @Autowired
    private RestTemplate restTemplate;
    @RequestMapping("/load")
    public void loadBalanceTest(String name){
        IRule iRule; //该接口管控ribbon负载均衡策略实现类
        ServiceInstance instance = loadBalancerClient.choose("EUREKA-PROVIDER");
        String host = instance.getHost();
        int port = instance.getPort();
        URI uri = instance.getUri();
        System.out.println(host);
        System.out.println(port);
        System.out.println(uri);
    }
}@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/test1")
    public String test(String name){
        return "xixixi 8763  :"+name;
    }
}@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/test1")
    public String test(String name){
        return "xixixi 8764  :"+name;
    }
}访问:http://localhost:8762/query/load?name=hahahaha
得到结果如下:

因为ribbon默认的实现类是轮询策略,如果要修改如下↓
在消费者配置文件天添加如下内容,将负载均衡策略指向其他实现类
HI-SERVICE.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule还有其他实现类如下:

标签:包含 bean 之间 失败 end org 控制器 cal vat
原文地址:https://www.cnblogs.com/mzc1997/p/10252278.html