标签:包含 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