首页 / 专利库 / 电脑编程 / 算法 / 哈希算法 / 一种基于改进一致性哈希的服务器端负载均衡方法

一种基于改进一致性哈希的服务器端负载均衡方法

阅读:1015发布:2020-05-08

专利汇可以提供一种基于改进一致性哈希的服务器端负载均衡方法专利检索,专利查询,专利分析的服务。并且一种基于改进一致性哈希的 服务器 端负载均衡方法,通过该负载均衡方法,能够根据服务器性能动态调节服务器集群中的 节点 负载。该方法根据服务器集群中节点自身的性能以及在一个周期连接数构建虚拟节点,从而解决目前基于一致性hash的负载均衡系统的负载不均匀的问题。具体步骤如下:路由服务器周期性地维护服务器集群的节点个数和性能数据,根据节点的性能比和节点数量,计算每个节点需要构建的虚拟节点的数量;将集群节点和虚拟节点根据hash 算法 构建hash环;路由服务器周期性地维护每个集群节点的连接数;每个周期过后根据相同性能值下连接数的差异,计算虚拟节点数量冗余值;周期性重复上述五个步骤,更新虚拟节点的数量,重建hash环。,下面是一种基于改进一致性哈希的服务器端负载均衡方法专利的具体信息内容。

1.一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:包括以下具体步骤:
步骤1,路由服务器周期性地维护服务器集群的节点个数和性能:所述路由服务器为反向代理服务器,用来分发前端传来的并发请求;所述服务器集群的节点性能由服务器的CPU、运行内存和网络带宽三个参数计算得出;
步骤2,根据节点的性能比和节点数量,计算每个节点需要构建的虚拟节点的数量;
步骤3,将集群节点和虚拟节点根据hash算法构建hash环;
步骤4,路由服务器周期性地维护每个集群节点的连接数;
步骤5,每个周期过后根据相同性能值下连接数的差异,计算虚拟节点数量冗余值;
步骤6,周期性重复步骤1至5,更新虚拟节点的数量,重建hash环,输出负载均衡策略,将连接落在对应的服务器集群节点上。
2.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤1中,所述服务器集群的节点性能根据如下公式计算:
F(Si)=Wcpu*Acpu+Wmem*Amem+Wband+Aband
其中,F(Si)表示服务器的性能值,Si表示第i个服务器,Acpu、Amem以及Aband表示CPU、运行内存和网络带宽三个参数,Wcpu、Wmem以及Wband表示这三个参数的权重系数,这三个权重系数满足如下公式:
Wcpu+Wmem+Wband=1
其中根据多次数据测试,将这三个系数Wcpu、Wmem以及Wband分别设置为0.6,0.2,0.2。
3.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤2中,所述节点的性能比根据以下如下公式计算:
其中F(Si)表示当前服务器集群节点的性能值,Min表示所有节点性能的最小值,Max表示所有节点性能的最大值;使用该公式计算出的节点性能比,位于(0,1)区间内。
4.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤2中,所述虚拟节点数量由如下公式计算:
N(Si)=E(Si)*K(n)+r
其中E(Si)表示节点的性能比,K(n)表示虚拟节点最大线性公式,根据当前的服务器集群中的节点数量,得到虚拟节点的最大数量值;r表示当前虚拟节点的冗余值,初始值为0,在经历步骤6后,路由服务器收到每个节点在周期内的真实负载,将重新计算冗余值,构建虚拟节点;
K(n)表示虚拟节点最大线性公式,采用如下公式计算:
其中,h,l,m表示线性系数,x表示集群节点数,k与x呈线性关系;n表示该函数的线性冗余值;
根据上述公式,根据当前的服务器集群中的节点数量和节点在服务器集群中的性能比,得到所要构建的虚拟节点的数量值。
5.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤3中,所述hash算法如下所示:
f=Hash(Si)%n
其中Hash表示表示计算集群节点hash值的hash函数,n表示服务器集群中节点的数量;
根据集群节点和虚拟节点的hash值构建hash环,该步骤流程如下:
32 32
步骤3-1,将hash环的起点定义为0,终点定义为2 ,构建0~2 的圆;
步骤3-2,将各个集群节点和虚拟节点根据上述hash函数计算出的hash值对应圆环上并构建相应的点,形成hash环。
6.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤4中,所述周期表示路由服务器维护每个集群节点的连接数的时间,所述连接数表示服务器节点在周期内所命中的并发请求数,该步骤流程如下:
步骤4-1,根据hash函数计算连接请求的hash值;
步骤4-2,顺时针查找hash环,找到对应的hash区间;
步骤4-3,如果该连接的hash值有对应的区间,找到区间对应的集群节点或虚拟节点,将连接请求落于hash环中对应的服务器集群节点上;
步骤4-4,如果顺时针查找一周并未找到对应区间,则将该连接请求落于hash环中的第一个服务器集群节点。
7.根据权利要求1所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:步骤5中,所述性能值为步骤1中所计算的服务器的性能值,所述虚拟节点冗余值为步骤2中虚拟节点数量计算公式中的冗余值r,该步骤流程如下:
将性能值相同的集群节点分组;根据分组,按照步骤4依次获取周期内该集群节点的连接数;将集群节点在周期内的连接数按照分组上传给路由服务器,计算虚拟节点冗余值r:
r=N(Si)*R(C(Si),F(Si))
其中N(Si)表示步骤二中所计算的虚拟节点数量值,R(Si)表示冗余系数线性函数,参数C(Si)表示当前节点在周期内的连接数,F(Si)表示该节点的性能值;
采用如下公式计算:
其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值,根据相同性能下连接数的不同,针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数不同,当性能值高而负载低时,需增加虚拟节点,增加负载;当性能值低而负载高时,需减少虚拟节点,减少负载。
8.根据权利要求7所述的一种基于改进一致性哈希的服务器端负载均衡方法,其特征在于:针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数的步骤流程如下:
在同一个分组内,计算分组内集群节点连接数的平均值;遍历所有分组,循环执行上一步;如果分组性能值高,对于连接数低于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值;
如果分组性能值低,对于连接数高于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值。

