常用负载均衡算法

在服务器集群中,为了避免某一台服务器因过载而崩溃,除了每台服务器限定了最大连接数外,还对服务器的负载进行了均分。本文介绍了几个常见的负载均衡算法。

随机

通过随机数生成算法从服务器组中选取一个,然后把请求发送给它。

轮询

所有的服务器组成一个队列,不管连接数、响应时间,从队列首取出一个,然后放到队尾,不断循环。最终把所有的请求平均分给所有的服务器。适用于服务器性能差异不大的情况。

加权轮询

给每台服务器加一个权重值,高权重的服务器将被分配高比例的连接。假设有一组服务器S = {S0, S1, …, Sn-1},W(Si)表示服务器Si的权值,一个指示变量i表示上一次选择的服务器,指示变量cw表示当前调度的权值,max(S)表示集合S中所有服务器的最大权值,gcd(S)表示集合S中所有服务器权值的最大 公约数。变量i初始化为-1,cw初始化为零。

while (true) {
  i = (i + 1) mod n;
  if (i == 0) {
     cw = cw - gcd(S);
     if (cw <= 0) {
       cw = max(S);
       if (cw == 0)
         return NULL;
     }
  }
  if (W(Si) >= cw)
    return Si;
} 此算法的思想是先把请求分配给高权重的机器,然后降低其权值,直到有一个机器的权值小于它,才把请求分配给权值第二大的机器。
最少连接

由于各服务器处理请求的时间不同,因此同一时刻各服务器的当前连接数都不同。此算法将到来的请求分配给当前连接数最少的服务器。处理速度越快的服务器将被分配到越多的连接。

哈希

可以用来hash的输入有很多,比如源IP地址,URL,cookie

参考

1、解析nginx负载均衡

2、加权轮叫调度(Weighted Round-Robin Scheduling)


转载:http://blog.lastww.com/2013/07/09/load-blance-algorithm/





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值