基于Nginx动态加权的Web集群负载均衡方法及系统转让专利

申请号 : CN202010883575.8

文献号 : CN112019620B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 盛宇轩王斌郝鹏飞

申请人 : 中南大学

摘要 :

本发明公开了基于Nginx动态加权的Web集群负载均衡方法及系统,通过获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据所述属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;将所述用户请求转发至权值最大的后端服务器上处理,从而实现根据用户请求本身的属性动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部件负载过大的技术问题。

权利要求 :

1.一种基于Nginx动态加权的Web集群负载均衡方法,其特征在于,包括以下步骤:获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;

将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;

根据所述属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;

将所述用户请求转发至权值最大的后端服务器上处理;

还包括以下步骤:

在所述Web集群每处理完一次用户请求后,采集处理所述用户请求后端服务器以CPU、内存、网络带宽、IO为维度的资源使用数据,并实时统计采集次数,当采集次数达到预设次数后,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,得到多个类簇;

分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差,对于每一种维度的平均值和标准差进行以下处理:

将多个类簇的平均值与其类簇对应的平均阈值进行比较,将多个类簇的标准差分别与其类簇对应的标准阈值进行比较,根据比较结果判断所述Web集群的后端服务器是否能继续负载该维度的用户请求,当判断所述Web集群的后端服务器不能继续覆盖该维度的用户请求,则控制所述Web集群的后端服务器不再参与竞争负载该维度的用户请求;

使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,包括以下步骤:

使用采集到的所有资源使用数据构建距离分布矩阵;

记DISTi×k为所述距离分布矩阵排序后的第i距离对象与最近的第k个对象的距离,对k取不同大小的值,并通过以下公式分别计算不同大小的k值对应的Epsk值:其中, 为所述距离分布矩阵中所有距离对象与最近的第k个对象的距离的数学期望值;

对于每个不同大小的k值对应的Epsk值:计算所述距离分布矩阵的每个对象在所述Epsk范围内的其他对象个数的均值,并取均值向上取整的数作为所述Epsk值的Minpts值;

分别使用多个不同的Epsk值及对应的Minpts值对采集的所有资源使用数据进行聚类,以得到多个不同k值对应的类簇数与噪点数;

通过多个不同k值及其对应的类簇数拟合类簇数–k的关系曲线,通过多个不同k值及其对应的噪点数拟合噪点数–k的关系曲线;分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,并在所述稳定区域内寻找所述类簇数–k的关系曲线与所述噪点数–k的关系曲线的第一个相交点,并将所述第一个相交点处的k值所对应的Epsk值作为所述PDSA‑DBSCAN算法的最优Eps值,并使用所述最优Eps值及其对应的Minpts值对采集到的资源使用数据进行聚类,得到多个类簇;

分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,包括以下步骤:找寻所述类簇数–k的关系曲线的峰值和谷值,并将所述峰值对应的类簇数和谷值对应的类簇数的进行减法运算,得到所述类簇数–k的关系曲线的第一谷峰差值,将所述第一谷峰差值的10%作为所述类簇数–k的关系曲线的M值,并将k值相邻的类簇数进行差分运算,得到第一差分值,得到diff_cluster数据集;

找寻噪声数‑k的关系曲线的峰值和谷值,并将所述峰值对应的噪声数和谷值对应的噪声数的进行减法运算,得到所述噪声数–k的关系曲线的第二谷峰差值,将所述第二谷峰差值的10%作为所述噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差分运算,得到第二差分值,得到diff_noise数据集;

观测所述类簇数–k的关系曲线和所述噪声数–k的关系曲线上是否存在同一区间,且所述同一区间内的所有k值所对应的第一差分值和第二差分值是否均不大于M值向上取整的数值,所述同一区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若所述类簇数–k的关系曲线和所述噪声数–k的关系曲线上存在同一区间,且所述同一区间内的所有k值所对应的第一差分值和第二差分值均不大于M值向上取整的数值,所述同一区间在后的相邻区间存在第一差分值或第二差分值大于2M,则判断所述同一区间为稳定区域;

