一种基于动态路径的负载迁移方法转让专利

申请号 : CN201910364170.0

文献号 : CN110138670B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨武

申请人 : 哈尔滨英赛克信息技术有限公司

摘要 :

本发明公开了一种基于动态路径的负载迁移方法,所述方法对于任意拓扑结构,使用Floyd算法在原拓扑环境的无向图中获取任意两点之间的最短距离矩阵D和最短路径矩阵R,并构造出连接所有节点的路径,按最短路径进行双向传递,传递两个方向的负载均衡设备的负载状态,并在各个负载均衡节点上更新相邻i个距离的负载均衡状态表,并利用动态路由协议OSPF中hello报文确保网络状态,完成对最短距离矩阵D和最短路径矩阵R的更新。通过传递的各个相邻节点的负载均衡状态,维持了算法的实时性,并基于路径和状态作为负载依据,对局部进行优化,以局部稳定延展到整体稳定,实现负载均衡。

权利要求 :

1.一种基于动态路径的负载迁移方法,其特征在于所述方法包括如下步骤:步骤一、将负载均衡节点以无向图的形式输入,使用Floyd算法对无向图整体进行分析,得出最短距离矩阵D和最短路径矩阵R;

步骤二、通过最短距离矩阵D和最短路径矩阵R构建一条联通所有点的路径;

步骤三、基于对R求在两个端点vi到vj的所有等价最短路径,选择两个末端节点作为发送源,将自身负载均衡状态进行传递,并在途径节点时,在节点上更新单方向的负载均衡状态,复数更新流途经时,按照最晚到达的内容为准;

步骤四、节点k使用最短路径矩阵R记录距离自身i距离的节点,其中i为max(k‑first,last‑k),即获取路径上所有节点的状态,并使用hello报文对节点进行保活探测,当出现节点无响应时视为物理结构变化,则对最短距离矩阵和最短路径矩阵进行更新,并重新对路径进行生成,返回步骤二;

步骤五、当节点j出现数据流异常时,即数据量超过阈值,将导致设备过载,于是查询邻接节点状态表内容,将过多的流量迁移到邻接节点处理;若没有出现流量超过阈值的情况则不执行任何操作;

步骤六、重复步骤二至五,直至流量发送结束。

2.根据权利要求1所述的基于动态路径的负载迁移方法,其特征在于所述步骤一中,无向图G=[V,W],其中V={v1,v2,...,vn}为顶点集合,W=(wij)n*n为G的邻接矩阵,wij表示边(vi,vj)的权值,即两个端点vi与vj之间的传输代价,其中,n为节点的个数;i、j大于等于1小于等于n;vi与vj表示第i个和第j个顶点。

3.根据权利要求1所述的基于动态路径的负载迁移方法,其特征在于所述步骤一中,最短距离矩阵和最短路径矩阵的计算方法如下:设定初值:

其中,

对任意vk∈V,更新

表示从vi到vj之间仅允许v1,v2,...,vn作为中间点的路径中最短长度,rij表示从vi到vj的等价最短路径所经过的点集;

更新计算如下:

最终得到最短距离矩阵与最短路径矩阵:

4.根据权利要求1所述的基于动态路径的负载迁移方法,其特征在于所述步骤三的具体步骤如下:(1)初始化路径:

分解R(x,y)=rxy;MidP=rxy,nmu=||MidP||,NumSet=[1,num],PathSet={};

初始化路径的中间节点集PathSet:

其中,MidP=rxy为vx到vy最短路径的点集;nmu为中间点集的个数;

(2)对PathSet中每条路径Pathk进行向后搜索:将Pathk分解成num个集合:

更新PathSet:PathSet=(PathSet/{Pathk})∪MidSet,直到同时传递x到y方向负载均衡设备状态,并更新x到当前节点k之间的节点状态;

(3)对PathSet中每条路径Pathk进行向前搜索:将Pathk分解成num个集合:

更新PathSet:PathSet=(PathSet/{Pathk})∪MidSet,直到同时传递y到x方向负载均衡设备状态,并更新y到当前节点k之间的节点状态。

