轮询调度算法(Round-Robin Scheduling) 和 权重轮询调度算法(Weighted Round-Robin Scheduling)
来源:互联网 发布:vep视觉训练软件 编辑:程序博客网 时间:2024/05/20 13:38
循环调度(Round Robin Scheduling)算法
循环调度(Round Robin Scheduling)算法就是以循环的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
在系统实现时,我们引入了一个额外条件,当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切出服务(如屏蔽服务器故障和系统维护),同时与其他加权算法保持一致。所以,算法要作相应的改动,它的算法流程如下:
循环调度算法流程
假设有一组服务器S = {S0, S1, …, Sn-1},一个指示变量i表示上一次选择的
服务器,W(Si)表示服务器Si的权值。变量i被初始化为n-1,其中n > 0。
j = i;do
{j = (j + 1) mod n;if (W(Sj) > 0)
{ i = j; return Si;}} while (j != i);return NULL;
循环调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,循环调度算法容易导致服务器间的负载不平衡。
权重轮询调度算法(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;}
由于权重轮询调度算法考虑到了不同服务器的处理能力,所以这种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。所以,在实际应用中比较常见。
总结
轮询调度算法以及权重轮询调度算法的特点是实现起来比较简洁,并且实用。目前几乎所有的负载均衡设备均提供这种功能。
- 权重轮询调度算法(Weighted Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling) 和 权重轮询调度算法(Weighted Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 轮询调度算法(Round-Robin Scheduling)
- 加权轮叫调度(Weighted Round-Robin Scheduling)
- 轮叫调度(Round-Robin Scheduling
- RR调度(Round-robin scheduling)简介
- Round-robin 轮询调度详解
- Round-Robin Scheduling
- Round Robin Scheduling
- Round Robin 轮叫调度
- lvs 轮叫调度(Round-Robin)算法 源码分析
- Jos - lab4 (Part A) Round-Robin Scheduling
- Miller_Rabin大素数测试 与 Pollard_rho整数分解模版
- C++学习笔记——pair与map遍历深究
- tableview模版自定义willDisplayCell改变字体颜色
- Android Universal Image Loader 源码分析
- 卡尔曼滤波_1
- 轮询调度算法(Round-Robin Scheduling) 和 权重轮询调度算法(Weighted Round-Robin Scheduling)
- 科学收集并分析Android用户敏感信息实战
- block知识点回顾
- Android 内存泄漏总结
- Java版的Shell程序
- Spring启动后获取所有拥有特定注解的Bean
- 并查集详解
- POJ-2513 Colored Sticks
- C - Saruman's Army