discoverClient
通过 discoverClient 获取实例列表,然后自己实现负载均衡算法去 随机调用服务的api接口
@RestController
public class ConsumerController {
@Resource
private DiscoveryClient discoveryClient;
@Resource
private RestTemplate restTemplate;
// @RequestMapping("/hello")
// public String hello() {
// List<ServiceInstance> list = discoveryClient.getInstances("lyr-api-provider");
// String url = list.get(0).getUri().toString() + '/' + "hello";
// //调用了 provider的接口 返回给客户端
// return restTemplate.getForObject(url, String.class);
// // return "hello";
// }
注释的代码是没有使用 ribbon的写法
ribbon调用
@Configuration
public class RibbonConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
加上 LoadBalanced 注解,返回一个被代理了 的 restTemplate对象
@RequestMapping("/hello")
public String hello() {
// List<ServiceInstance> list = discoveryClient.getInstances("lyr-api-provider");
String url = "http://lyr-api-provider/" + '/' + "hello";
//调用了 provider的接口 返回给客户端
return restTemplate.getForObject(url, String.class);
// return "hello";
}
直接写 服务名字, ribbon会偷偷的换成服务对应 的ip地址