根据比较结果判断所述Web集群是否能继续负载该维度的用户请求,包括以下步骤:当所述类簇的平均值未超出对应的平均阈值,且所述标准差未超出对应的标准阈值时,判断所述类簇内的服务器能够继续负载对应维度的用户请求;

当所述类簇的平均值超出对应的平均阈值或所述标准差超出对应的标准阈值时,判断所述类簇内的服务器不能继续负载对应维度的用户请求;

统计各个类簇中不能继续负载的类簇个数,判断不能继续负载的类簇个数是否超过类簇总个数的一半,当不能继续负载的类簇个数超过类簇总个数的一半,判断所述Web集群中各个后端服务器不能继续负载用户此类资源类型的请求,当所述不能继续负载的类簇个数未超过类簇总个数的一半,判断所述Web集群中各个后端服务器能继续负载用户此类资源类型的请求。

2.根据权利要求1所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,计算所述用户请求以CPU、内存、网络带宽、IO为维度的属性数据,包括以下步骤:计算处理所述用户请求所需的CPU量、内存量、网络带宽量、IO量;

基于所述CPU量、内存量、网络带宽量、IO量,并通过加权算法计算用户请求的比重向量g=[g1,g2,g3,g4],其中,g1+g2+g3+g4=1,0≤gi≤1,i∈[1,4],其中,g1、g2、g3,以及g4分别表示CPU量、内存量、网络带宽量以及IO量的比重,基于所述比重向量将用户请求转化为属性数据r=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内存量、网络带宽量以及IO量的方向向量。

3.根据权利要求2所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,根据所述属性数据和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能计算得到各个后端服务器的权值,通过以下公式得到:其中,effect_weighti表示第i个后端服务器的初始权值,pi=[pi1,pi2,pi3,pi4],并且满足0≤pij≤1,j∈[1,4],其中,其中,pi1、pi2、pi3,以及pi4均为所述第i个后端服务器的剩余性能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩余IO量的比重。

4.根据权利要求3所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,将所述用户请求转发至权值最大的后端服务器的过程中,还包括以下步骤:实时监控所述后端服务器的实际剩余性能,并通过映射函数计算所述后端服务器的剩余性能,并根据所述剩余性能更新所述后端服务器的权值;

其中,所述后端服务器剩余性能中剩余内存量的映射函数为:所述后端服务器剩余性能中CPU、IO以及网络带宽剩余量的映射函数为:

5 4 3 2

y=14.423x‑36.058x+28.705x‑6.9996x+0.9325x‑0.0016;

其中,x为所述后端服务器的实际剩余性能;y为所述后端服务器输出的剩余性能,其中,在同一公式内,x、y分别表示同一维度的实际剩余性能以及对应的输出的剩余性能。

5.根据权利要求4所述的基于Nginx动态加权的Web集群负载均衡方法,其特征在于,分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差通过以下公式计算:其中,μij表示第i个类簇的第j个服务器的资源使用数据的平均值,σij表示第i个类簇的第j个服务器的资源使用数据的标准差,xij表示第i个类簇的第j个服务器的资源使用数据,N表示整个数据集中对象的个数。

6.一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现上述权利要求1至5任一方法的步骤。

说明书 :

基于Nginx动态加权的Web集群负载均衡方法及系统

技术领域

[0001] 本发明涉及机器学习及负载均衡领域,尤其涉及基于Nginx动态加权的Web集群负载均衡方法及系统。

背景技术

