一、Ribbon负载均衡策略
- RandomRule:随机策略
- RoundRobinRule:轮询策略
- RetryRule:重试策略,在轮询的基础上进行重试;即先使用轮询来访问,如果选到的实例正常响应就返回,如果选择的服务为null或已经失效,则在失效时间deadline之前不断以轮询的方式进行重试,如果超时了,就返回null
- WeightedResponseTimeRule:权重策略,ribbon默认的权重策略是根据服务响应时间来的,如果响应时间越短,则权重越大;如果要结合nacos使用,手动设置权重的话,需要指定是NacosRule
- BestAvailableRule:过滤失效的服务实例,然后找出请求量最小的服务来使用
- ZoneAvoidanceRule:默认规则,复合判断server所在区域(云原生概念,即服务器所在的位置,北京或成都,一般是就近原则)的性能和server的可用性选择服务器,会根据判断条件对服务进行过程,过滤完成后,走线性轮询的机制
二、Ribbon负载策略配置
2.1 全局配置
//定义配置类
@Configuration
public class RibbonConfig {
/*
* ribbon 全局配置负载策略
* */
@Bean
public IRule iRule() {
return new RandomRule();
}
}
2.2 局部配置方式一
/*
* 1:在启动类上加上@RibbonClients注解
* 2:name 指定服务
* 3:configuration 指定负载策略
* */
@SpringBootApplication
@Slf4j
@RibbonClients(value = {
@RibbonClient(name = "stock-service",configuration = RibbonConfig.class)
})
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class,args);
log.info("order客户端启动...");
}
}
2.3 局部配置方式二 yml配置文件方式
#服务提供者的ribbon负载策略
stock-service:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
product-service:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule