《几种常见的负载均衡算法的优化》由会员分享,可在线阅读,更多相关《几种常见的负载均衡算法的优化(5页珍藏版)》请在金锄头文库上搜索。
1、几种常见的负载均衡算法的优化 俞楼涛 浙江省诸暨市牌头中学 摘 要: 如今越来越多的人使用互联网, 而负载均衡算法一直在背后支撑着后端网络服务系统。但现在的负载均衡算法算法仍无法做到服务器集群的均衡分配, 并且传统的负载均衡算法在实际生产中会存在各种各样的问题, 为了提高负载均衡算法的效率, 并且综合考虑多种客观因素对服务器性能的影响。本文通过客观因素加权的方式对负载均衡算法进行了优化。利用权值计算得相应服务器综合能力评分再按比例分配任务。保证性能较好的节点分配到更多任务, 使得分配更加均匀。关键词: 负载均衡; 负载权值; 负载均衡效率; 算法优化; 引言随着信息时代的全民化, 网络业务量和
2、数据流量呈几何级数增长。网络拥堵或服务超载成为网络使用最严峻的问题。进行网络活动时, 出现了越来越多加载失败, 给用户提供良好、舒适的网络环境是每个网络运营商急需解决的问题, 解决的方法多种多样, 但面对多种方法时应当选出最高效率, 最好使用资源的方法。首先人们会去寻找更高配置的硬件设备, 试图从硬件方面改善承受能力网络流畅度。增加内存、硬件升级、增加服务器的数量等应对方法。但这些方法有时却无法解决问题, 反而造成大量资源浪费。如图 1, module-A 和 module-B 提供一个服务, module-A 需要将任务提交给 module-B 中的机器处理, 若任务分配不均会导致后面 ma
3、chine-2.machine-n 机器的资源浪费。在如此现实背景下, 人们开始新的技术研究, 负载均衡技术应运而生。负载:就是后端系统的承载能力。如同等条件下, 一个 1 核 1G 内存的机器的承载能力一般会比 8 核 8G 内存的机器差;相同配置下, 一个 CPU 利用率为 80%的机器比 30%的承载能力一般差等等。均衡:保证后端请求的平衡。比如:在同等情况下, 分配到多台机器的请求要相当;有些情况下, 同一用户尽可能分配到同一台机器等等。图 1 通过结构因子 B 提取 A 的边界 下载原图所谓负载均衡就是建立在现有网络结构之上, 提供一种有效廉价的方法扩展网络设备和服务器带宽以增加吞吐
4、量, 加强网络数据处理能力, 提高网络灵活性和可用性。通俗来说相当于将原本一个工人的活分给多个工人完成, 减少单个工人因超负荷工作而崩溃的情况。负载均衡算法各有利弊, 人们探索更先进、更高效的负载均衡算法来支撑起更大更快的网络服务。在现有的算法上, 扬长避短, 将算法变得更高效、更合理、更能满足实际情况。1. 负载均衡算法的介绍1.1 负载均衡算法现有的负载均衡算法主要分为静态和动态3,4两类。静态负载均衡算法以固定的概率分配任务, 不考虑服务器的状态信息, 如轮转算法、加权轮转算法等;动态负载均衡算法以服务器的实时负载状态信息来决定任务的分配, 如最小连接法、加权最小连接法等。1.2 常见负
5、载均衡算法的介绍1.2.1 轮询询法, 就是将用户的请求轮流分配给服务器, 就像是挨个数数, 轮流分配。这种算法比较简单, 他具有绝对均衡的优点, 但是也正是因为绝对均衡它必须付出很大的代价, 例如它无法保证分配任务的合理性, 无法根据服务器承受能力来分配任务。1.2.2 随机法随机法, 是随机选择一台服务器来分配任务。它保证了请求的分散性达到了均衡的目的。同时它是没有状态的不需要维持上次的选择状态和均衡因子5。但是随着任务量的增大, 它的效果趋向轮询后也会具有轮询算法的部分缺点。1.2.3 最小连接法最小连接法, 将任务分配给此时具有最小连接数的节点, 因此它是动态负载均衡算法。一个节点收到
6、一个任务后连接数就会加 1, 当节点故障时就将节点权值设置为 0, 不再给节点分配任务。最小连接法适用于各个节点处理的性能相似时。任务分发单元会将任务平滑分配给服务器。但当服务器性能差距较大时, 就无法达到预期的效果。因为此时连接数并不能准确表明处理能力, 连接数小而自身性能很差的服务器可能不及连接数大而自身性能极好的服务器。所以在这个时候就会导致任务无法准确的分配到剩余处理能力强的机器上。2. 负载均衡算法改进上一部分所提及的几种负载均衡算法都有各自不同的缺陷, 但都有一个共同点, 就是在做负载均衡的时候考虑的因素不够全面。轮训算法没有考虑服务器的性能和其对任务的承受能力, 只是简单的进行任
7、务轮流分配;随机算法克服了轮训法维持上一步状态的缺陷, 但当请求量的增大, 随机算法也会趋向轮训法的结果;最小连接法在分配任务的时候只考虑了当前服务器的连接数, 但任务量并不是服务器承受能力唯一标准。这些算法最多只考虑了服务器的性能因素, 但实际生产中还会有各种各样的客观因素, 下面是对一些常见客观因素的分析。2.1 常见的客观因素分析2.1.1 地理因素其中服务器与节点距离影响着服务器的反馈时间。正如长跑与短跑, 速度再慢的 50m 也比速度再快的 3000m 所需时间少。所以服务器与节点距离越小请求得到反馈的时间也会越小。在两台机器同时可用的情况下, 访问距离远的机器代价会比访问近的机器代
8、价高, 所以我们会优先选择距离近的服务器。2.1.2 当前连接数即使一台服务器性能再好, 当它的连接数增大时, 也会造成性能瓶颈, 使处理能力下降。因此在设计负载均衡算法时在考虑服务器本身性能好差以外还要兼顾当前连接数大小。所以将当前连接数列入影响客观因素之一。2.1.3 网络带宽网络带宽越大即单位时间内输送信息量越大, 数据处理率就越大。相当于马路越宽可容纳越多的车通过而不会造成堵车, 单位时间内经过的车就越多。不同的网络带宽会影响服务器信息处理率, 因而将网络带宽列入影响因素, 在两台服务器各项指标相同的情况下, 优先考虑网络带宽大的服务器。2.2 结合客观因素的加权算法上述三种是比较常见
9、的影响服务器效率的因素, 不同因素影响程度也不同。所以找出每种因素影响程度并对其加权, 就可实现负载均衡算法的优化。我们定义一个函数表达式来说明加权算法, 如下:如上述表达式所示, 其中 12nX、X.X 分别表示不同的影响因素, 12na、a.a分别表示影响因素 12nX、XX 的权重, 并且 12nka+a+a=1, a1, y 表示服务器的综合处理能力。如此, 若将服务器自身处理能力、地理因素、当前连接数、网络带宽作为影响服务器的四个因素, 我们设权值分别为 50%、10%、25%、15%, 那么表达式就可写成:y=50%X_1 (自身能力) +10%X_2 (地理) +25%X_3 (
10、连接数) +15%X_4 (网络带宽) 假设有 A、B、C 三个服务器, 若综合能力值分别为 75、60、90。根据75:60:90=5:4:6 的比例, 每 15 次 (5+4+6) 中有 5 次给 A, 4 次给 B, 6 次给C。以此类推不同的算法将通过加权合理化分配任务:加权轮询法:如上计算得综合能力值, 可以将任务进行如此轮训:AAAAABBBBCCCCCC。15 次任务中五次任务分配给 A, 四次分配给 B, 六次给 C, 从而达到考虑客观因素的均衡分配。加权随机法:根据上述比例可知, 一个任务应该有 5/15 的概率分配给 A, 有4/15 的概率分配给 B, 有 6/15 的概
11、率分配给 C;具体实现时可以通过 Rand 函数产生一个 015 的随机数, 根据计算综合能力值与概率原理, 当所得随机数为05 时将任务分配给 A, 当所得随机数为 610 是将任务分配给 B, 其余分配给C。通过对不同因素加权, 对不同算法的改进, 基本上能实现任务的合理分配。这一部分主要通过加权用函数表达式的形式对两种常见算法进行改良, 并举例分析 A、B、C 三台服务器的任务量分配。3. 结语负载均衡算法是解决网络堵塞问题的可靠方法。好的负载均衡算法能够发挥集群的优势, 充分利用集群的各种资源, 提高服务质量。通过分析各种常用算法, 本文提出对外界因素加权的负载均衡算法。理论上, 该算
12、法能综合实际负载和性能两个因素, 保证系统拥有更高的稳定性。但实践中仍与理论存在差距。因此在未来研究中, 将通过实验的方式来验证算法的有效性并不断提高算法的均衡效果。参考文献1Li W Z, Guo S, Xu P, et al.An Adaptive Load Balancing Algorithm for Service CompositionJ.Journal of Software, 2006, 17 (5) :1068-1077. 2Bevilacqua A.Dynamic load balancing method on a heterogeneous cluster of workstationsJ.Informatica, 1999, 23:49-56. 3Hui C C, Chanson S T.Improved strategies for dynamic load balancingJ.IEEE Concurrency, 1999, 7 (3) :58-67. 4陈登伟, 鲁智勇.网络动态负载均衡算法分析J.现代电子技术, 2003, 26 (21) :81-84. 5童瑞霞.基于动态反馈机制的集群负载均衡算法研究D.武汉理工大学, 2011.