跳到主要内容

【7】Ribbion负载均衡策略源码分析

文章目录

  • 前言
  • IRule 接口
    • RandomRule(随机)
  • RoundRobinRule(轮询)
  • WeightedResponseTimeRule(响应时间权重轮询)
  • RetryRule(重试)
  • BestAvailableRule(最小并发)
  • AvailabilityFilteringRule(可用断言过滤器)
  • ZoneAvoidanceRule (可用性其性能断言)
  • 负载均衡策略案例
    • 使用自带的策略
  • 自定义策略

前言

在之前Ribbon 负载均衡算法流程的文档中,我们分析到在获取服务时,Ribbion 会使用负载均衡规则类去计算出当前应该调用哪个服务。
 
【6】Ribbion配置类源码分析中,我们可以看到当前注入的规则是ZoneAvoidanceRule,使用的是轮询算法。
 

IRule 接口

IRule接口代表负载均衡算法策略,该类源码如下:

public interface IRule{


// 根据特定的算法中从服务列表中选取一个要访问的在线服务
// 为null时,代表当前服务不可用
public Server choose(Object key);
// 设置负载均衡器
public void setLoadBalancer(ILoadBalancer lb);
// 设置负载均衡器
public ILoadBalancer getLoadBalancer();
}