5.根据权利要求1所述的基于动态路径的负载迁移方法,其特征在于所述步骤五的具体步骤如下:当节点j出现数据流超过阈值时,节点j将判定为过载,启动迁移调度算法,对于接受到的流量e,节点j处理时间为td,等待时间为tw,将流量发送至距离节点j的距离为l的节点k上,所需时间为ts,节点k的内存占用为σk,节点k的总内存上限为σtotal,判定是否进行迁移的参数Q为:其中,Y为要迁移的流量大小,Sj为节点j的邻接节点状态表;若不存在任何一个邻接节点空闲或预计传输代价大于直接处理的代价时,放弃将流量迁移,否则选择一个适合的节点进行流量转发。

说明书 :

一种基于动态路径的负载迁移方法

技术领域

[0001] 本发明涉及一种负载均衡方法,特别涉及一种去中心化实现兄弟节点之间的负载迁移的方法。

背景技术

[0002] 网络节点中负载均衡的平衡效果以及处理时间的长短,在很大程度上决定着整个网络系统的性能。随着人们在负载均衡技术方面做出的大量研究,负载均衡与集群技术进行了融合,基于多转发节点的结构,分布式与云调度中心贡献了许多各种各样的方法。例如分布式中的连接矩阵法通过等量分割数据,使得分发出来的数据长度保持相同,以全局轮询的方式实现负载均衡,结构上属于基于客户端的负载均衡结构,由一出发点设备作为发起端发送全部流量并进行优化调度,属于串联结构。云调度中心中JTangWOS提供了三层结构,分别用于监控节点,提供负载均衡策略的服务器以及处理节点群,动态负载均衡方法的形式基于权值实时调整,这种方法结构上属于基于服务器的负载均衡结构,负载均衡服务器并不是串联在线路中,由类似代理的形式,获取各个节点状态,并提供负载均衡策略。
[0003] 以上两种负载均衡方法都是建立在集群结构上,都使用父子结构,即使用一个服务器直接或间接的管理出入口的所有流量,进而对下属负载均衡节点进行一定程度的把控。关于此类负载均衡方法的专利文件较多,各有其优缺点。

发明内容

[0004] 本发明的目的是提供一种非传统结构的基于动态路径的负载迁移方法,该方法中的结构不同于父子结构,属于兄弟结构,不直接管理所有流量,而是从局部入手解决局部流量偏高的情况,将偏高的流量均匀到周围节点上,以实现整体的负载均衡。
[0005] 本发明的目的是通过以下技术方案实现的:
[0006] 一种基于动态路径的负载迁移方法,包括如下步骤:
[0007] 步骤一、将负载均衡节点以无向图的形式输入,使用Floyd算法对无向图整体进行分析,得出最短距离矩阵和最短路径矩阵;
[0008] 步骤二、通过最小连接矩阵构建一条联通所有点的路径;
[0009] 步骤三、基于对R求在两个端点vi到vj的所有等价最短路径,选择vi和vj作为发送源,将自身负载均衡状态进行传递,并在途径节点时,在节点上更新单方向的负载均衡状态,复数更新流途经时,按照最晚到达的内容为准;
[0010] 步骤四、使用邻接节点状态表R记录距离自身i距离的节点,并使用hello报文对节点进行保活探测,当出现节点无响应时视为物理结构变化,则对最短距离矩阵和最短路径矩阵进行更新,并重新对路径进行生成,返回步骤二;
[0011] 步骤五、当节点j出现数据流异常时,即数据量超过阈值,将导致设备过载,于是查询邻接节点状态表内容,将过多的流量迁移到邻接节点处理;若没有出现流量超过阈值的情况则不执行任何操作;
[0012] 步骤六、重复步骤二至五,直至流量发送结束。
[0013] 相比于现有技术,本发明具有如下优点:
[0014] 传统负载均衡的结构不管是哪一种,都会以串联或并联的形式插在客户端与服务端之间,属于父子结构,父节点管理调度子节点的流量,以便于对服务器集群整体进行管理,所以负载均衡的结构相对固定。在处理负载均衡问题时,这种结构很有效,但不是唯一的解决方案。可以跳出父子结构的框架,在兄弟节点之间进行负载均衡的实现。相对于父子结构,兄弟结构的好处是不需要一个中心来对整体进行调控,那么用于中心调度而花费的时间就消失了,这种情况下,各个下属节点就不需要等待调度中心的计算,直接接受流量。但这种方式就需要各个节点之间实现迁移调度,要求服务器之间进行对各自的探索和流量的传递,探测模块以及转发模块采用并行的模式,并行模块的处理时间会影响到实时性,但不影响迁移算法的调度,整体比传统结构省时。
[0015] 本发明使用Floyd算法构建路径,并在路径上传递节点信息,使用两个方向在规划好的路径上进行信息的传递。在各个节点设备上更新其他节点状态。左方向更新流更新节点j左边所有点的信息,右方向更新流更新节点右边所有点的信息。两个信息流组合成完整的节点状态表。然后根据传递的状态,在节点出现过载时,将流量迁移到相对闲置的设备,以达成负载均衡的效果。

