Ribbon核心组件IRule
Ribbon负载均衡算法
Ribbon默认提供的是轮询的负载均衡算法,完整了还有如下
RoundRobinRule | 轮询 |
---|---|
RandomRule | 随机 |
AvaliabilityFilteringRule | 会先过滤由于多次访问故障而处于断路器跳闸的状态的服务和并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略 |
WeightedResponseTimeRule | 根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大 |
RetryRule | 先按照RoundRobinRule策略获取服务,如果获取服务失败会在指定时间内重试 |
BestAvailableRule | 会先过滤掉由于多次访问故障二处于断路器跳闸状态的服务,然后选择一个并发量最小的服务 |
ZoneAvoidanceRule | 默认规则,复合判断server所在的区域的性能和server的可用性选择服务器 |
Ribbon负载均衡算法使用方法
在客户端的配置类ConfigBean.java中添加IRule的实现
1、配置轮询的负载均衡算法
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced
public RestTemplate geRestTemplate(){
return new RestTemplate();
}
@Bean
public IRule myRule(){
return new RandomRule();
}
}
2、配置轮询的负载均衡算法配置文件方法
#改变负载方式-没用
DEMO-SERVICE.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule