消费者调用的时候,输入的URL是指向具体的生产者的,接下来我们新建一个项目service-ribbon,然后把Ribbon加进去。
新建的项目添加依赖:spring-cloud-starter-ribbon。
通过Spring Cloud Ribbon来使用客户端负载均衡调用,需要二个步骤:
- 第一步,服务提供者的多个实例注册到注册中心
- 第二步,服务消费者通过调用被@LoadBalanced注解修饰过的RestTemplate来实现
第一步的话,只要仿造上节的启动注册中心(单中心和多中心都可以)和生产者多个实例即可。
第二步的话,需要编写一些代码,我们会有3个类:
ServiceRibbonApplication,启动类并负责生成RestTemplate实例
@EnableDiscoveryClient
@SpringBootApplication
public class ServiceRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceRibbonApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
}
HelloControler,提供一个请求入口,目的是调用本身的服务
@RestController
public class HelloControler {
@Autowired
HelloService helloService;
@RequestMapping(value = "/hi")
public String hi(@RequestParam String name){
return helloService.hiService(name);
}
}
HelloService,提供给HelloControler调动,服务本身不提供具体的服务,而是去调用服务生产者的服务
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;
/**
* 负载方法
* @param name
* @return
* SERVICE-HI :虚拟主机名
*/
public String hiService(String name) {
return restTemplate.getForObject("http://SERVICE-HI/hi?
name="+name,String.class);
}
}
配置文件如下: