β

Dubbo–常见负载均衡算法分析

Harries Blog™ 22 阅读

最近看Dubbo 源码 时,看到了 LoadBanlance 相关算法,以此为问题出发点, 总结 下这方面相关的常见算法。( 本文和Dubbo源码并没有太大的关系,只是属于这个系列中遇到的知识总结 )

负载均衡 的目的是什么?

讨论负载均衡,那么归根结底其要解决的问题是什么?当一台 服务器 的承受能力达到上限时,那么就需要多台服务器来组成 集群 ,提升应用整体的吞吐量,那么这个时候就涉及到如何合理分配客户端请求到集群中不同的机器,这个过程就叫做负载均衡,当然这也是负载均衡要解决的问题。

由于服务器之间的处理能力差异,因此每台服务器需要有自己的权重比例,为了更好的描述后面所涉及到的算法,因此抽象出一个 Server 类,代表集群中的服务器。 LoadBalance 接口代表负载均衡算法。

public class Server {
  /**
   * 服务器地址
   */
  private String address;
  /**
   * 服务器权重
   */
  private Integer weight;

}

public interface LoadBalance {
  /**
   * 根据负载均衡算法选择最合适的一个Server
   * @param servers 客户端集合
   * @return result
   */
  Server select(List<Server> servers);

}
作者:Harries Blog™
追心中的海,逐世界的梦
原文地址:Dubbo–常见负载均衡算法分析, 感谢原作者分享。

发表评论