前面介绍了使用Eureka和Ribbon的情况,这里小编带你继续学习脱离Eureka如何使用Ribbon以及如何使用ribbon原生api。
脱离eureka使用Ribbon
一、复制原先ribbon项目更改为:microservice-consumer-movie-ribbon-without-eureka
更新pom,application.yml中的名称,在parent的pom文件中加入其module。
二、将原先的配置文件定义负载均衡策略的代码去掉,添加内容
ribbon:
eureka:
enabled: false
microservice-provider-user:
ribbon:
listOfServers: localhost:7900
三、更改controller中的findById()方法
@GetMapping("/movie/{id}")
private User findById(@PathVariable Long id) {
ServiceInstance serviceInstance = this.LoadBalancerClient.choose("microservice-provider-user");
System.out.println("***"+serviceInstance.getHost()+":"+serviceInstance.getPort()+":"+serviceInstance.getServiceId());
return this.restTemplate.getForObject("http://microservice-provider-user/simple/"+id, User.class);
}
四、启动
先启动eureka,再启动四个提供者实例,7900,7901,修改application.yml即可。最后启动消费者。启动成功界面:、
五、访问页面:localhost:8010/movie/1,刷新四次
使用ribbon的原生api
官网资料:
Using the Ribbon API Directly
You can also use the LoadBalancerClient directly. Example:
public class MyClass {
@Autowired
private LoadBalancerClient loadBalancer;
public void doStuff() {
ServiceInstance instance = loadBalancer.choose("stores");
URI storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));
// ... do something with the URI
}
}
在咱们项目中的体现:
@Autowired
private LoadBalancerClient LoadBalancerClient;
@GetMapping("/test")
public String test() {
ServiceInstance serviceInstance = this.LoadBalancerClient.choose("microservice-provider-user");
System.out.println("111"+serviceInstance.getHost()+":"+serviceInstance.getPort()+":"+serviceInstance.getServiceId());
ServiceInstance serviceInstance2 = this.LoadBalancerClient.choose("microservice-provider-user2");
System.out.println("222"+serviceInstance2.getHost()+":"+serviceInstance2.getPort()+":"+serviceInstance2.getServiceId());
return "1";
}
小结
博客到这里,关于ribbon的介绍就告一段落了。博客中介绍的完整的项目源码地址:链接:http://pan.baidu.com/s/1i4NmJ5b 密码:y0hf
建议大家跟随博客一步步进行搭建,源码作为参考。实践中更有利于成长!