附图说明

[0016] 图1是任意结构无向图中生成路径示意图。
[0017] 图2是基于动态路径的负载迁移法的路径生成流程图。
[0018] 图3是基于动态路径的负载迁移法的路径维护流程图。
[0019] 图4是基于动态路径的负载迁移法数据迁移的流程图。
[0020] 图5为实验设备横向对比图。

具体实施方式

[0021] 下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
[0022] 本发明提供了一种基于动态路径的负载迁移方法,所述方法包括如下步骤:
[0023] 步骤一、对于一个由N个节点构成的负载网络,可以构成一个具有N个节点的无向图,设赋权无向图G=[V,W],其中V={v1,v2,...,vn}为顶点集合,W=(wij)n*n为G的邻接矩阵,wij表示边(vi,vj)的权值,即vi与vj之间的传输代价,体现在vi与vj之间的网络状况以及TTL等方面。
[0024] 其中,n为节点的个数;i、j大于等于1小于等于n;vi与vj表示第i个和第j个顶点。
[0025] 使用Floyd算法计算最短距离矩阵D和最短路径矩阵R:
[0026] 设定初值:
[0027]
[0028]
[0029] 其中,
[0030] 对任意vk∈V,更新
[0031]
[0032]
[0033] 表示从vi到vj之间仅允许v1,v2,...,vn作为中间点的路径中最短长度,rij表示从vi到vj的等价最短路径所经过的点集。更新计算如下:
[0034]
[0035]
[0036] 最终得到最短距离矩阵与最短路径矩阵:
[0037]
[0038]
[0039] 步骤二、通过最短距离矩阵和最短路径矩阵构建一条联通所有点的路径,以深度优先的搜索策略构建两个端点vi和vj的路径,如图1所示,构建类似的路径。
[0040] 步骤三、基于对R求在vi到vj的所有等价最短路径,使用设置路径的两端,在两端分别进行向另一个方向的扫描,扫描的过程中加入负载均衡依据的传递,由头部节点和尾部节点两个方向开始传递当前负载均衡器的负载状态,并在每个负载均衡器中维护一个各个负载均衡设备的状态表。如图2所示,具体步骤如下:
[0041] (1)初始化路径:
[0042] 分解R(x,y)=rxy;MidP=rxy,nmu=||MidP||,NumSet=[1,num],PathSet={};
[0043] 初始化路径的中间节点集PathSet:
[0044]
[0045] 其中,MidP=rxy为vx到vy最短路径的点集;nmu为中间点集的个数;
[0046] (2)对PathSet中每条路径Pathk进行向后搜索:
[0047]
[0048] 将Pathk分解成num个集合:
[0049]
[0050] 更新PathSet:PathSet=(PathSet/{Pathk})∪MidSet,直到
[0051] 同时传递x到y方向负载均衡设备状态,并更新x到当前节点k之间的节点状态。
[0052] (3)对PathSet中每条路径Pathk进行向前搜索:
[0053]
[0054] 将Pathk分解成num个集合:
[0055]
[0056] 更新PathSet:PathSet=(PathSet/{Pathk})∪MidSet,直到
[0057] 同时传递y到x方向负载均衡设备状态,并更新y到当前节点k之间的节点状态。
[0058] PathSet就是vi到vj的所有等价最短路路径集合。而负载均衡设备状态也从两个方向传递结束,任意节点k更新了x到k之间的状态,y到k之间的状态,并由两个部分组成一个完整的邻接节点状态表。
[0059] 步骤四、节点k使用邻接节点状态表R(即最短路径矩阵R)记录距离自身i距离的节点,其中i可以为max(k‑first,last‑k),即获取路径上所有节点的状态。利用动态路由协议中的hello报文特性,使用hello报文对节点k周边距离i的节点进行保活探测。当出现节点无响应时视为物理结构变化,则对最短距离矩阵和最短路径矩阵进行更新,并使用Floyd算法重新对路径进行生成。
[0060] 基于动态路径的负载迁移法的路径维护流程图如图3所示。
[0061] 步骤五、当节点j出现数据流超过阈值时,节点j将判定为过载。于是启动迁移调度算法,对于接受到的流量e,节点j处理时间为td,等待时间为tw,那么将流量发送至距离节点j的距离为l的节点k上,所需时间为ts,节点k的内存占用为σk,节点k的总内存上限为σtotal,那么判定是否进行迁移的参数Q为:
[0062]
[0063] 其中,Y为要迁移的流量大小,Sj为节点j的邻接节点状态表,70%为节点配置的阈值。若不存在任何一个邻接节点空闲或预计传输代价大于直接处理的代价时,放弃将流量迁移。否则选择一个适合的节点(取小顶堆堆顶元素,对节点和预估值进行预判,来确定节点是否适合)进行流量转发。
[0064] 基于动态路径的负载迁移法的路径维护流程图如图4所示。
[0065] 步骤六、重复步骤二至步骤五,直至流量发送结束。
[0066] 上面是本发明提出的算法的一种实施,但在某些步骤上,可以进行适当改变,以适应具体情况的需求。例如,在步骤一使用Floyd算法构建矩阵时,算法的时间复杂度为Q3
(n),对于大量节点的网络来说,这部分会浪费较多的时间,这部分可以对算法本身进行优化。步骤二和步骤三中实现对路径的构造以及信息在路径上的传递,如果路径上节点过多将导致传递时间过长,实时性降低,于是可以对路径进行分段,以局部的最适宜代表整体的稳定。步骤五中可以加强对迁移的判断等。
[0067] 本发明的方法提出了去中心化的负载均衡结构,以处理局部流量倾斜偏高的情况,将流量迁移周边的服务器处理,缓解了负载均衡倾斜的现象。由于没有了中心,由调度中心引起的处理延时问题就解决了,但由于各个服务器节点要占用了一部分资源来维持路径上负载均衡迁移模块,使得整体处理速度提高,但各个服务器处理性能稍作降低。
[0068] 本发明主要处理在集群式负载均衡网络之中流量过于偏向某一集群,而将流量迁移给周围的集群设备,以达到恢复流量倾斜的状况。对于任意拓扑结构,使用Floyd算法在原拓扑环境的无向图中获取任意两点之间的最短距离矩阵D和最短路径矩阵R,并构造出连接所有节点的路径,按最短路径进行双向传递,传递两个方向的负载均衡设备的负载状态,并在各个负载均衡节点上更新相邻i个距离的负载均衡状态表,并利用动态路由协议OSPF中hello报文确保网络状态,完成对最短距离矩阵D和最短路径矩阵R的更新。通过传递的各个相邻节点的负载均衡状态,维持了算法的实时性,并基于路径和状态作为负载依据,对局部进行优化,以局部稳定延展到整体稳定,实现负载均衡。
[0069] 图5所示为实验设备横向对比图,通过图内数据分析,可以清晰的看到,随着发送次数的增加,使用基于动态路径的负载迁移方法后,均衡效果更为明显。发送3次之后,优化前数据的增幅开始变大,直到发送次数为8次时,优化前结构的负载率稳定在60%~80%之间。而通过基于动态探测的负载迁移模型优化后,随着发送次数的增加,整体呈现上升趋势,但稳定在30%~50%之间,比较平稳。其中发送次数为4时出现了一个小高峰,判断为接收到了来自其他设备的数据迁移流量,故负载率提高,但仍保持在50%以下,属于正常范畴。