说明书全文

一种基于改进一致性哈希的服务器端负载均衡方法

技术领域

[0001] 本发明属于Web服务器负载均衡领域,特别是涉及一种基于改进一致性哈希的服务器端负载均衡方法。

背景技术

[0002] 随着电子商务的快速发展,传统单服务器的B/S端架构的电子商务网站及系统早已无法应对如今高并发的冲击,服务器一旦因此宕机,都会对用户及和电子商务企业带来巨大的不便与损失。在这个电商用户量爆炸的时代,确保大型网站在高并发和高吞吐量的冲击下不受影响,显得尤为重要,而服务器集群则是应对这一场景的重要的技术的手段。
[0003] 目前基于服务器集群的负载均衡技术迅速发展,相应的负载均衡算法种类繁多。但是每个系统所在的环境,面对的用户种类,访问手段多种多样,每个服务器节点所面对的用户并发量的分配都是不一样的。如何根据服务器集群中节点的不同性能以及短时间内节点的真实负载不断调整负载均衡策略,是当前该领域的负载均衡方法需要解决、优化的核心问题。
[0004] 目前,使用最多的两种负载均衡技术分别是硬负载均衡和软负载均衡。所述硬负载均衡表示采用负载均衡器的方法,使用硬件达到负载均衡。所述软负载表示在反向代理服务器中嵌入负载均衡算法,通过算法来实现均衡调度的功能。
[0005] 专利CN110311957A公开了一种基于连接请求的负载均衡方法,将客户端发送的连接请求进行分级,并将服务器集群中的节点也进行分级映射,确保不同的级别的连接请求落到不同的服务器集群的节点中。对于高并发的场景,可以做到高性能服务器处理更多的请求。
[0006] 专利CN110099083A公开了一种基于二次负载均衡的智能调度方法,在服务器集群进行首次负载均衡调度之后,获取服务器集群的总运行状态和各个服务器节点的单运行状态,回收已分配但未执行的任务重新分配,可以更加合理的利用服务器资源,使得负载均衡策略更加可控和灵活。
[0007] 上述负载均衡方法都在一定程度上优化了现有的一些负载均衡方法,针对不同的并发场景和不同的服务器性能做到负载均衡策略的灵活与可控。但是,对于并发场景多变和服务器集群节点的性能差异以及频繁的增删节点个数同时存在的场景方面考虑不足。对于已经分配好的请求,若重新分配后会落在其他的集群节点上,不满足负载均衡策略的单调性,使得某个单一节点压过大,不致过载。

