以前的Ribbon有多种负载均衡策略
RandomRule - 随性而为
解释:
随机
RoundRobinRule - 按部就班
解释:
轮询
RetryRule - 卷土重来
解释:
先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试。
WeightedResponseTimeRule - 能者多劳
这个Rule继承自RoundRibbonRule,他会根据服务节点的响应时间计算权重,响应时间越长权重就越低,响应越快则权重越高,权重的高低决定了机器被选中概率的高低。也就是说,响应时间越小的机器,被选中的概率越大。
解释:
对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择
BestAvailableRule - 让最闲的人来
解释:
应该说这个Rule有点智能的味道了,在过滤掉故障服务以后,它会基于过去30分钟的统计结果选取当前并发量最小的服务节点,也就是最“闲”的节点作为目标地址。如果统计结果尚未生成,则采用轮询的方式选定节点。
AvailabilityFilteringRule - 我是有底线的
这个规则底层依赖RandomRobinRule来选取节点,但并非来者不拒,它也是有一些底线的,必须要满足它的最低要求的节点才会被选中。如果节点满足了要求,无论其响应时间或者当前并发量是什么,都会被选中。
解释:
每次AvailabilityFilteringRule(简称AFR)都会请求RobinRule挑选一个节点,然后对这个节点做以下两步检查:是否处于不可用,节点当前的active请求连接数超过阈值,超过了则表示节点目前太忙,不适合接客如果被选中的server不幸挂掉了检查,那么AFR会自动重试(次数最多10次),让RobinRule重新选择一个服务节点。
ZoneAvoidanceRule - 我的地盘我做主
解释:
默认规则,复合判断server所在区域的性能和server的可用性选择服务器
但LoadBalancer只提供了两种负载均衡器
- RandomLoadBalancer 随机
- RoundRobinLoadBalancer 轮询
注意:
不指定的时候默认用的是轮询