SpringCloud(九):Ribbon脱离Eureka使用及原生api

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013037201/article/details/77121537

前面介绍了使用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,刷新四次


由上图可知,只访问了配置文件中配置的7900端口。


扫描二维码关注公众号,回复: 3835100 查看本文章

使用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


建议大家跟随博客一步步进行搭建,源码作为参考。实践中更有利于成长!


猜你喜欢

转载自blog.csdn.net/u013037201/article/details/77121537