ribbon是springcloud客户端继承的负载均衡组件,可以自定义各种负载均衡策略
/**
*
* RoundRobinRule 轮询
* RandomRule 随机
* AvailabilityFilteringRule 优先过滤因访问故障处于断路器跳闸的服务
* 以及并发连接数超过阈值的服务。然后对剩余的服务做轮询
*
* WeightedResponseTimeRule 根据平均响应时间计算所有服务的权重,响应时间越快的权重越大
* 选择几率越高。
*
* RetryRule 先按照轮询获取服务,如果获取服务失败,
* 在规定时间内会重试获取可用的服务
*
* BestAvailableRule 优先过滤因访问故障处于断路器跳闸的服务,
* 然后选择并发量最小的服务
*
* ZoneAvoidanceRule 默认规则,复合判断服务所在区域的性能,和服务的可用性选择服务器
*
*/
今天测试RetryRule策略时发现没有生效,查询网上攻略后发现时少了一些配置
@Bean
public IRule getIRule(){
//return new RandomRule(); //随机负载均衡
return new RetryRule(); //重试策略,以轮询的方式选择服务,当轮询到的服务不可用时,在指定的时间内会自动重新选择选择其他的可用服务
}
只是这样做还不行,需要在application.xml中加入以下配置
ribbon:
ConnectTimeout: 3000
ReadTimeout: 3000
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 2
OkToRetryOnAllOperations: true
restclient:
enabled: true
然后重启,测试,达到了效果