ribbon相对来说较为简单,这节主要是让我们去检测ribbon的能力,其实添加ribbon的功能和配置都极为简单,加个依赖,加个负载均衡的注解即可
用于测试的话,首先我们得需要一个注册中心,两个服务提供者,一个加了ribbon的服务消费者,这样才可以测试负载均衡
下面是服务提供者的代码,这个接口主要用于展示出端口号,这样我们方便看到负载均衡的效果。
@RestController
public class Controller {
@Value("${server.port}")
private String port;
@GetMapping("sayHi")
public String sayHi(){
return "当前的端口号是:"+port;
}
}
ribbon的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
ribbon服务是在启动类加上注解:
@SpringBootApplication
@EnableDiscoveryClient
public class RibbonConsumerApplication {
@Bean
@LoadBalanced
public RestTemplate template(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
}
可以看到相比于一般的服务消费者,我们在使用ribbon的时候多一个 @LoadBalanced
注解。
下面是ribbon消费者的接口代码:
@RestController
public class Controller {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/sayHi")
public String sayHi(){
return restTemplate.getForObject("http://eureka-client/sayHi",String.class);
}
}
然后服务提供者以不同的端口启动,启动注册中心,ribboon消费者,都启动完毕之后我们查看一下服务的注册列表:

可以看到eureka的服务提供者注册了两个不同端口号的实例,还注册了一个ribbon的服务消费者实例,这个时候我们多次调用ribbon的接口,会发现请求都分别到两个不同的消费者,而不会一直都是一个消费者那儿,这样就证明我们使用到了ribbon最基本的负载均衡的功能了。


网友评论