`
shyboy0358
  • 浏览: 33783 次
文章分类
社区版块
存档分类
最新评论

负载均衡中的轮询调度算法

阅读更多
轮询调度算法是负载均衡技术实现中的核心技术,也是负载均衡设备中的核心实现基础
1:轮询调度算法(Round-Robin Scheduling)
轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。
算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
轮询调度算法流程
  假设有一组服务器N台,S = {S1, S2, …, Sn},一个指示变量i表示上一次选择的服务器ID。变量i被初始化为N-1。其算法如下:
j = i;
do 
{
j = (j + 1) mod n;
i = j;
return Si;
} while (j != i);
return NULL;

   轮询调度算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。
  所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
2:权重轮询调度算法(Weighted Round-Robin Scheduling)
上面所讲的轮询调度算法并没有考虑每台服务器的处理能力,在实际情况中,可能并不是这种情况。由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。
权重轮询调度算法流程
  假设有一组服务器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;

}

由于权重轮询调度算法考虑到了不同服务器的处理能力,所以这种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。所以,在实际应用中比较常见。
总结
轮询调度算法以及权重轮询调度算法的特点是实现起来比较简洁,并且实用。目前几乎所有的负载均衡设备均提供这种功能



分享到:
评论

相关推荐

    负载均衡应用服务器控制用户的算法

    轮询调度算法(Round-Robin Scheduling)和权重轮询调度算法的比较,在分布式软件系统中,集中控制多台服务器每台登陆用户的算法。

    分布式负载均衡集群架构设计

    两太负载均衡互为主从,由keepalived配置的具体调度算法调度负载均衡服务器 2.DNS轮询: DNS轮询请求负载均衡服务器,负载均衡服务器通过调度选择负载均衡服务器来转发请求 3.Web服务器集群: 由至少两台Nginx Web...

    matlab轮询调度算法代码-rt-ifttt:“RT-IFTTT:具有触发条件感知的灵活轮询间隔的实时物联网框架”(RTSS2017)中使用

    matlab初步调度算法代码RT-IFTTT:模拟 RT-IFTTT是一个基于applet的实时IoT框架,具有条件感知的灵活轮询间隔。 RT-IFTTT分析当前传感器值,触发条件和框架中所有小程序的约束,并动态计算每个传感器的最佳轮询间隔...

    一种多源协作网络中轮询节点选择算法 (2013年)

    与之前所提出的中继选择选择算法相比,所提出的中继节点轮询分组调度算法,不需要额外的信令开销,复杂度低,并保证中继间的负载均衡.此外,为保证用户传输的公平性,提出一种结合多用户分集的轮询分组调度算法....

    负载调度器全流程

    基于LVS,做一个HTTP负载调度器,共使用3台虚拟机,1台作为LVS调度器,2台作为实际服务器。本文采用的是NAT调度模型,调度算法为轮询。

    深入浅析nginx四种调度算法和进阶

    upstream 支持4种负载均衡调度算法: A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器; B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器; C)url_hash:按访问url的hash...

    Storm环境下基于权重的任务调度算法

    大数据流式计算平台Apache Storm默认采用轮询的方式进行任务调度,未考虑到拓扑中各任务计算开销的差异以及任务之间不同类型的通信模式,在负载均衡和通信开销方面存在较大的优化空间。针对这一问题,提出 一种Storm...

    Nginx负载均衡

    负载均衡调度算法 轮询(rr) :按时间顺序逐一分配到不同的后端服务器(默认) 权重(weight):加权轮询(wrr)。weight值越大,分配到的访问率越高。 源IP地址hash调度方法(ip_hash):将每个请求按访问IP的hash值来分配,...

    dpvs:DPVS是基于DPDK的高性能第4层负载均衡器

    介绍DPVS是基于高性能第4层负载均衡器。 它源自Linux Virtual Server 及其修改版 。... 不同的调度算法,例如RR,WLC,WRR,MH(磁悬浮哈希),Conhash(持续哈希)等。 用户空间精简版IP堆栈(IPv4 /

    基于docker容器的高并发web系统架构设计与实现.caj

    基于工作负载特性的动态负载均衡策略比传统轮询、加权轮询策略在 高并发流量下有更好的吞吐量以及响应时间等性能表现,基于灰度模 型预测的弹性伸缩机制比传统KubemetesHPA机制在短时间内...

    基于springBoot自研微服务框架+源代码+文档说明

    &lt;module&gt;orion-ribbon&lt;/module&gt; 负载均衡算法 &lt;module&gt;orion-archer&lt;/module&gt; 远程服务调度框架 &lt;module&gt;orion-monitor&lt;/module&gt; 链路监控 &lt;module&gt;orion-client&lt;/module&gt; 客户端测试包 &lt;module&gt;orion-server...

    基于标识支持区分QoS的PPS调度机制 (2011年)

    该机制以业务类为单位管理网络数据流,采用按序排队的思想解决保序问题,在汇聚模块设置少量缓存,采用双指针轮询算法实现区分QoS保障,保证了交换对高层不同业务类的有效支持。仿真实验结果表明,该机制在满负载情况下可...

    最强lvs总结1

    (1).RR 轮询 (2).WRR 加权轮询 (1).LC 最少连接 (2).WLC 加权最少连接 (3).SED 最少期望延迟 (4).NQ 从不排队调度法

Global site tag (gtag.js) - Google Analytics