[0002] 近年来,科学技术与互联网技术取得日新月异的进步,随着在互联网产品规模不断扩大,产品体系架构势必需要满足日益增长的用户对产品服务获取的需求。因此,集群架
构与负载均衡技术突显出其重要的位置。对于Web(World Wide Web,全球广域网)集群系
统,负载均衡的好坏将直接影响到用户对互联网产品的体验。
[0003] 通常,大型的Web系统都是以服务器集群的形式运行,集群的后端由大量服务器所构成,服务器集群对于用户是透明的,因此用户使用Web系统时只会感觉到后端是一台性能
强大的服务器在工作。在集群工作环境中,任何一台机器发生故障,用户请求立即分发到其
它服务器上,因此支撑系统运行的服务不会停止。集群中负载均衡技术,在一定程度上保证
用户高并发请求访问的操作,集群内部可根据访问量级的大小,动态调整后端服务器的数
量,因此在用户访问的高并发数量下,保证了系统业务的正常运行。在Web集群中,负载均衡
的好坏直接影响到Web系统的性能。
[0004] 现有的负载均衡方法可以以自适应的方式实时调整权值,使得后端服务器权值比接近于服务器实际的性能比,从而让负载节点的网络带宽吞吐量达到最大值,提高集群系
统工作效率与计算资源利用率,保证后端服务器的可靠性与稳定性,然而现有的动态类型
的负载均衡方法在分配权重时往往只会考虑综合考量后端服务器本身的实时剩余性能(即
综合考量后端服务器的剩余IO(Input/Output,输入/输出)、内存、网络带宽以及CPU
(central processing unit,中央处理器),而忽略用户请求本身属性对后端服务器的需
求,导致综合计算出来的权重大的后端服务器可能并不适用于处理该用户请求的问题,如
存在一个内存剩余20、网络带宽剩余80、IO剩余80以及CPU剩余80的后端服务器,与一个内
存剩余30、网络带宽剩余30、IO剩余40以及CPU剩余40的后端服务器,当一个内存需求25、网
络带宽需求25、IO需求25以及CPU需求25的用户请求发送给均衡负载节点时,根据现有的均
衡负载方法(设内存权重为0.3、网络带宽权重0.3、IO权重0.3、CPU权重0.4)计算分配服务
器时,肯定会选用综合权值比较大的第一个后端服务器,然而第一后端服务器由于内存的
限制,并不能完全满足该用户请求,就会导致第一个后端服务器内存负载压力过大的问题。
[0005] 因此,如何解决现有的动态负载均衡方法在计算权值时并未考量用户请求本身的属性所导致的后端服务器局部部件负载压力过大已成为本领域技术人员亟待解决的技术
问题。

发明内容

[0006] 本发明提供了基于Nginx动态加权的Web集群负载均衡方法及系统,用于解决现有的动态负载均衡方法在计算权值时并未考虑用户请求本身的属性所导致的后端服务器局
部部件负载压力过大的技术问题。
[0007] 为解决上述技术问题,本发明提出的技术方案为:
[0008] 一种基于Nginx(engine x,是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务)动态加权的Web集群负载均衡方法,包括以下步骤:
[0009] 获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;
[0010] 将用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;
[0011] 根据属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;
[0012] 将用户请求转发至权值最大的后端服务器上处理。
[0013] 优选的,计算用户请求以CPU、内存、网络带宽、IO为维度的属性数据,包括以下步骤:
[0014] 计算处理用户请求所需的CPU量、内存量、网络带宽量、IO量;
[0015] 基于CPU量、内存量、网络带宽量、IO量,并通过加权算法计算用户请求的比重向量g=[g1,g2,g3,g4],其中,g1+g2+g3+g4=1,0≤gi≤1,i∈[1,4],其中,g1、g2、g3,以及g4分别表
示CPU量、内存量、网络带宽量以及IO量的比重,基于比重向量将用户请求转化为属性数据r
=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内存量、网络带
宽量以及IO量的方向向量。
[0016] 优选的,根据属性数据和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能计算得到各个后端服务器的权值,通过以下公式得到:
[0017]
[0018] 其中,effect_weighti表示第i个后端服务器的初始权值,pi=[pi1,pi2,pi3,pi4],并且满足0≤pij≤1,j∈[1,4],其中,其中,pi1、pi2、pi3,以及pi4均为第i个后端服务器的剩
余性能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩
余IO量的比重。
[0019] 优选的,将用户请求转发至权值最大的后端服务器的过程中,还包括以下步骤:
[0020] 实时监控后端服务器的实际剩余性能,并通过映射函数计算后端服务器的剩余性能,并根据剩余性能更新后端服务器的权值;
[0021] 其中,后端服务器剩余性能中剩余内存量的映射函数为:
[0022]
[0023] 后端服务器剩余性能中CPU、IO以及网络带宽剩余量的映射函数为:
[0024] y=14.423x5‑36.058x4+28.705x3‑6.9996x2+0.9325x‑0.0016;
[0025] 其中,x为后端服务器的实际剩余性能;y为后端服务器输出的剩余性能,其中,在同一公式内,x、y分别表示同一维度的实际剩余性能以及对应的输出的剩余性能。
[0026] 优选的,还包括以下步骤:
[0027] 在Web集群每处理完一次用户请求后,采集处理用户请求后端服务器以CPU、内存、网络带宽、IO为维度的资源使用数据,并实时统计采集次数,当采集次数达到预设次数后,
使用PDSA‑DBSCAN(自适应密度聚类算法)算法对采集到的所有资源使用数据以CPU、内存、
网络带宽、IO为维度进行聚类,得到多个类簇;
[0028] 分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差,对于每一种维度的平均值和标准差进行以下处理:
[0029] 将多个类簇的平均值与其类簇对应的平均阈值进行比较,将多个类簇的标准差分别与其类簇对应的标准阈值进行比较,根据比较结果判断Web集群的后端服务器是否能继
续负载该维度的用户请求,当判断Web集群的后端服务器不能继续覆盖该维度的用户请求,
则控制Web集群的后端服务器不再参与竞争负载该维度的用户请求。
[0030] 优选的,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,包括以下步骤:
[0031] 使用采集到的所有资源使用数据构建距离分布矩阵;
[0032] 记DISTi×k为距离分布矩阵排序后的第i距离对象与最近的第k个对象的距离,对k取不同大小的值,并通过以下公式分别计算不同大小的k值对应的Epsk值:
[0033]
[0034] 其中,为距离分布矩阵中所有距离对象与最近的第k个对象的距离的数学期望值;
[0035] 对于每个不同大小的k值对应的Epsk值:
[0036] 计算距离分布矩阵的每个对象在Epsk范围内的其他对象个数的均值,并取均值向上取整的数作为Epsk值(扫描半径)的Minpts值(最小包含点数);
[0037] 分别使用多个不同的Epsk值及对应的Minpts值对采集的所有资源使用数据进行聚类,以得到多个不同k值对应的类簇数与噪点数;
[0038] 通过多个不同k值及其对应的类簇数拟合类簇数–k的关系曲线,通过多个不同k值及其对应的噪点数拟合噪点数–k的关系曲线;分析类簇数–k的关系曲线和噪点数–k的关系
曲线的稳定区域,并在稳定区域内寻找类簇数–k的关系曲线与噪点数–k的关系曲线的第一
个相交点,并将第一个相交点处的k值所对应的Epsk值作为PDSA‑DBSCAN算法的最优Eps值,
并使用最优Eps值及其对应的Minpts值对采集到的资源使用数据进行聚类,得到多个类簇。
[0039] 优选的,分析类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,包括以下步骤:
[0040] 找寻类簇数–k的关系曲线的峰值和谷值,并将峰值对应的类簇数和谷值对应的类簇数的进行减法运算,得到类簇数–k的关系曲线的第一谷峰差值,将第一谷峰差值的10%
作为类簇数–k的关系曲线的M值,并将k值相邻的类簇数进行差分运算,得到第一差分值,得
到diff_cluster数据集;
[0041] 找寻噪声数–k的关系曲线的峰值和谷值,并将峰值对应的噪声数和谷值对应的噪声数的进行减法运算,得到噪声数–k的关系曲线的第二谷峰差值,将第二谷峰差值的10%
作为噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差分运算,得到第二差分值,得
到diff_noise数据集;
[0042] 观测类簇数–k的关系曲线和噪声数–k的关系曲线上是否存在同一区间,且同一区间内的所有k值所对应的第一差分值和第二差分值是否均不大于M值向上取整的数值,同一
区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若类簇数–k的关系曲线和
噪声数‑k的关系曲线上存在同一区间,且所述同一区间内的所有k值所对应的第一差分值
和第二差分值均不大于M值向上取整的数值,同一区间在后的相邻区间存在第一差分值或
第二差分值大于2M,则判断同一区间为稳定区域。
[0043] 优选的,分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差通过以下公式计算:
[0044]
[0045]
[0046] 其中,μij表示第i个类簇的第j个服务器的资源使用数据的平均值,σij表示第i个类簇的第j个服务器的资源使用数据的标准差,xij表示第i个类簇的第j个服务器的资源使
用数据,N表示整个数据集中对象的个数。
[0047] 优选的,根据比较结果判断Web集群是否能继续负载该维度的用户请求,包括以下步骤:
[0048] 当类簇的平均值未超出对应的平均阈值,且标准差未超出对应的标准阈值时,判断类簇内的服务器能够继续负载对应维度的用户请求;
[0049] 当类簇的平均值超出对应的平均阈值或标准差超出对应的标准阈值时,判断类簇内的服务器不能继续负载对应维度的用户请求;
[0050] 统计各个类簇不能继续负载的类簇个数,判断不能继续负载的类簇个数是否超过类簇总个数的一半,当不能继续负载的类簇个数超过类簇总个数的一半,判断Web集群中各
个后端服务器不能继续负载用户此类资源类型的请求,当不能继续负载的类簇个数未超过
类簇总个数的一半,判断Web集群中各个后端服务器能继续负载用户此类资源类型的请求。
[0051] 一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的步骤。
[0052] 本发明具有以下有益效果:
[0053] 1、本发明中的基于Nginx动态加权的Web集群负载均衡方法及系统,通过获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参
数;将用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据属性参数和各个
后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权
值;将用户请求转发至权值最大的后端服务器上处理,从而实现根据用户请求本身的属性
动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部件负载过大的技术问
题。
[0054] 2、在优选方案中,本发明还对后端服务器的采样数据进行统计、并通过PDSA‑DBSCAN算法对后端服务器的采样数据进行聚类,并通过分析聚类结果从整体上判断Web集
群是否能继续负载某种维度的用户请求,并根据判断结果来动态调节后端服务器权值,使
Web集群的运行状态达到最佳。
[0055] 除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。

附图说明

[0056] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0057] 图1是本发明优选实施例中的基于Nginx动态加权的Web集群负载均衡方法的流程图;
[0058] 图2是本发明优选实施例中的PDSA‑DBSCAN算法的流程图;
[0059] 图3是本发明优选实施例中的类簇数–k关系曲线图;
[0060] 图4是本发明优选实施例中的噪声数–k关系曲线图;
[0061] 图5是本发明优选实施例中的PDSA‑DBSCAN算法的最佳参数选取流程图;
[0062] 图6是本发明优选实施例中的判断所述Web集群是否能继续负载某一维度的负载的流程图(在图6中,mean代表平均阈值,std代表标准阈值);
[0063] 图7是本发明中的基于Nginx动态加权的Web集群负载均衡方法的流程图。

