玩转Eureka+Ribbon系列之Ribbon的负载均衡策略
Posted IT挖掘机y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Eureka+Ribbon系列之Ribbon的负载均衡策略相关的知识,希望对你有一定的参考价值。
策略类 | name | 描述 |
---|---|---|
RandomRule | 随机策略 | 随机选择 |
RoundRobinRule | 轮询策略 | 按照index循环 |
RetryRule | 重试策略 | 在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server;轮询策略的增强版 |
BestAvailableRule | 最低并发策略 | 逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server |
AvailabilityFilteringRule | 可用过滤策略 | 过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态; |
WeightedResponseTimeRule | 响应时间加权重策略 | 根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间 |
ZoneAvoidanceRule | 区域权重策略 | 综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server |
1、全局设置
在cofig的配置文件里
1.1、随机策略
@Bean
public RandomRule getRandomRule() { //随机策略
return new RandomRule();
}
1.2、轮询策略
@Bean
public RoundRobinRule getRoundRobinRule() { //轮询策略
return new RoundRobinRule();
}
1.3、重试策略
@Bean
public RetryRule getRetryRule() { //重试策略
return new RetryRule();
}
1.4、最少并发数策略
@Bean
public BestAvailableRule getBestAvailableRule() { //最少并发数策略
return new BestAvailableRule();
}
1.5、可用过滤策略
@Bean
public AvailabilityFilteringRule getAvailabilityFilteringRule() { //可用过滤策略
return new AvailabilityFilteringRule();
}
1.6、响应时间+权重策略
@Bean
public WeightedResponseTimeRule getWeightedResponseTimeRule() { //响应时间+权重策略
return new WeightedResponseTimeRule();
}
1.7、区域权重策略
@Bean
public ZoneAvoidanceRule getZoneAvoidanceRule() { //区域权重策略
return new ZoneAvoidanceRule();
}
2、局部设置
service-provider: #服务名
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
以上是关于玩转Eureka+Ribbon系列之Ribbon的负载均衡策略的主要内容,如果未能解决你的问题,请参考以下文章
Ribbon为什么要加入点对点直连的功能?如何操作?两句话玩转!
SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)
SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)
spring-cloud: eureka之:ribbon负载均衡配置