一种流媒体服务器负载动态分配方法
技术领域
本发明涉及计算机流媒体技术领域,尤其涉及流媒体服务器集群的负载均衡方法。
背景技术
随着互联网技术、流媒体技术的快速发展,互联网已成为人们日常生活中必不可少的部分;同时,互联网的服务方式也从传统的网页信息浏览、文字图片信息等逐渐转变为在线视频点播、直播等面向用户的新型服务方式,流媒体业务已成为互联网最流行的业务之一。
流媒体服务器集群的核心是集群负载均衡。现有的负载均衡算法可以分为静态负载均衡算法和动态负载均衡算法。静态负载均衡算法按照固定的方式进行分配,其算法简单、运行速度快,但是条件过于理想化,不能用于复杂的应用场景。动态负载均衡算法通过在一定时间内,不断更新集群各节点的状态信息,通过一定方式计算其负载,根据负载均衡算法,选择节点处理当前请求,不过该算法也有其局限性,即其主要针对的是I/O密集型任务系统,当I/O任务较少时,计算反馈值的过程反倒会变成相对耗时的部分。一种基于神经网络反馈机制的改进型的加权最小连接数算法,该算法使用了BP神经网络来进行反馈控制;在集群中,由于各个节点服务器具有不同的处理能力,因此其所能承受的负载也是不一样的,在处理过程中,每台节点服务器的处理能力和任务分配情况会出现一定的偏差,这时就可以利用BP神经网络反馈机制来修正权值和阈值,但是该算法在计算负载比率时存在一定波动,而负载比率又是影响计算流程的一个重要参数,因此需要稳定下来。
传统动态负载均衡算法负载权值的计算是按照一定的加权比例进行的,比较经验主义,可能影响负载权值计算的准确性。层次分析法由决策者根据对属性的主观重视程度和凭借个人经验赋权的主观决策方法,主观因素太强。虽然利用层次分析法只需要少量数据信息通过简单的计算就可以得到决策结果,但是人为地主观选择和个人偏好等对决策结果有较大影响,容易导致决策结果不准确,不同决策者的评价结果会有很大的不同,使得评价难度增大。熵权法是一种客观评价方法,它是根据原始数据信息进行评价,并且很大程度上取决于数据本身的离散性,权重评价结果与被评价指标的数据直接相关,因此原始数据会直接影响最终结果,假如原始数据有较大差异,则会对评价效果有很大的影响,获得的决策结果可能与该评价指标的认识存在出入。综上所述,以上技术有如下不足:1)负载指标权值系数计算过于主观;2)大量并发时,流媒体服务器集群可能出现负载倾斜。
发明内容
针对上述问题,本发明提一种流媒体服务器负载动态分配方法,解决了上述现有的不足,该方法优化了负载指标权重系数与负载权值的计算方法,采用了最小二乘法组合优化层次分析法-熵权法,既将主观赋权与客观赋权结合的方法;反馈周期改为通过集群节点任务数变化量来动态修改;通过LAE-KNN算法,根据负载信息将集群节点分类,LAE-KNN算法为基于最小二乘法组合优化层次分析-熵权法的KNN分类算法,将任务在总权值比重最小的类中用加权轮询的方法分配节点;同时通过设置负载指标的阈值实现负载迁移,在每个反馈周期内根据负载信息将超过负载指标阈值的节点的随机任务重定向到低负载类,以提高集群的负载均衡效果。
本发明提供如下技术方案:一种流媒体服务器负载动态分配方法,包括以下步骤:
步骤1、初始化集群节点的负载反馈周期T、连接数统计周期Tlink;
步骤2、集群节点的负载反馈周期T到期,负载均衡器请求集群节点的负载状况,集群返回其各节点的负载指标信息,任务连接数,计算出当前各个节点的负载权值;
步骤3、负载均衡器根据集群节点的负载指标对该节点进行重新分类,计算并更新类的总权值;
步骤4、是否存在负载指标超过阈值的集群节点;若存在,从该节点上随机选取任务,随后将其迁移到低负载类中,转向步骤7;若不存在,则继续;
步骤5、连接数统计周期Tlink是否到期:若Tlink到期,则计算连接数的变化量Δlink,并根据Δlink更新负载反馈周期T及对应的定时器;若没有,则继续;
步骤6、根据各类的总权值比重来确定处理用户任务的类;
步骤7、在类中根据加权轮询算法选取一个集群节点来处理该任务;
步骤8、负载反馈周期T是否到期:若不是,则转向步骤5;若是,则继续;
步骤9、集群系统运行是否结束:若不是,则转向2;若是,停止集群系统。
在步骤1中,各集群节点均处于空载状态,根据当前集群节点各性能指标,按照于最小二乘法组合优化层次分析-熵权法确定的负载指标权重系数和各集群节点的负载权值L。
层次分析法中,为了使硬件资源指标的重要性判断定量化,采用Saaty标度表进行评判,得到一个判断矩阵,计算出判断矩阵的特征向量,该特征向量就是计算集群节点负载时CPU利用率、内存利用率、带宽利用率、磁盘I/O利用率的负载指标的权系数;
根据判断矩阵解出对应的特征向量ω:
ω=(ωc,ωm,ωn,ωI)t
其中,ωc,ωm,ωn,ωI分别为计算集群节点负载时CPU利用率、内存利用率、带宽利用率、磁盘I/O利用率的负载指标的系数;
熵权法确定负载指标的权系数,通过计算熵值可以判断某项负载指标的离散程度,作为衡量负载指标对负载综合评价的影响,其中,负载指标的离散程度越大,该负载指标对应的权重就越大;
应用熵权法确定负载指标权系数的步骤如下:
选取m台服务器,n个负载评价指标,则xij(i=1,2...m;j=1,2...n)为第i台服务器第j个评价指标;
数据的归一化处理,对于正向指标来说,数值越高评价结果越好,对于负向指标来说,数值越低评价结果越好,需要采用不同的算法完成正向指标和负向指标数值数据标准化处理;
正向指标如下:
负向指标如下:
将归一化的结果x’ij记为xij;
计算第j项负载评价指标下第i台服务器值占该指标的比重
计算第j项负载指标的熵值
其中,k=1/ln(m)>0,满足ej≥0;
计算信息熵冗余度
dj=1-ej,j=1,2,...,n
计算各项负载指标的权重
应用层次分析法获得主观权重,熵权法获得客观权重,再通过最小二乘法获得最佳组合权重。由层次分析法和熵权法得到的各指标权重分别为ωj、j=1,2,...,n,μj表示各评估指标的综合权重,对于某一评价对象来说,其评价值为:
最小二乘优化组合权重模型如下式所示:
其中,
求解上述组合权重模型,即可得到各负载评价指标的综合权重值即个节点的各项负载指标权系数;
则第i个节点的负载权值Li:
其中,为第i个节点的CPU利用率,/>为第i个节点的内存利用率,/>为第i个节点的带宽利用率,/>为第i个节点的磁盘利用率,μ是负载指标权重系数的向量。
分类采用LAE-KNN分类算法,从已知样本集中去寻找与待分类样本最相似的k个样本,再找出其中数量最多的某一类,则该样本就属于该类,选择的样本都是已经正确分类的对象,采用加权欧氏距离来确定样本之间的相似度,加权欧氏距离的计算如式所示:
其中,j样本的属性个数;μj为上文通过基于最小二乘法组合优化层次分析-熵权法求得的各个负载指标的权重;xj为待分类样本的属性;yj为对应训练样本的属性;
每当调度服务器采集到上游集群节点的负载指标后,使用LAE-KNN算法依次计算节点到已知样本间的加权欧氏距离,得到距离最近的K个样本的类别,然后选择数量最多的一类作为当前节点的类别。
每个周期T内,通过收集到的负载信息判断节点的负载是否需要迁移,在处理任务前使节点的负载指标能都在阈值内,防止处理下一个任务时出现宕机的情况;
运用重定向的功能,进行迁移负载;若某个上游节点的某个负载指标超过阈值,就随机选择该节点的部分任务重定向到其他的低负载类中的上游节点,每个负载指标的利用率的阈值分别为:CPU利用率U_cpu≤80%;内存利用率U_mem≤90%;带宽利用率U_net≤90%;磁盘I/O利用率U_io≤90%,按各类的总权值比重,将任务分配到总权值最小的节点类,在类中通过加权轮询的方法分配上游节点。
步骤1中,为了能实时的获取上游集群节点的负载信息,采用动态的负载反馈周期T,动态的负载反馈周期T的初始值为10s,计算机每秒中集群节点连接数量的变化量Δlink,以此来判断周期T的变化量ΔT的大小,其中,Δlink为每秒钟集群节点任务数的变化量;ΔT为反馈周期T的变化量,任务数增加则T减小,反之增大;Δlink变化大小在0到10之间时ΔT变化1s,负载反馈周期T的最大值设置为20s。
通过上述描述可以看出本方案中相比现有技术,有益效果为:1、最小二乘法组合优化层次分析-熵权法:通过层次分析法计算出主观的负载权值系数,在通过熵权法得到客观的负载权值系数,最后通过最小二乘法组合,得到最终的负载权值系数。2、通过LAE-KNN算法,根据负载信息将集群节点分类,将任务在总权值比重最小的类中用加权轮询的方法分配节点:KNN算法采用欧氏距离进行聚类,考虑到在计算节点权值时负载指标的权重系数是不一样的,且采用的最小二乘法组合优化层次分析-熵权法得到的指标权重系数,因此在计算距离时加上最小二乘法组合优化层次分析-熵权法得到的负载权值系数,使分类时更加准确。
附图说明
图1是当客户端请求视频时流媒体服务器集群处理过程图。
图2是流媒体服务器集群中负载均衡器中的处理过程。
图3是改进的负载均衡方法的流程示意图。
图4是LAE-KNN算法对集群节点分类的流程图。
具体实施方式
下面将结合本发明具体实施方式中的附图,对本发明具体实施方式中的技术方案进行清楚、完整地描述,显然,所描述的具体实施方式仅仅是本发明一种具体实施方式,而不是全部的具体实施方式。基于本发明中的具体实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他具体实施方式,都属于本发明保护的范围。
通过附图可以看出,本方案提供了一种流媒体服务器负载动态分配方法,包括以下步骤:
步骤1、初始化集群节点的负载反馈周期T、连接数统计周期Tlink;
步骤2、集群节点的负载反馈周期T到期,负载均衡器请求集群节点的负载状况,集群返回其各节点的负载指标信息,任务连接数,计算出当前各个节点的负载权值;
步骤3、负载均衡器根据集群节点的负载指标对该节点进行重新分类,计算并更新类的总权值;
步骤4、是否存在负载指标超过阈值的集群节点;若存在,从该节点上随机选取任务,随后将其迁移到低负载类中,转向步骤7;若不存在,则继续;
步骤5、连接数统计周期Tlink是否到期:若Tlink到期,则计算连接数的变化量Δlink,并根据Δlink更新负载反馈周期T及对应的定时器;若没有,则继续;
步骤6、根据各类的总权值比重来确定处理用户任务的类;
步骤7、在类中根据加权轮询算法选取一个集群节点来处理该任务;
步骤8、负载反馈周期T是否到期:若不是,则转向步骤5;若是,则继续;
步骤9、集群系统运行是否结束:若不是,则转向2;若是,停止集群系统。
在步骤1中,各集群节点均处于空载状态,根据当前集群节点各性能指标,按照于最小二乘法组合优化层次分析-熵权法确定的负载指标权重系数和各集群节点的负载权值L。
层次分析法中,为了使硬件资源指标的重要性判断定量化,采用Saaty标度表进行评判,得到一个判断矩阵,计算出判断矩阵的特征向量,该特征向量就是计算集群节点负载时CPU利用率、内存利用率、带宽利用率、磁盘I/O利用率的负载指标的权系数;
根据判断矩阵解出对应的特征向量ω:
ω=(ωc,ωm,ωn,ωI)t
其中,ωc,ωm,ωn,ωI分别为计算集群节点负载时CPU利用率、内存利用率、带宽利用率、磁盘I/O利用率的负载指标的系数;
熵权法确定负载指标的权系数,通过计算熵值可以判断某项负载指标的离散程度,作为衡量负载指标对负载综合评价的影响,其中,负载指标的离散程度越大,该负载指标对应的权重就越大;
应用熵权法确定负载指标权系数的步骤如下:
选取m台服务器,n个负载评价指标,则xij(i=1,2...m;j=1,2...n)为第i台服务器第j个评价指标;
数据的归一化处理,对于正向指标来说,数值越高评价结果越好,对于负向指标来说,数值越低评价结果越好,需要采用不同的算法完成正向指标和负向指标数值数据标准化处理;
正向指标如下:
负向指标如下:
将归一化的结果x’ij记为xij;
计算第j项负载评价指标下第i台服务器值占该指标的比重
计算第j项负载指标的熵值
其中,k=1/ln(m)>0,满足ej≥0;
计算信息熵冗余度
dj=1-ej,j=1,2,...,n
计算各项负载指标的权重
应用层次分析法获得主观权重,熵权法获得客观权重,再通过最小二乘法获得最佳组合权重。由层次分析法和熵权法得到的各指标权重分别为ωj、j=1,2,...,n,μj表示各评估指标的综合权重,对于某一评价对象来说,其评价值为:
最小二乘优化组合权重模型如下式所示:
其中,
求解上述组合权重模型,即可得到各负载评价指标的综合权重值即个节点的各项负载指标权系数;
则第i个节点的负载权值Li:
其中,μ是负载指标权重系数的向量,为第i个节点的CPU利用率,/>为第i个节点的内存利用率,/>为第i个节点的带宽利用率,/>为第i个节点的磁盘利用率。
分类LAE-KNN分类算法,从已知样本集中去寻找与待分类样本最相似的k个样本,再找出其中数量最多的某一类,则该样本就属于该类,选择的样本都是已经正确分类的对象,采用加权欧氏距离来确定样本之间的相似度,加权欧氏距离的计算如式所示:
其中,j样本的属性个数;μj为上文通过基于最小二乘法组合优化层次分析-熵权法求得的各个负载指标的权重;xj为待分类样本的属性;yj为对应训练样本的属性;
每当调度服务器采集到上游集群节点的负载指标后,使用LAE-KNN算法依次计算节点到已知样本间的加权欧氏距离,得到距离最近的K个样本的类别,然后选择数量最多的一类作为当前节点的类别。
每个周期T内,通过收集到的负载信息判断节点的负载是否需要迁移,在处理任务前使节点的负载指标能都在阈值内,防止处理下一个任务时出现宕机的情况;
运用重定向的功能,进行迁移负载;若某个上游节点的某个负载指标超过阈值,就随机选择该节点的部分任务重定向到其他的低负载类中的上游节点,每个负载指标的利用率的阈值分别为:CPU利用率U_cpu≤80%;内存利用率U_mem≤90%;带宽利用率U_net≤90%;磁盘I/O利用率U_io≤90%,按各类的总权值比重,将任务分配到总权值最小的节点类,在类中通过加权轮询的方法分配上游节点。
步骤1中,为了能实时的获取上游集群节点的负载信息,采用动态的负载反馈周期T,动态的负载反馈周期T的初始值为10s,计算机每秒中集群节点连接数量的变化量Δlink,以此来判断周期T的变化量ΔT的大小,其中,Δlink为每秒钟集群节点任务数的变化量;ΔT为反馈周期T的变化量,任务数增加则T减小,反之增大;Δlink变化大小在0到10之间时ΔT变化1s,负载反馈周期T的最大值设置为20s。
在图2中1)A1-A8:Edge Server的请求处理过程;2)B1-B5:负载均衡器动态更新反馈周期和集群节点的分类;3)C1-C4:服务器过载时的负载迁移过程;
Edge节点的任务请求处理的过程:Edge节点发起任务请求,存入调度服务器的任务请求队列,由任务分配模块为其分配Upstream节点,完成之后将任务转发到指定的Upstream节点执行任务。
动态更新反馈周期的过程:每当反馈周期T的定时器到达时间,负载均衡器就向集群节点请求负载指标信息,随后根据返回的负载指标信息更新其反馈周期T及所属的分类,最后更新定时器T。负载迁移过程:当某个节点的某个负载指标超过了阈值时,通过重定向功能,将任务迁移到低负载的节点。
以上所述仅为本公开的优选具体实施方式,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。