什么是Ribbon
- Ribbon是一个基于HTTP以及TCP的客户端负载工具,它是基于Netflix Ribbon实现的。
- Ribbon默认有很多种负载均衡算法,
- Ribbon提供了一套微服务的负载均衡解决方案
入门案例搭建
Ribbon对于集群的服务采用的负载均衡策略是轮询。
在上一节的基础上再搭建一个Provider工程,其内容和上一个provider工程i一样,主要是模拟消费者调用这两个提供者服务所应用的负载均衡。
- 项目结构
- 消费者项目采用第二种调用服务LoadBalancerClient方式,这样才能精准的看到调用的提供者网址以及端口。
private List<product> selectProductListByLoadBalance() {
StringBuffer sb = null;
//直接获取服务名
ServiceInstance serviceInstance = loadBalancerClient.choose("server-provider");
if(null == serviceInstance)
return null;
sb = new StringBuffer();
sb.append("http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/product/list");
System.out.println(sb.toString());
ResponseEntity<List<product>> response = restTemplate.exchange(
sb.toString(),
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<product>>() {
});
return response.getBody();
}
- 项目启动
将所有的工程相应地启动,查看运行效果
从控制台的打印信息可以看出应用了负载均衡的原理。