发明内容

[0008] 本发明提出了一种基于改进一致性哈希的服务器端负载均衡方法,用于解决现有的负载均衡方法灵活性和可控性过多低,对于不同的服务器性能和并发场景,负载不够均衡的情况。采用虚拟节点来改进一致性hash,同时根据服务器集群中节点的性能以及周期内的真实负载不断地调整虚拟节点的数量,使得负载均衡方法更加智能且高效。
[0009] 一种基于改进一致性哈希的服务器端负载均衡方法,包括以下具体步骤:
[0010] 步骤1,路由服务器周期性地维护服务器集群的节点个数和性能:所述路由服务器为反向代理服务器,用来分发前端传来的并发请求;所述服务器集群的节点性能由服务器的CPU、运行内存和网络带宽三个参数计算得出;
[0011] 步骤2,根据节点的性能比和节点数量,计算每个节点需要构建的虚拟节点的数量;
[0012] 步骤3,将集群节点和虚拟节点根据hash算法构建hash环;
[0013] 步骤4,路由服务器周期性地维护每个集群节点的连接数;
[0014] 步骤5,每个周期过后根据相同性能值下连接数的差异,计算虚拟节点数量冗余值;
[0015] 步骤6,周期性重复步骤1至5,更新虚拟节点的数量,重建hash环,输出负载均衡策略,将连接落在对应的服务器集群节点上。
[0016] 进一步地,步骤1中,所述服务器集群的节点性能根据如下公式计算:
[0017] F(Si)=Wcpu*Acpu+Wmem*Amem+Wband+Aband
[0018] 其中,F(Si)表示服务器的性能值,Si表示第i个服务器,Acpu、Amem以及Aband表示CPU、运行内存和网络带宽三个参数,Wcpu、Wmem以及Wband表示这三个参数的权重系数,这三个权重系数满足如下公式:
[0019] Wcpu+Wmem+Wband=1
[0020] 其中根据多次数据测试,将这三个系数Wcpu、Wmem以及Wband分别设置为0.6,0.2,0.2。
[0021] 进一步地,步骤2中,所述节点的性能比根据以下如下公式计算:
[0022]
[0023] 其中F(Si)表示当前服务器集群节点的性能值,Min表示所有节点性能的最小值,Max表示所有节点性能的最大值;使用该公式计算出的节点性能比,位于(0,1)区间内。
[0024] 进一步地,步骤2中,所述虚拟节点数量由如下公式计算:
[0025] N(Si)=E(Si)*K(n)+r
[0026] 其中E(Si)表示节点的性能比,K(n)表示虚拟节点最大线性公式,根据当前的服务器集群中的节点数量,得到虚拟节点的最大数量值;r表示当前虚拟节点的冗余值,初始值为0,在经历步骤6后,路由服务器收到每个节点在周期内的真实负载,将重新计算冗余值,构建虚拟节点;
[0027] K(n)表示虚拟节点最大线性公式,采用如下公式计算:
[0028]
[0029] 其中,h,l,m表示线性系数,x表示集群节点数,k与x呈线性关系;n表示该函数的线性冗余值;
[0030] 根据上述公式,根据当前的服务器集群中的节点数量和节点在服务器集群中的性能比,得到所要构建的虚拟节点的数量值。
[0031] 进一步地,步骤3中,所述hash算法如下所示:
[0032] f=Hash(Si)%n
[0033] 其中Hash表示表示计算集群节点hash值的hash函数,n表示服务器集群中节点的数量;根据集群节点和虚拟节点的hash值构建hash环,该步骤流程如下:
[0034] 步骤3-1,将hash环的起点定义为0,终点定义为232,构建0~232的圆;
[0035] 步骤3-2,将各个集群节点和虚拟节点根据上述hash函数计算出的hash值对应圆环上并构建相应的点,形成hash环。
[0036] 进一步地,步骤4中,所述周期表示路由服务器维护每个集群节点的连接数的时间,所述连接数表示服务器节点在周期内所命中的并发请求数,该步骤流程如下:
[0037] 步骤4-1,根据hash函数计算连接请求的hash值;
[0038] 步骤4-2,顺时针查找hash环,找到对应的hash区间;
[0039] 步骤4-3,如果该连接的hash值有对应的区间,找到区间对应的集群节点或虚拟节点,将连接请求落于hash环中对应的服务器集群节点上;
[0040] 步骤4-4,如果顺时针查找一周并未找到对应区间,则将该连接请求落于hash环中的第一个服务器集群节点。
[0041] 进一步地,步骤5中,所述性能值为步骤1中所计算的服务器的性能值,所述虚拟节点冗余值为步骤2中虚拟节点数量计算公式中的冗余值r,该步骤流程如下:
[0042] 将性能值相同的集群节点分组;根据分组,按照步骤4依次获取周期内该集群节点的连接数;将集群节点在周期内的连接数按照分组上传给路由服务器,计算虚拟节点冗余值r:
[0043] r=N(Si)*R(C(Si),F(Si))
[0044] 其中N(Si)表示步骤二中所计算的虚拟节点数量值,R(Si)表示冗余系数线性函数,参数C(Si)表示当前节点在周期内的连接数,F(Si)表示该节点的性能值;
[0045] 采用如下公式计算:
[0046]
[0047] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值,根据相同性能下连接数的不同,针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数不同,当性能值高而负载低时,需增加虚拟节点,增加负载;当性能值低而负载高时,需减少虚拟节点,减少负载。
[0048] 进一步地,针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数的步骤流程如下:
[0049] 在同一个分组内,计算分组内集群节点连接数的平均值;遍历所有分组,循环执行上一步;如果分组性能值高,对于连接数低于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
[0050]
[0051] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值;
[0052] 如果分组性能值低,对于连接数高于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
[0053]
[0054] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值。
[0055] 本发明具有如下有益效果:通过增加虚拟节点,解决基于一致性hash的负载均衡算法的倾斜性;由服务器集群中节点的性能值和节点个数控制所增的虚拟节点的数量;周期内根据节点的性能值和真实负载,通过冗余值更新虚拟节点的数量。附图说明
[0056] 图1为本发明实施例中服务器端负载均衡方法的总体流程示意图。
[0057] 图2为本发明实施例中服务器端负载均衡方法所使用的数据结构设计图。
[0058] 图3为本发明实施例中服务器端负载均衡方法计算冗余值的流程图