具体实施方式

[0064] 以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
[0065] 实施例一:
[0066] 如图7所示,本实施中公开了一种基于Nginx动态加权的Web集群负载均衡方法,包括以下步骤:
[0067] 获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;
[0068] 将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;
[0069] 根据所述属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;
[0070] 将所述用户请求转发至权值最大的后端服务器上处理。
[0071] 此外,在本实施例中,还公开了一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述
所述方法的步骤。
[0072] 本发明中的基于Nginx动态加权的Web集群负载均衡方法及系统,通过获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;
将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据所述属性参数和
各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器
的权值;将所述用户请求转发至权值最大的后端服务器上处理,从而实现根据用户请求本
身的属性动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部件负载过大
的技术问题。
[0073] 实施例二:
[0074] 实施例二是实施例一的拓展实施例,其与实施例一的不同之处在于,对基于Nginx动态加权的Web集群负载均衡方法的具体步骤和功能进行拓展:
[0075] 如图1所示,在本实施例中公开了一种基于Nginx动态加权的Web集群负载均衡方法,具体包括以下步骤:
[0076] 1、获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数;设S为后端服务器剩余性能,Si=pi*[C,M,N,IO],其中pi=[pi1,pi2,
pi3,pi4]为第i个后端服务器的剩余性能参数,并且满足0≤pij≤1,j∈[1,4],其中,pi1、pi2、
pi3,以及pi4均为第i个后端服务器的剩余性能参数,分别表示第i个后端服务器的剩余CPU
量、剩余内存量、剩余网络带宽量以及剩余IO量的比重。
[0077] 2、将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;其中,将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数,包括以下步骤:
[0078] 计算处理所述用户请求所需的CPU量、内存量、网络带宽量、IO量;
[0079] 3、基于所述CPU量、内存量、网络带宽量、IO量,并通过加权算法计算用户请求的比重向量g=[g1,g2,g3,g4],其中,g1+g2+g3+g4=1,0≤gi≤1,i∈[1,4],其中,g1、g2、g3,以及g4
分别表示CPU量、内存量、网络带宽量以及IO量的比重,基于所述比重向量将用户请求转化
为属性参数r=[C,M,N,IO]*g,其中C、M、N与IO均为单位为1的方向向量,分别表示CPU量、内
存量、网络带宽量以及IO量的方向向量。
[0080] 4、根据所述属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个后端服务器的权值;
[0081] 在Nginx服务器上,将会根据初始的权值weight、用户请求类型和后端服务器性能计得到算effect_weight,得到该参数后,修正服务器权值current_weight+=effective_
weight*p*g,计算总权重S,并选举出current_weight的最大值,选取第一大的current_
weight‑S台服务器,并将用户请求转发到此后端服务器上。
[0082] 其中,根据所述属性数据和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能计算得到各个后端服务器的权值,通过以下公式得到:
[0083] effect_weight′i=effect_weighti*r*pi;
[0084] 即:
[0085]
[0086] 其中,effect_weighti表示第i个后端服务器的初始权值,pi=[pi1,pi2,pi3,pi4]并且满足0≤pij≤1,j∈[1,4]其中,其中,pi1、pi2、pi3,以及pi4均为所述后端服务器的剩余性
能参数,分别表示第i个后端服务器的剩余CPU量、剩余内存量、剩余网络带宽量以及剩余IO
量的比重。
[0087] 其中,将所述用户请求转发至权值最大的后端服务器的过程中,还包括以下步骤:
[0088] 实时监控所述后端服务器资源使用率,并通过映射函数计算所述后端服务器的剩余性能,并根据所述剩余性能更新所述后端服务器的权值;
[0089] 其中,所述后端服务器剩余性能中剩余内存量的映射函数为:
[0090]
[0091] 所述后端服务器剩余性能中CPU、IO以及网络带宽剩余量的映射函数为:
[0092] y=14.423x5‑36.058x4+28.705x3‑6.9996x2+0.9325x‑0.0016;
[0093] 其中,x为所述后端服务器的实际剩余性能;y为所述后端服务器输出的剩余性能,其中,在同一公式内,x、y分别表示同一维度的实际剩余性能以及对应的输出的剩余性能。
由于服务器的计算资源与网络带宽资源是有限的,服务器处理用户请求需要消耗这些资
源,直到资源耗尽,此时服务器将会因为无法提供资源处理请求,导致其无法正常工作。为
此,设计一种映射函数,在资源使用率达到一定阈值的时候将当前值放大到满载状态,从而
告知负载均衡节点服务器当前负载压力很大,避免分配过多请求致使服务器无法正常运
行。通过尽可能压低被选中的服务器权值,同时不断恢复各个服务器权值,使得权值较小的
服务器能够尽早的被选中。从加权轮询算流程图中可以看出,被选中的服务器的权值会得
到极大地削减,同时又恢复所有服务器的权值,并且是按照初始的有效权值大小进行恢复,
这样就既能够保证权值低的服务器能够尽早选中,又能够保证权值高的服务器恢复速度,
从而保证了分配的均衡性。
[0094] 如图2所示,在本实施例中还公开了一种PDSA‑DBSCAN动态反馈方法,包括以下步骤:
[0095] 1、在所述Web集群每处理完一次用户请求后,采集处理所述用户请求后端服务器以CPU、内存、网络带宽、IO为维度的资源使用数据,并实时统计采集次数,当采集次数达到
预设次数后,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、
IO为维度进行聚类,得到多个类簇;再本实施例中,预设次数可根据实际情况设定,在本实
施例中,设置为150次。
[0096] 其中,使用PDSA‑DBSCAN算法对采集到的所有资源使用数据以CPU、内存、网络带宽、IO为维度进行聚类,得到多个类簇,包括以下步骤:
[0097] 1.1、使用采集到的所有资源使用数据构建距离分布矩阵;
[0098] 所述距离分布矩阵为DISTn×n={dist(i,j),1≤i≤n,1≤j≤n};
[0099] 其中,n=|D|,表示整个数据集中对象的个数。DISTn×n是距离分布的对称矩阵,记录下了每个对象到任意其它对象的间距,dist(i,j)为第i个对象到第j个对象的间距;
[0100] 1.2、记DISTi×k为所述距离分布矩阵排序后的第i距离对象与最近的第k个对象的距离,对k取不同大小的值,并通过以下公式分别计算不同大小的k值对应的Epsk值:
[0101]
[0102] 其中,为所述距离分布矩阵中所有距离对象与最近的第k个对象的距离的数学期望值;
[0103] 1.3、对于每个不同大小的k值对应的Epsk值:
[0104] 计算所述距离分布矩阵的每个对象在所述Epsk范围内的其他对象个数的均值,并取均值向上取整的数作为所述Epsk值的Minpts值;分别使用多个不同的Epsk值及对应的
Minpts值对采集的所有资源使用数据进行聚类,以得到多个不同k值对应的类簇数与噪点
数;
[0105] 1.4、通过多个不同k值及其对应的类簇数拟合类簇数–k的关系曲线,通过多个不同k值及其对应的噪点数拟合噪点数–k的关系曲线;
[0106] 1.5、分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域:
[0107] 如图5所示,分析所述类簇数–k的关系曲线和噪点数–k的关系曲线的稳定区域,包括以下步骤:
[0108] 找寻所述类簇数–k的关系曲线的峰值和谷值,并将所述峰值对应的类簇数和谷值对应的类簇数的进行减法运算,得到所述类簇数–k的关系曲线的第一谷峰差值,将所述第
一谷峰差值的10%作为所述类簇数–k的关系曲线的M值,并将K值相邻的类簇数进行差值运
算,得到第一差分值,得到diff_cluster数据集;
[0109] 找寻所述噪声数‑k的关系曲线的峰值和谷值,并将所述峰值对应的噪声数和谷值对应的噪声数的进行减法运算,得到所述噪声数–k的关系曲线的第二谷峰差值,将所述第
二谷峰差值的10%作为所述噪声数–k的关系曲线的M值,并将k值相邻的噪声数进行差值运
算,得到第二差分值,得到diff_noise数据集;
[0110] 观测所述类簇数–k的关系曲线和所述噪声数–k的关系曲线上是否存在同一区间,且所述同一区间内的所有k值所对应的第一差分值和第二差分值是否均不大于M值向上取
整的数值,所述同一区间前后的相邻区间是否存在第一差分值或第二差分值大于2M;若所
述类簇数–k的关系曲线和所述噪声数–k的关系曲线上存在同一区间,且所述同一区间内的
所有k值所对应的第一差分值和第二差分值均不大于M值向上取整的数值,所述同一区间在
后的相邻区间存在第一差分值或第二差分值大于2M,则判断所述同一区间为稳定区域。
[0111] 1.6、在所述稳定区域内寻找所述类簇数–k的关系曲线与所述噪点数–k的关系曲线的第一个相交点,并将所述第一个相交点处的k值所对应的Epsk值作为所述PDSA‑DBSCAN
算法的最优Eps值,并使用所述最优Eps值及其对应的Minpts值对采集到的资源使用数据进
行聚类,得到多个类簇。
[0112] 如图3,图4所示。随之k值的增加类簇数–k的关系曲线和噪点数–k的关系曲线都趋于稳定,由此选取在两条曲线的稳定区间的第一个交点作为最佳参数。在数据集包含较多
数据量的情况下,k值的取值会有很多,但随着k值的增长,曲线逐渐趋于稳定,而k的最优解
的位置处于两条曲线前中期稳定区域的交接地带。为此,可采用噪点数量占数据集总量的
比重p作为方法终止的条件,方法首先需要判定出两条曲线的稳定区域,然后对两条曲线的
稳定区域进行交集运算,最终选取两条曲线相交稳定区域的第一个交点便即为所求。
[0113] 2、分别计算多个类簇在CPU、内存、网络带宽、IO维度的平均值和标准差,对于类簇的每一种属性,计算出该种属性在当前类簇的平均值,并根据平均值计算得出标准差。使用
(μij‑σij,μij+σij)的形式表示此类簇这一属性值,其中,i表示类簇的编号,j表示服务器资源
的编号,其中,μij表示第i个类簇的第j个服务器的资源的平均值,σij表示第i个类簇的第j
个服务器的资源的标准差,其中,
[0114]
[0115]
[0116] 其中,xij表示第i个类簇的第j个服务器的资源,N表示整个数据集中对象的个数。
[0117] 3、对于每一种维度的平均值和标准差进行以下处理:
[0118] 将多个类簇的平均值与其类簇对应的平均阈值进行比较,将多个类簇的标准差分别与其类簇对应的标准阈值进行比较,其中,所述平均阈值为所述类簇在该维度最大值的
90%,标准阈值所述类簇平均值的20%。
[0119] 4、根据比较结果判断所述Web集群是否能继续负载该维度的用户请求。
[0120] 如图6所示,根据比较结果判断所述Web集群是否能继续负载该维度的用户请求,包括以下步骤:
[0121] 当所述类簇的平均值未超出对应的平均阈值,且所述标准差未超出对应的标准阈值时,判断所述类簇内的服务器能够继续负载对应维度的用户请求;
[0122] 当所述类簇的平均值超出对应的平均阈值或所述标准差超出对应的标准阈值时,判断所述类簇内的服务器不能继续负载对应维度的用户请求;
[0123] 统计各个类簇不能继续负载的类簇个数,判断不能继续负载的类簇个数是否超过类簇总个数的一半,当不能继续负载的类簇个数超过类簇总个数的一半,判断所述Web集群
中各个后端服务器不能继续负载用户此类资源类型的请求,当所述不能继续负载的类簇个
数未超过类簇总个数的一半,判断所述Web集群中各个后端服务器能继续负载用户此类资
源类型的请求,当判断所述Web集群的后端服务器不能继续覆盖该维度的用户请求,将所述
后端服务器的在该维度的属性设置为0,并将所述属性反馈给均衡负载节点,使均衡负载节
点控制所述Web集群的后端服务器不再参与竞争负载该维度的用户请求;当判断所述Web集
群的后端服务器能继续覆盖该维度的用户请求,将所述后端服务器的在该维度的属性设置
为1,并将所述属性反馈给均衡负载节点,使均衡负载节点控制所述Web集群的后端服务器
继续参与竞争负载该维度的用户请求。
[0124] 对于每个后端服务器节点的各种资源是否能够继续负载用户请求的反馈结果将封装在反馈对象中,此时需要反馈对象参与均衡负载节点的负载均衡方法中的运算,在用
户请求来到的那一刻,反馈对象将后台服务器节点的能否负载的结果优先于选举阶段(即
根据权值来选择服务器)告知均衡负载节点,将负载较重的服务器节点屏蔽掉,在而后的选
举方法中,其它处于空闲状态的服务器节点将有更多的机会去竞争得到用户请求,从而在
整体上提升系统负载均衡的能力与用户请求的处理效率。
[0125] 综上所述,本发明中的基于Nginx动态加权的Web集群负载均衡方法及系统,通过获取待处理的用户请求和Web集群中各个后端服务器在CPU、内存、网络带宽、IO维度的剩余
性能参数;将所述用户请求量化成以CPU、内存、网络带宽、IO为维度的属性参数;根据所述
属性参数和各个后端服务器在CPU、内存、网络带宽、IO维度的剩余性能参数计算得到各个
后端服务器的权值;将所述用户请求转发至权值最大的后端服务器上处理,从而实现根据
用户请求本身的属性动态自适应地调整后端服务器权值,避免选取出的后端服务器局部部
件负载过大的技术问题。
[0126] 在优选方案中,本发明还对后端服务器的采样数据进行统计、并通过PDSA‑DBSCAN算法对后端服务器的采样数据进行聚类,并通过分析聚类结果从整体上判断所述Web集群
是否能继续负载某种维度的用户请求,并根据所述判断结果来动态调节后端服务器权值,
使所述Web集群的运行状态达到最佳。
[0127] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本发明的保护范围之内。