Ribbon是Spring Cloud核心组件之一,它提供的最重要的功能就是负载均衡,和硬件负载均衡F5不同,它的负载均衡是基于客户端的,Zuul网关和Feign可以通过Ribbon轻松的实现服务的负载均衡,同时避免了与业务无关的冗余代码。
pom.xml文件
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
- <dependency>
- <groupId>org.springframework.cloudgroupId>
- <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
- dependency>
yml文件
- server:
- port: 8080
- spring:
- application:
- name: provider
- eureka:
- client:
- service-url:
- defaultZone: http://eureka的IP地址/eureka
- instance:
- hostname: localhost
- prefer-ip-address: true
- instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
controller方法
- @RestController
- public class ProviderController {
-
- @GetMapping("/hello")
- public String hello(){
- return "我是提供者aaaaa的接口";
- }
-
- }
spring容器
- /**
- * 这个restTemplate已经变了
- * @LoadBalanced 他就会被ribbon来操作
- * @return
- */
- @Bean
- @LoadBalanced
- public RestTemplate restTemplate(){
- return new RestTemplate();
- }
controller
- @Autowired
- private RestTemplate restTemplate;
-
- @GetMapping("/testRibbon")
- public String testRibbon(String serviceName){
- //正常情况下要拿到ip和prot以及路径才可以用
- String result = restTemplate.getForObject("http://" + serviceName + "/hello", String.class);
- return result;
- }
用浏览器发送请求,访问消费者的testRibbon方法,可以返回生产者型号,在页面上轮询显示a生产者和b生产者