这篇文章一个是记录自己RPC框架中的负载均衡实现,另一个其实更多在于介绍dubbo
的负载均衡策略,因为自己实现的负载均衡算法较为简单,也是从dubbo
中借鉴而来。
代码实现
首先还是介绍自己实现的负载均衡。
LoadBalance 接口 :@SPI
表明可以通过扩展点加载机制来获取
@SPI
public interface LoadBalance {
String selectServiceAddress(List<String> serviceAddresses, String rpcServiceName);
}
AbstractLoadBalance 抽象类 :doSelect()
抽象方法留给子类实现
public abstract class AbstractLoadBalance implements LoadBalance{
@Override
public String selectServiceAddress(List<String> serviceAddresses, String rpcServiceName) {
i