具体实施方式

[0059] 下面结合说明书附图对本发明的技术方案做进一步的详细说明。
[0060] 一种基于改进一致性哈希的服务器端负载均衡方法,包括以下具体步骤:
[0061] 步骤1,路由服务器周期性地维护服务器集群的节点个数和性能:所述路由服务器为反向代理服务器,用来分发前端传来的并发请求;所述服务器集群的节点性能由服务器的CPU、运行内存和网络带宽三个参数计算得出。
[0062] 所述服务器集群的节点性能根据如下公式计算:
[0063] F(Si)=Wcpu*Acpu+Wmem*Amem+Wband+Aband
[0064] 其中,F(Si)表示服务器的性能值,Si表示第i个服务器,Acpu、Amem以及Aband表示CPU、运行内存和网络带宽三个参数,Wcpu、Wmem以及Wband表示这三个参数的权重系数,这三个权重系数满足如下公式:
[0065] Wcpu+Wmem+Wband=1
[0066] 其中根据多次数据测试,将这三个系数Wcpu、Wmem以及Wband分别设置为0.6,0.2,0.2。
[0067] 步骤2,根据节点的性能比和节点数量,计算每个节点需要构建的虚拟节点的数量。
[0068] 步骤2中,所述节点的性能比根据以下如下公式计算:
[0069]
[0070] 其中F(Si)表示当前服务器集群节点的性能值,Min表示所有节点性能的最小值,Max表示所有节点性能的最大值;使用该公式计算出的节点性能比,位于(0,1)区间内。
[0071] 所述虚拟节点数量由如下公式计算:
[0072] N(Si)=E(Si)*K(n)+r
[0073] 其中E(Si)表示节点的性能比,K(n)表示虚拟节点最大线性公式,根据当前的服务器集群中的节点数量,得到虚拟节点的最大数量值;r表示当前虚拟节点的冗余值,初始值为0,在经历步骤6后,路由服务器收到每个节点在周期内的真实负载,将重新计算冗余值,构建虚拟节点。
[0074] K(n)表示虚拟节点最大线性公式,采用如下公式计算:
[0075]
[0076] 其中,h,l,m表示线性系数,x表示集群节点数,k与x呈线性关系;n表示该函数的线性冗余值。
[0077] 根据上述公式,根据当前的服务器集群中的节点数量和节点在服务器集群中的性能比,得到所要构建的虚拟节点的数量值。
[0078] 步骤3,将集群节点和虚拟节点根据hash算法构建hash环。
[0079] 步骤3中,所述hash算法如下所示:
[0080] f=Hash(Si)%n
[0081] 其中Hash表示表示计算集群节点hash值的hash函数,n表示服务器集群中节点的数量;根据集群节点和虚拟节点的hash值构建hash环,该步骤流程如下:
[0082] 步骤3-1,将hash环的起点定义为0,终点定义为232,构建0~232的圆。
[0083] 步骤3-2,将各个集群节点和虚拟节点根据上述hash函数计算出的hash值对应圆环上并构建相应的点,形成hash环。
[0084] 步骤4,路由服务器周期性地维护每个集群节点的连接数。
[0085] 步骤4中,所述周期表示路由服务器维护每个集群节点的连接数的时间,所述连接数表示服务器节点在周期内所命中的并发请求数,该步骤流程如下:
[0086] 步骤4-1,根据hash函数计算连接请求的hash值。
[0087] 步骤4-2,顺时针查找hash环,找到对应的hash区间。
[0088] 步骤4-3,如果该连接的hash值有对应的区间,找到区间对应的集群节点或虚拟节点,将连接请求落于hash环中对应的服务器集群节点上。
[0089] 步骤4-4,如果顺时针查找一周并未找到对应区间,则将该连接请求落于hash环中的第一个服务器集群节点。
[0090] 步骤5,每个周期过后根据相同性能值下连接数的差异,计算虚拟节点数量冗余值。
[0091] 步骤5中,所述性能值为步骤1中所计算的服务器的性能值,所述虚拟节点冗余值为步骤2中虚拟节点数量计算公式中的冗余值r,该步骤流程如下:
[0092] 将性能值相同的集群节点分组;根据分组,按照步骤4依次获取周期内该集群节点的连接数;将集群节点在周期内的连接数按照分组上传给路由服务器,计算虚拟节点冗余值r:
[0093] r=N(Si)*R(C(Si),F(Si))
[0094] 其中N(Si)表示步骤二中所计算的虚拟节点数量值,R(Si)表示冗余系数线性函数,参数C(Si)表示当前节点在周期内的连接数,F(Si)表示该节点的性能值。
[0095] 采用如下公式计算:
[0096]
[0097] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值,根据相同性能下连接数的不同,针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数不同,当性能值高而负载低时,需增加虚拟节点,增加负载;当性能值低而负载高时,需减少虚拟节点,减少负载。
[0098] 针对性能值高而负载低和性能值低而负载高两种情况,冗余系数的计算函数的步骤流程如下:
[0099] 在同一个分组内,计算分组内集群节点连接数的平均值;遍历所有分组,循环执行上一步;如果分组性能值高,对于连接数低于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
[0100]
[0101] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值。
[0102] 如果分组性能值低,对于连接数高于分组平均值的服务器集群节点,冗余函数线性系数采用如下公式计算:
[0103]
[0104] 其中参数C(Si)表示当前节点在周期内的连接数,Avg(C(Si))表示该性能值下连接数的平均值。
[0105] 步骤6,周期性重复步骤1至5,更新虚拟节点的数量,重建hash环,输出负载均衡策略,将连接落在对应的服务器集群节点上。
[0106] 以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