摘 要:在集群负载均衡技术中,负载均衡算法的好坏直接影响负载均衡系统的性能。蚁群算法是一种很有效的组合优化算法。在蚁群算法的基础上,文章提出了一种与遗传算法相融合的基于基本蚁群算法的混合智能负载平衡算法。算法中遗传特征的引入,有效地改善了传统蚁群算法容易陷入局部最优解的缺陷,极大地提高了算法的收敛速度,有效地实现了集群的动态负载均衡。
关键词:集群;负载均衡;蚁群算法;遗传算法;混合智能
0 引言
集群技术以其高可用性等特性,近年内得到了快速发展。但现行的集群系统,大多采用静态负载均衡机制,由于影响客户访问频率的因素很多,且难以预测,静态调度往往不能令人满意,因此设计出一种高效、适用面广、稳定可靠的负载均衡算法,在计算机集群系统中就显得非常重要。此时,可以考虑根据各服务器运行时的负载情况及其它信息进行动态的负载均衡,最直观的办法是将客户请求分配给当前负载最低的成员服务器。
目前,各种负载平衡算法层出不穷,但由于这些算法往往基于特定的集群结构,因此非但不具备通用性,而且对于异构集群,造成了软件资源的极大浪费。为了解决以上问题,本文在基本蚁群算法的基础上,提出了一种比较理想的负载均衡解决方案——一种蚁群算法和遗传算法相融合的混合智能负载均衡算法。此算法以当前集群中可用节点机CPU的占用率作为系统实时负载对请求进行动态分配的依据,在蚁群算法的基础上,融入遗传算法,利用蚁群算法和遗传算法良好的全局搜索能力,将其运用到网络请求分配中,实现了一个性能优良的负载均衡系统。
1 基于基本蚁群模型的集群负载均衡算法及其实现
1.1蚁群算法
蚁群优化算法是由意大利学者M.Don20等人受到蚂蚁觅食行为的启发提出来的一种可以用来解决NP-hard问题中的离散组合优化问题的优化算法。蚁群算法以其并行性、协同工作机制、全局优化、鲁棒性和易于与其它启发式算法结合等特点,应用范围遍及到许多科学技术及工程领域。
1.2集群负载均衡
在集群负载均衡技术中,负载均衡算法是核心,它的好坏直接影响均衡系统的性能,客户端请求的分配与作业调度原理一致,所以可将多个请求分配到后台若干个服务器上处理,以使总的请求响应时间“最小化”,进而“最优化”服务器端CPU的利用率。
集群服务器动态负载均衡可以描述成:在N个新到的任务、M个节点机、各个节点机的负载状况各不相同的情况下,找到一个最优的调度方法,使得整个任务处理的时间最短,从而提高整个集群服务器系统的响应速度。由于在一次分配方案中,负载偏差率反映的是各CPU负载的总体分布规律,所以本文的目标函数就采用这个负载偏差率。目标函数可以表示如下:
ei=fi-F(X) (2)
上式中的fi(ni,si表示在本次分配方案下,第i个节点机上分配代价的一个预测函数,其定义如下:
fi=(ni+1)×Si (3)
式(3)中的Si为第i个节点机的CPU占用率。
式(2)中的F(X)表示系统的CPU平均分配代价的预算值,其定义如下:
负载偏差率总是在0~1之间取值,值越小,表明CPU的负载分布越均匀,系统整体的性能越高。
1.3基本蚁群算法实现
在每个任务处分别设置1个蚂蚁,如果任务分配给节点机j,j=1,2……N,蚂蚁就在节点j上留下信息素(也就是一定的信息),信息素的浓度越高表明该计算机完成作业的数量多,速度快,该计算机被选择的概率越大。
当有一个节点机i加入时,先初始化该资源的信息素:
令Tshartj=L,其中:shartj为初始时刻个节点机上的信息素强度,L为常数。
将任务分配给某个节点机后,如果任务完成,则该节点上的信息素信息调整公式如下:
式(5)中,newj表示信息素修改后节点机j上的信息素强度,oldj表示信息素修改前节点机j上的信息素强度,p表示信息素挥发系数(取0.2),1-p则表示信息素残留因子,△Tj表示在本次任务分配中节点机j上的信息素的增量。初始时刻,shartj=L,△T=0。式(6)中,△TKj:表示第k只蚂蚁在本次循环中在节点j上释放的信息素强度,其中k=1,2……N。