一、ILoadBalancer
Ribbon实现负载均衡的核心接口为ILoadBalancer
public interface ILoadBalancer {
//添加后端服务
public void addServers(List<Server> newServers);
//选择一个后端服务
public Server chooseServer(Object key);
//标记一个服务不可用
public void markServerDown(Server server);
//获取当前可用的服务列表
public List<Server> getReachableServers();
//获取所有后端服务列表
public List<Server> getAllServers();
}
ILoadBalancer 接口的类层结构如下所示:

核心功能实现在BaseLoadBalancer类中,核心组件有IRule、IPing和LoadBalancerStats等。
1. IRule
IRule 接口是对负载均衡策略的一种抽象,可以通过实现这个接口来提供各种适用的负载均衡算法
public interface IRule{
public Server choose(Object key);
public void setLoadBalancer(ILoadBalancer lb);
public ILoadBalancer getLoadBalancer();
}
choose 方法是该接口的核心方法,根据key从指定服务列表中获取对应的服务
2. IPing
IPing 接口判断目标服务是否存活,定义如下:
public interface IPing {
public boolean isAlive(Server server);
}
可以看到 IPing 接口中只有一个 isAlive() 方法,通过对服务发出"Ping"操作来获取服务响应,从而判断该服务是否可用。
3. LoadBalancerStats
Spring Cloud Netflix Ribbon 负载均衡详解

最低0.47元/天 解锁文章
167万+

被折叠的 条评论
为什么被折叠?



