1 引言
Ribbon是帮助我们实现服务和服务之间的负载均衡,属于客户端负载均衡;
- 客户端负载均衡:在客户端做负载均衡的策略,选中某一个服务。
- 服务端负载均衡:在注册中心,直接根据指定的策略负载均衡。
2 Ribbon的快速入门
1、启动两个search模块
2、在客户端导入Robbin的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
3、配置整合RestTemplate和Robbin
@SpringBootApplication
@EnableEurekaClient
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class,args);
}
@Bean
@LoadBalanced //添加该注解
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
4、在customer中访问search
@RestController
public class CustomController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private EurekaClient eurekaClient;
@GetMapping("/customer")
public String customer() {
//直接调用
return restTemplate.getForObject("http://SEARCH/search",String.class);
}
}
3 Ribbon配置负载均衡策略
1、负载均衡的策略
- RandomRule:随机策略
- RoundRobbinRule:轮询策略
- WeightedResponseTimeRule:默认会采用轮询的策略,后续会根据服务的响应时间,自动给分配权重
- BestAvailableRule:根据被调用方并发数最小的去分配
2、采用注解的形式(用于所有服务的策略)
@Bean
public IRule ribbonRule() {
return new RandomRule();
}
3、配置文件制定负载均衡的策略(针对个别服务的策略,推荐此方式)
SEARCH: #执行策略的服务名称
ribbon: #选择负载均衡策略
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule