1、Ribbon类
引包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
编写代码
主要的包 扫描LoadBalanced注册表明,这个restRemplate是需要做负载均衡的。
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
service
扫描注册名的路径
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate;
public String getHelloContent() {
return restTemplate.getForObject("**http://service-helloworld/**",String.class);
}
}
可以知道ribbon负载均衡默认采用的是轮询的方式,那轮询的实现方式又是什么呢?
跟踪到PredicateBasedRule类中的choose方法
用访问次数对服务的总数做取余操作完成轮询