-
7种负载均衡策略:
1).随机策略
2).轮询策略
3).重试策略 在配置时间段内如果访问不成功,会不断尝试访问一个可用服务
4).最低并发策略
5).可用过滤策略 (过滤掉高并发和连接失败的服务)
6)响应时间加权策略
7)区域权衡策略 -
配置全局策略
@Configuration
public class RibbonConfig {@Beanpublic IRule ribbonRule(){return new RandomRule();}
}
- 配置单独策略
注:avoidscan为自定义注解,用来关闭自动扫描
@Configuration
@AvoidScan
public class RibbonConfig {// @Bean
// public IRule ribbonRule(){
// return new RandomRule();
// }@AutowiredIClientConfig config;@Beanpublic IRule ribbonRule(IClientConfig config){return new RandomRule();}
}
//启动类添加的注解
@RibbonClient(name="wwmxd-auth",configuration = RibbonConfig.class)
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type= FilterType.ANNOTATION,value = {AvoidScan.class})})
- Ribbon默认采用实际调用时再加载上下文,经常导致首次调用失败,未防止这种情况,可以采用饥饿加载
ribbon:eager-load:enabled: trueclients: wwmxd-auth
5.实现原理
将由@LoadBalance注解的restTemplate类,通过@AutoWire注入到list里
在LoadBalancerAutoConfiguration类中,绑定ribbon的拦截器,在拦截器里进行负载均衡(在LoadBalancerClient接口的实现类中进行处理)