CN110213172A - 基于动态负载监测的流连接系统负载均衡方法及装置 - Google Patents
基于动态负载监测的流连接系统负载均衡方法及装置 Download PDFInfo
- Publication number
- CN110213172A CN110213172A CN201910408893.6A CN201910408893A CN110213172A CN 110213172 A CN110213172 A CN 110213172A CN 201910408893 A CN201910408893 A CN 201910408893A CN 110213172 A CN110213172 A CN 110213172A
- Authority
- CN
- China
- Prior art keywords
- load
- node
- processing node
- key assignments
- tuple
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于动态负载监测的流连接系统负载均衡方法及装置,属于计算机实时大数据流式处理领域,包括:并行的数据分发步骤以及负载监测步骤;数据分发步骤包括:对于任意一个元组t,根据键值与处理节点的映射关系分别将其分发到两部分节点中,以分别对元组t进行存储和连接匹配;负载监测步骤包括:(S1)估计各处理节点的计算负载;(S2)基于计算负载分别计算两部分节点的负载不均程度;(S3)对于任意一部分节点的负载不均程度,若大于均衡阈值,则按照键值进行负载迁移,以减小该负载不均程度,然后转入步骤(S4);否则,直接转入步骤(S4);(S4)经过预设的时间间隔后,转入步骤(S1)。本发明能够满足高吞吐低延时的系统需求。
Description
技术领域
本发明属于计算机实时大数据流式处理领域,更具体地,涉及一种基于动态负载监测的流连接系统负载均衡方法及装置。
背景技术
现在,越来越多的应用,如广告推荐,实时订单匹配,电信欺诈检测等,需要高时效地处理大规模高速产生的实时流数据,其中,每条数据流由随时序实时到来的无限数据项(即元组)组成,每个元组包含可与其他数据流中元组产生关联的属性(即键值)。在这些应用中,对不同数据流进行流连接是最基础以及最重要的操作之一,特别是等值连接。流连接即对两条不同的数据流根据一定条件将其进行关联,连接成一条新的数据流的操作;等值连接则是对两条不同的数据流根据两个元组的键值是否相同而进行匹配,将匹配成功的元组进行关联并作为新的数据流的元组进行输出。例如,网约车软件做“网约车智能派单”应用时,可将实时产生的乘客的请求流与专车的位置流进行快速的连接匹配,将两条流中相同区域内的乘客和网约车匹配在一起,以将乘客的约车请求推送给最近的专车,这一过程就是一个等值连接的过程。
流连接既要面对源源不断的无限数据项的同时,还要实时响应请求,因此,流连接处理比传统的连接处理面临更多的挑战。为实现高效的流连接处理,需要满足以下几个基本要求:1)低延时、高吞吐;2)内存占用低,易于系统扩展;3)连接结果完整,即来自两条流相同键值的两个元组需尽量保证能够进行一次匹配连接。为了满足以上需求,现有的流连接系统通常基于分布式架构,将流连接计算任务均分给多个流连接处理节点,以高并行地进行流连接,提高流连接系统的吞吐能力,降低处理延时,保证系统的可扩展性。高效地完成数据分发,并保证连接结果的完整性,是满足上述基本要求的关键。
现有的基于二部图模型的分布式流连接系统将所有流连接处理单元分为两个对称的部分,分别用于处理两个数据流。这些流连接系统对两条流进行连接计算时,所采用的数据分发方式主要包括:(1)基于随机的数据分发方式,该数据分发方式使得每个处理节点接收到的元组数量相近,处理节点间的工作负载比较均衡,但对于等值连接来说,这种数据分发方式会使得整个流连接系统进行大量无法产生结果的连接匹配,增加了匹配次数,从而增加了系统延时而且降低了系统的吞吐量;(2)基于哈希的数据分发方式,该数据分发方式中,同一个键值的元组只会被分发到相同的处理节点中,避免大量的广播操作,可以减少整个流连接系统的连接匹配的计算量,但是,对具有倾斜分布的流数据容易使得流连接处理节点间出现负载不均的现象,大大增加了系统平均延时,降低了系统吞吐率;(3)随机与哈希相结合的数据分发方式,该数据分发方式将流连接处理节点平均分为若干个组,将元组根据键值映射到相关的处理节点组中,然后将该元组随机分发到该处理节点组中的处理节点,当流数据键值分布严重倾斜时,这种数据分发方式仅能保证同组内的处理节点间计算负载均衡,但不同组间依然存在负载不均现象。总体而言,现有的等值连接方法无法同时兼顾负载均衡与减少系统所有处理节点总的连接匹配次数(即总的工作负载),以至于无法满足高吞吐低延时的系统需求。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于动态负载监测的流连接系统负载均衡方法及装置,其目的在于,在等值连接的过程中实现流连接系统的负载均衡,同时减少总的匹配次数,以满足高吞吐低延时的系统需求。
为实现上述目的,按照本发明的一个方面,提供了一种基于动态负载监测的流连接系统负载均衡方法,流连接系统为基于二部图模型的分布式流连接系统,该方法包括:并行的数据分发步骤以及负载监测步骤;
数据分发步骤包括:对于随时序到达的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得第一节点对元组t进行存储,且第二节点对元组t进行连接匹配;
负载监测步骤包括:
(S1)估计各处理节点进行连接匹配的计算负载;
(S2)根据所估计的计算负载,分别计算流连接系统的两部分节点的负载不均程度;
(S3)对于任意一部分节点的负载不均程度,若大于预设的均衡阈值,则使该部分节点按照键值进行负载迁移,以减小该负载不均程度,负载迁移均结束后,转入步骤(S4);否则,直接转入步骤(S4);
(S4)经过预设的时间间隔后,转入步骤(S1),以实现对流连接系统的动态负载监测和负载均衡;
其中,流连接系统的两部分节点分别用于存储待连接的两个数据流,第一处理节点为用于存储元组t所属数据流的其中一个处理节点,第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据映射关系,键值相同的元组被映射到相同的处理节点。
本发明所提供的基于动态负载监测的流连接系统负载均衡方法,在每一部分节点中,通过将键值相同的元组映射到相同的处理节点,能够减少等值连接过程中无效的连接匹配次数;通过实时检测流连接系统的负载不均程度,并在负载不均程度显示系统负载明显不均衡时,动态的进行处理节点间的负载迁移操作,由此能够实现流连接系统的负载均衡。总的来说,本发明能够在等值连接的过程中实现流连接系统的负载均衡,同时减少总的匹配次数,从而能够提高流连接系统整体的吞吐量并降低流连接处理延时,满足高吞吐低延时的系统需求。
进一步地,根据键值与处理节点的映射关系分别将元组t分发给第一处理节点和第二处理节点,包括:
根据元组t的键值kt查询映射表,若获取到相应的映射表项E,则根据映射表项E记录的映射关系获得第一处理节点和第二处理节点的节点标识;否则,以键值kt为输入,利用预设的映射函数计算第一处理节点和第二处理节点的节点标识;
根据所获取的节点标识将元组t分别分发给第一处理节点和第二处理节点;
其中,映射表用于记录在负载迁移结束后,被迁移元组的键值与处理节点的映射关系,映射关系为键值与节点标识的对应关系,节点标识用于唯一标识处理节点。
流连接需要对两条流中任意一对数据元组进行对比和连接操作,为存储这些实时到来的数据,系统会产生大量的内存开销;上述基于动态负载监测的流连接系统负载均衡方法,利用映射表记录因负载迁移而无法利用映射函数直接计算的映射关系,对于其余的映射关系则利用映射函数直接计算而不进行存储,由此能够完整地记录键值与处理节点之间的对应关系,并避免内存占用过高。
进一步地,本发明所提供的基于动态负载监测的流连接系统负载均衡方法,还包括:在负载迁移结束后,根据被迁移元组的键值以及元组所迁移至的处理节点的节点标识构造新的映射表项,并利用新的映射表项更新映射表。
进一步地,处理节点的计算负载为流连接处理过程中,该处理节点所要进行的元组匹配次数。
在处理节点中进行连接匹配时,其中一条数据流的元组被存储在处理节点中,另一条数据流的元组则作为临时元组与已存储在处理节点中的元组一一进行连接匹配,匹配完成后,临时元组将被该处理节点丢弃;本发明利用处理节点所进行的元组匹配次数作为该处理节点的计算负载,能够准确获取该处理节点的负载情况。
进一步地,步骤(S1)包括:
对于每一个处理节点,分别获得其中属于两个数据流的元组数量并相乘,从而得到该处理节点的计算负载。
上述基于动态负载监测的流连接系统负载均衡方法,根据处理节点进行连接匹配的实际操作过程,将该处理节点中已存储的元组数量与瞬间到达的临时元组数量相乘的结果作为该处理节点的计算负载,能够以较为简便的方式准确获取该处理节点的负载情况。
进一步地,对于任意一部分处理节点,其负载不均程度的计算方式为:
分别获得该部分处理节点内的最大计算负载Lmax和最小计算负载Lmin,以计算该部分处理节点的负载不均程度为:
进一步地,任意一部分节点按照键值进行负载迁移的方法包括:
分别获得该部分节点内具有最大计算负载的处理节点IR-i和具有最小计算负载的处理节点IR-j;
根据处理节点IR-i中的元组确定待迁移的键值集合,以使得将键值属于键值集合的元组均从处理节点IR-i迁移至处理节点IR-j后,处理节点IR-i的计算负载不小于处理节点IR-j的计算负载,且两个计算负载的比值小于负载迁移之前的负载不均程度;
遍历处理节点IR-i中的元组,将键值属于键值集合的元组均迁移至处理节点IR-j。
本发明所确定的待迁移的键值集合,使得将键值属于键值集合的元组均从处理节点IR-i迁移至处理节点IR-j后,处理节点IR-i的计算负载不小于处理节点IR-j的计算负载,且两个计算负载的比值小于负载迁移之前的负载不均程度,由此能够保证负载迁移之后,系统负载不均程度有所下降,并且避免浪费计算资源。
进一步地,键值集合的获取方法包括:
(T1)将该部分节点所存储的数据流记为数据流R,将另一个数据流记为数据流S,计算处理节点IR-i和处理节点IR-j间的负载差值为:并初始化负载差值变量为:Gap=Gap0;
其中,|Ri|和分别为处理节点IR-i中属于数据流R和数据流S的元组数量,|Rj|和分别为处理节点IR-j中属于数据流R和数据流S的元组数量;
(T2)遍历处理节点IR-i和处理节点IR-j中的元组,分别计算每一个键值的键值因子,用于衡量按照该键值进行负载迁移后对负载差值的影响量;
对于任意一个键值k,其键值因子Fk为:
其中,|Rik|为处理节点IR-i中键值k为且属于数据流R的元组数量,为处理节点IR-i中键值k为且属于数据流R的元组数量;
(T3)对于每一个键值,根据其键值因子计算其所对应的元组因子,用于衡量按照该键值每迁移一个元组对负载差值的影响量,并根据元组因子从达到小的顺序对键值进行排序,从而得到有序的键值序列;
对于任意一个键值k,其元组因子Tk为:
(T4)遍历键值序列,对于所遍历到的每一个键值k′,若其键值因子Fk′<Gap,且则更新负载差值变量为Gap=Gap-Fk′,并将键值k′加入到键值集合,从而在遍历结束后得到键值集合;
其中,Th为预设的迁移阈值。
上述获取待迁移的键值集合的方法,为一种贪心的选择方法,基于该方法,对负载差值的影响量较大的元组会被优先迁移,由此能够保证以尽量少的迁移次数使系统的负载不均程度降低到迁移阈值之下,从而能够在实现负载均衡的同时,减少迁移开销,进而提高系统的吞吐量并降低系统的处理延时。
按照本发明的另一方面,提供了一种基于动态负载监测的流连接系统负载均衡装置,流连接系统为基于二部图模型的分布式流连接系统,该负载均衡装置包括:分发组件和监测组件;
分发组件,用于对于随时序达到的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得第一节点对元组t进行存储,且第二节点对元组t进行连接匹配;
监测组件包括:负载监测模块、均衡监测模块、负载迁移模块以及定时模块;
定时模块,用于按照预设的时间间隔定时,以使得其他模块按照该时间间隔执行操作;
负载监测模块,用于估计各处理节点进行连接匹配的计算负载;
均衡监测模块,用于根据由负载监测模块所估计的计算负载,分别计算流连接系统的两部分节点的负载不均程度;
负载迁移模块,用于判断有均衡监测模块所计算的负载不均程度与预设的均衡阈值之间的关系;负载迁移模块,还用于在任意一部分节点的负载不均程度大于均衡阈值时,使该部分节点按照键值进行负载迁移,以减小该负载不均程度;
其中,流连接系统的两部分节点分别用于存储待连接的两个数据流,第一处理节点为用于存储元组t所属数据流的其中一个处理节点,第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据映射关系,键值相同的元组被映射到相同的处理节点。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的基于动态负载监测的流连接系统负载均衡方法及装置,在每一部分节点中,通过将键值相同的元组映射到相同的处理节点,能够减少等值连接过程中无效的连接匹配次数;通过实时检测流连接系统的负载不均程度,并在负载不均程度显示系统负载明显不均衡时,动态的进行处理节点间的负载迁移操作,由此能够实现流连接系统的负载均衡。总的来说,本发明能够在等值连接的过程中实现流连接系统的负载均衡,同时减少总的匹配次数,从而能够提高流连接系统整体的吞吐量并降低流连接处理延时,满足高吞吐低延时的系统需求。
(2)本发明所提供的基于动态负载监测的流连接系统负载均衡方法及装置,在其有选方案中,采用一种贪心的选择方法选择待迁移的键值集合,使得对负载差值的影响量较大的元组会被优先迁移,由此能够保证以尽量少的迁移次数使系统的负载不均程度降低到迁移阈值之下,从而能够在实现负载均衡的同时,减少迁移开销,进而提高系统的吞吐量并降低系统的处理延时。
(3)本发明所提供的基于动态负载监测的流连接系统负载均衡方法及装置,利用映射表记录因负载迁移而无法利用映射函数直接计算的映射关系,对于其余的映射关系则利用映射函数直接计算而不进行存储,由此能够完整地记录键值与处理节点之间的对应关系,并避免内存占用过高。
附图说明
图1为本发明实施例提供的基于动态负载监测的流连接系统负载均衡装置示意图;
图2为本发明应用实例中基于动态负载监测的流连接系统负载均衡方法流程图;
图3为本发明应用实例中确定待迁移的键值集合的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在详细解释本发明的技术方案之前,先对本发明中所使用的技术术语简要介绍如下:
元组:组成数据流的无限数据项;
键值:元组中与其他数据流中的元组产生关联的属性;
流连接:对两条不同的数据流根据一定条件将其进行关联,连接成一条新的数据流的操作;
等值连接:一种特殊的流连接;具体指对两条不同的数据流根据两个元组的键值是否相同而进行匹配,将匹配成功的元组进行关联并作为新的数据流的元组进行输出;
流连接系统:用于执行流连接操作的分布式集群系统;
基于二部图模型的分布式流连接系统:一种流连接系统,其中的处理节点被分为两个对称的部分,两个部分处理节点分别用于存储存待连接的两个数据流;
流连接系统中的延时:一个元组进入流连接系统经过所有处理后所需要的总时间;
流连接系统中的吞吐:一定时间内处理元组的数量;
倾斜分布:在实际应用中,由大量元组的键值集中分布在一小部分键的集合中,这种数据流的键值分布不均匀的现象称为倾斜分布。
为在等值连接的过程中实现流连接系统的负载均衡,同时减少总的匹配次数,以满足高吞吐低延时的系统需求,本发明所提供的基于动态负载监测的流连接系统负载均衡方法,包括:并行的数据分发步骤以及负载监测步骤;
数据分发步骤包括:对于随时序到达的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得第一节点对元组t进行存储,且第二节点对元组t进行连接匹配;
负载监测步骤包括:
(S1)估计各处理节点进行连接匹配的计算负载;
(S2)根据所估计的计算负载,分别计算流连接系统的两部分节点的负载不均程度;
(S3)对于任意一部分节点的负载不均程度,若大于预设的均衡阈值,则使该部分节点按照键值进行负载迁移,以减小该负载不均程度,负载迁移均结束后,转入步骤(S4);否则,直接转入步骤(S4);
其中,均衡阈值可根据实际应用中数据流的键值分布特征相应设定,以保证能够及时识别出流连接系统明显出现负载不均的情况;通常情况下,其取值范围为1.4~2.6;
(S4)经过预设的时间间隔后,转入步骤(S1),以实现对流连接系统的动态负载监测和负载均衡;
其中,流连接系统的两部分节点分别用于存储待连接的两个数据流,第一处理节点为用于存储元组t所属数据流的其中一个处理节点,第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据映射关系,键值相同的元组被映射到相同的处理节点。
本发明所提供的基于动态负载监测的流连接系统负载均衡方法,在每一部分节点中,通过将键值相同的元组映射到相同的处理节点,能够减少等值连接过程中无效的连接匹配次数;通过实时检测流连接系统的负载不均程度,并在负载不均程度显示系统负载明显不均衡时,动态的进行处理节点间的负载迁移操作,由此能够实现流连接系统的负载均衡。总的来说,本发明能够在等值连接的过程中实现流连接系统的负载均衡,同时减少总的匹配次数,从而能够提高流连接系统整体的吞吐量并降低流连接处理延时,满足高吞吐低延时的系统需求。
在一个可选的实施方式中,上述基于动态负载监测的流连接系统负载均衡方法中,根据键值与处理节点的映射关系分别将元组t分发给第一处理节点和第二处理节点,具体包括:
根据元组t的键值kt查询映射表,若获取到相应的映射表项E,则根据映射表项E记录的映射关系获得第一处理节点和第二处理节点的节点标识;否则,以键值kt为输入,利用预设的映射函数计算第一处理节点和第二处理节点的节点标识;在本实施例中,所使用的映射函数具体为哈希函数;
根据所获取的节点标识将元组t分别分发给第一处理节点和第二处理节点;
其中,映射表用于记录在负载迁移结束后,被迁移元组的键值与处理节点的映射关系,映射关系为键值与节点标识的对应关系,节点标识用于唯一标识处理节点;
流连接需要对两条流中任意一对数据元组进行对比和连接操作,为存储这些实时到来的数据,系统会产生大量的内存开销;上述基于动态负载监测的流连接系统负载均衡方法,利用映射表记录因负载迁移而无法利用映射函数直接计算的映射关系,对于其余的映射关系则利用映射函数直接计算而不进行存储,由此能够完整地记录键值与处理节点之间的对应关系,并避免内存占用过高;
为了完整地记录键值与处理节点之间的对应关系,上述基于动态负载监测的流连接系统负载均衡方法,还包括:在负载迁移结束后,根据被迁移元组的键值以及元组所迁移至的处理节点的节点标识构造新的映射表项,并利用新的映射表项更新映射表。
在一个可选的实施方式中,上述基于动态负载监测的流连接系统负载均衡方法中,处理节点的计算负载为流连接处理过程中,该处理节点所要进行的元组匹配次数;
在处理节点中进行连接匹配时,其中一条数据流的元组被存储在处理节点中,另一条数据流的元组则作为临时元组与已存储在处理节点中的元组一一进行连接匹配,匹配完成后,临时元组将被该处理节点丢弃;本发明利用处理节点所进行的元组匹配次数作为该处理节点的计算负载,能够准确获取该处理节点的负载情况;
应当说明的是,利用处理节点所进行的元组匹配次数作为该处理节点的计算负载,仅为获取处理节点计算负载的一种可选方式,不应理解为对本发明的唯一限定;
作为一个优选方案,上述基于动态负载监测的流连接系统负载均衡方法中,步骤(S1)具体包括:
对于每一个处理节点,分别获得其中属于两个数据流的元组数量并相乘,从而得到该处理节点的计算负载;
上述基于动态负载监测的流连接系统负载均衡方法,根据处理节点进行连接匹配的实际操作过程,将该处理节点中已存储的元组数量与瞬间到达的临时元组数量相乘的结果作为该处理节点的计算负载,能够以较为简便的方式准确获取该处理节点的负载情况。
在一个可选的实施方案中,上述基于动态负载监测的流连接系统负载均衡方法中,对于任意一部分处理节点,其负载不均程度的计算方式为:
分别获得该部分处理节点内的最大计算负载Lmax和最小计算负载Lmin,以计算该部分处理节点的负载不均程度为:
可选地,在任意一部分节点内按照键值进行负载迁移的方法包括:
分别获得该部分节点内具有最大计算负载的处理节点IR-i和具有最小计算负载的处理节点IR-j;
根据处理节点IR-i中的元组确定待迁移的键值集合,以使得将键值属于键值集合的元组均从处理节点IR-i迁移至处理节点IR-j后,处理节点IR-i的计算负载不小于处理节点IR-j的计算负载,且两个计算负载的比值小于负载迁移之前的负载不均程度;
遍历处理节点IR-i中的元组,将键值属于键值集合的元组均迁移至处理节点IR-j;具体可通过向处理节点IR-i和IR-j分别发送消息,以使得处理节点IR-i将待迁移的元组发送到处理节点IR-j中,从而完成负载迁移;
通过上述方法所确定的待迁移的键值集合,使得将键值属于键值集合的元组均从处理节点IR-i迁移至处理节点IR-j后,处理节点IR-i的计算负载不小于处理节点IR-j的计算负载,且两个计算负载的比值小于负载迁移之前的负载不均程度,由此能够保证负载迁移之后,系统负载不均程度有所下降,并且避免浪费计算资源;
作为一个优选方案,键值集合的获取方法包括:
(T1)将该部分节点所存储的数据流记为数据流R,将另一个数据流记为数据流S,计算处理节点IR-i和处理节点IR-j间的负载差值为:并初始化负载差值变量为:Gap=Gap0;
其中,|Ri|和分别为处理节点IR-i中属于数据流R和数据流S的元组数量,|Rj|和分别为处理节点IR-j中属于数据流R和数据流S的元组数量;
(T2)遍历处理节点IR-i和处理节点IR-j中的元组,分别计算每一个键值的键值因子,用于衡量按照该键值进行负载迁移后对负载差值的影响量;
对于任意一个键值k,其键值因子Fk为:
其中,|Rik|为处理节点IR-i中键值为k且属于数据流R的元组数量,为处理节点IR-i中键值为k且属于数据流R的元组数量;
(T3)对于每一个键值,根据其键值因子计算其所对应的元组因子,用于衡量按照该键值每迁移一个元组对负载差值的影响量,并根据元组因子从达到小的顺序对键值进行排序,从而得到有序的键值序列;
对于任意一个键值k,其元组因子Tk为:
(T4)遍历键值序列,对于所遍历到的每一个键值k′,若其键值因子Fk′<Gap,且则更新负载差值变量为Gap=Gap-Fk′,并将键值k′加入到键值集合,从而在遍历结束后得到键值集合;
其中,Th为预设的迁移阈值;迁移阈值Th可根据实际应用中数据流的键值分布特征相应设定,以保证通过迁移尽量少的元组实现负载均衡;通常情况下,迁移阈值Th的取值范围为0.05~0.1;
上述获取待迁移的键值集合的方法,为一种贪心的选择方法,基于该方法,对负载差值的影响量较大的元组会被优先迁移,由此能够保证以尽量少的迁移次数使系统的负载不均程度降低到迁移阈值之下,从而能够在实现负载均衡的同时,减少迁移开销,进而提高系统的吞吐量并降低系统的处理延时;
应当理解的是,上述基于贪心的选择方法选择待迁移的键值集合,仅为本发明的一种优选方案,不应理解为对本发明的唯一限定,在实际应用中,也可根据具体需求采用其他方式确定待迁移的键值集合。
本发明还提供了一种基于动态负载监测的流连接系统负载均衡装置,用于实现上述基于动态负载监测的流连接系统负载均衡方法,如图1所示,该负载均衡装置包括:分发组件和监测组件;
分发组件,用于对于随时序达到的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得第一节点对元组t进行存储,且第二节点对元组t进行连接匹配;
监测组件包括:负载监测模块、均衡监测模块、负载迁移模块以及定时模块;
定时模块,用于按照预设的时间间隔定时,以使得其他模块按照该时间间隔执行操作;
负载监测模块,用于估计各处理节点进行连接匹配的计算负载;
均衡监测模块,用于根据由负载监测模块所估计的计算负载,分别计算流连接系统的两部分节点的负载不均程度;
负载迁移模块,用于判断有均衡监测模块所计算的负载不均程度与预设的均衡阈值之间的关系;负载迁移模块,还用于在任意一部分节点的负载不均程度大于均衡阈值时,使该部分节点按照键值进行负载迁移,以减小该负载不均程度;
其中,流连接系统的两部分节点分别用于存储待连接的两个数据流,第一处理节点为用于存储元组t所属数据流的其中一个处理节点,第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据映射关系,键值相同的元组被映射到相同的处理节点;
在本发明实施例中,各模块的具体实施方式,可参考上述方法实施例中的描述,在此将不作复述。
应用实例:
以下以两个具体的数据流(数据流R和数据流S)的流连接操作为例,对本发明的技术方案作更为具体的介绍。由于在基于二部图模型的分布式流连接系统中,用于存储数据流R的一部分处理节点和用于存储数据流S的一部分处理节点是对称的,因此,仅针对存储数据流R的那一部分处理节点进行描述。基于上述流连接系统负载均衡方法及流连接系统负载均衡装置,对数据流R和数据流S进行流连接操作中,由分发组件完成数据分发,由监测组件完成负载监测,两个过程并行执行;具体过程如图2所示;
数据分发步骤具体为:
(a-1)在对数据流R和数据流S进行流连接的过程中,两个数据流中的元组会随时序到达流连接系统,对于数据流R中任意一个随时序到达的元组t,分发组件会判断元组t的键值kt是否在映射表中,若是,则根据该映射表找到对应的节点标识x1和x2;否则,利用哈希函数h计算键值所对应的节点标识x1和x2;节点标识x1所标识的处理节点为存储数据流R的处理节点,节点标识x2所标识的处理节点为存储数据流S的处理节点;
(a-2)分发组件将元组t分发到处理节点中进行存储,并将元组t分发到处理节点中进行连接匹配;
(a-3)将元组t所属的数据流,以及节点标识x1和x2均发送到检测组件中;
负载监测步骤具体为:
在初始时刻,初始化计数数组RArray和SArray,并初始化定时模块Alarm;
(b-1)接收更新计数数组的元组t;t有两个属性值,分别为所属数据流和其键值所对应的处理节点标识id;
(b-2)判断新接收的元组t所属数据流是否是数据流R,若是,则在计数数组RArray中记录编号为id的值加1;否则,在计数数组SArray中记录编号为id的值加1;
(b-3)判断当前的定时模块Alarm是否超时,若是,则转入步骤(b-4);否则,转入步骤(b-1);
(b-4)将计数数组RArray和SArray中相同节点标识的计数值相乘,从而选出这一部分节点中的最大计算负载Lmax和最小计算负载Lmin,以及相应的处理节点IR-i和处理节点IR-j;
(b-5)根据最大计算负载Lmax和最小计算负载Lmin计算这一部分节点的负载不均程度为:并判断负载不均程度DR是否大于均衡阈值,如果是,则转入步骤(b-6);否则,转入步骤(b-1);
(b-6)采用Greedy-Fit方法确定待迁移的键值集合SK;
(b-7)遍历处理节点IR-i中的元组,将键值属于键值集合SK的元组均迁移至处理节点IR-j中,以实现负载均衡;具体可通过向处理节点IR-i和IR-j分别发送消息,以使得处理节点IR-i将待迁移的元组发送到处理节点IR-j中,从而完成负载迁移;负载迁移结束后,转入步骤(b-1);
其中,如图3所示,用于确定待迁移的键值集合的Greedy-Fit方法具体包括如下步骤:
(c-1)计算处理节点IR-i和处理节点IR-j间的负载差值为:Gap0=Lmax-Lmin,并初始化负载差值变量为:Gap=Gap0;
其中,|Ri|和分别为处理节点IR-i中属于数据流R和数据流S的元组数量,|Rj|和分别为处理节点IR-j中属于数据流R和数据流S的元组数量;
(c-2)根据计算处理节点IR-i中每一个键值的键值因子,用于衡量按照该键值进行负载迁移后对负载差值的影响量;
其中,k为键值,Fk为对应的键值因子;|Ri|和分别为处理节点IR-i中属于数据流R和数据流S的元组数量,|Rj|和分别为处理节点IR-j中属于数据流R和数据流S的元组数量,|Rik|为处理节点IR-i中键值为k且属于数据流R的元组数量,为处理节点IR-i中键值为k且属于数据流R的元组数量;
(c-3)根据计算每一个键值所对应的元组因子,用于衡量按照该键值每迁移一个元组对负载差值的影响量,并根据元组因子从达到小的顺序对键值进行排序,从而得到有序的键值序列;Tk为键值k所对应的元组因子;
(T4)遍历键值序列,对于所遍历到的每一个键值k′,若其键值因子Fk′<Gap,且则更新负载差值变量为Gap=Gap-Fk′,并将键值k′加入到键值集合SK,从而在遍历结束后得到键值集合SK并返回;
其中,Th为预设的迁移阈值;
由于两部分节点对称,针对存储数据流S的那一部分节点,相应的操作过程与上述过程类似,在此将不再复述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于动态负载监测的流连接系统负载均衡方法,所述流连接系统为基于二部图模型的分布式流连接系统,其特征在于,包括:并行的数据分发步骤以及负载监测步骤;
所述数据分发步骤包括:对于随时序到达的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得所述第一节点对所述元组t进行存储,且所述第二节点对所述元组t进行连接匹配;
所述负载监测步骤包括:
(S1)估计各处理节点进行连接匹配的计算负载;
(S2)根据所估计的计算负载,分别计算所述流连接系统的两部分节点的负载不均程度;
(S3)对于任意一部分节点的负载不均程度,若大于预设的均衡阈值,则使该部分节点按照键值进行负载迁移,以减小该负载不均程度,负载迁移均结束后,转入步骤(S4);否则,直接转入步骤(S4);
(S4)经过预设的时间间隔后,转入步骤(S1),以实现对所述流连接系统的动态负载监测和负载均衡;
其中,所述流连接系统的两部分节点分别用于存储待连接的两个数据流,所述第一处理节点为用于存储所述元组t所属数据流的其中一个处理节点,所述第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据所述映射关系,键值相同的元组被映射到相同的处理节点。
2.如权利要求1所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,根据键值与处理节点的映射关系分别将所述元组t分发给第一处理节点和第二处理节点,包括:
根据所述元组t的键值kt查询映射表,若获取到相应的映射表项E,则根据所述映射表项E记录的映射关系获得所述第一处理节点和所述第二处理节点的节点标识;否则,以所述键值kt为输入,利用预设的映射函数计算所述第一处理节点和所述第二处理节点的节点标识;
根据所获取的节点标识将所述元组t分别分发给所述第一处理节点和所述第二处理节点;
其中,所述映射表用于记录在负载迁移结束后,被迁移元组的键值与处理节点的映射关系,所述映射关系为键值与节点标识的对应关系,所述节点标识用于唯一标识处理节点。
3.如权利要求2所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,还包括:在负载迁移结束后,根据被迁移元组的键值以及元组所迁移至的处理节点的节点标识构造新的映射表项,并利用新的映射表项更新所述映射表。
4.如权利要求1或2所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,处理节点的计算负载为流连接处理过程中,该处理节点所要进行的元组匹配次数。
5.如权利要求4所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,所述步骤(S1)包括:
对于每一个处理节点,分别获得其中属于两个数据流的元组数量并相乘,从而得到该处理节点的计算负载。
6.如权利要求5所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,对于任意一部分处理节点,其负载不均程度的计算方式为:
分别获得该部分处理节点内的最大计算负载Lmax和最小计算负载Lmin,以计算该部分处理节点的负载不均程度为:
7.如权利要求6所述的基于动态负载监测的流连接系统负载均衡方法,其特征在于,任意一部分节点按照键值进行负载迁移的方法包括:
分别获得该部分节点内具有最大计算负载的处理节点IR-i和具有最小计算负载的处理节点IR-j;
根据所述处理节点IR-i中的元组确定待迁移的键值集合,以使得将键值属于所述键值集合的元组均从所述处理节点IR-i迁移至所述处理节点IR-j后,所述处理节点IR-i的计算负载不小于所述处理节点IR-j的计算负载,且两个计算负载的比值小于负载迁移之前的负载不均程度;
遍历所述处理节点IR-i中的元组,将键值属于所述键值集合的元组均迁移至所述处理节点IR-j。
8.如权利要求7所述基于动态负载监测的流连接系统负载均衡方法,其特征在于,所述键值集合的获取方法包括:
(T1)将该部分节点所存储的数据流记为数据流R,将另一个数据流记为数据流S,计算所述处理节点IR-i和所述处理节点IR-j间的负载差值为:并初始化负载差值变量为:Gap=Gap0;
其中,|Ri|和分别为所述处理节点IR-i中属于所述数据流R和所述数据流S的元组数量,|Rj|和分别为所述处理节点IR-j中属于所述数据流R和所述数据流S的元组数量;
(T2)遍历所述处理节点IR-i和所述处理节点IR-j中的元组,分别计算每一个键值的键值因子,用于衡量按照该键值进行负载迁移后对负载差值的影响量;
对于任意一个键值k,其键值因子Fk为:
其中,|Rik|为所述处理节点IR-i中键值为k且属于所述数据流R的元组数量,为所述处理节点IR-i中键值为k且属于所述数据流R的元组数量;
(T3)对于每一个键值,根据其键值因子计算其所对应的元组因子,用于衡量按照该键值每迁移一个元组对负载差值的影响量,并根据元组因子从达到小的顺序对键值进行排序,从而得到有序的键值序列;
对于任意一个键值k,其元组因子Tk为:
(T4)遍历所述键值序列,对于所遍历到的每一个键值k′,若其键值因子Fk′<Gap,且则更新所述负载差值变量为Gap=Gap-Fk′,并将所述键值k′加入到所述键值集合,从而在遍历结束后得到所述键值集合;
其中,Th为预设的迁移阈值。
9.一种基于动态负载监测的流连接系统负载均衡装置,所述流连接系统为基于二部图模型的分布式流连接系统,其特征在于,包括:分发组件和监测组件;
所述分发组件,用于对于随时序达到的任意一个元组t,根据键值与处理节点的映射关系分别将其分发给第一处理节点和第二处理节点,以使得所述第一节点对所述元组t进行存储,且所述第二节点对所述元组t进行连接匹配;
所述监测组件包括:负载监测模块、均衡监测模块、负载迁移模块以及定时模块;
所述定时模块,用于按照预设的时间间隔定时,以使得其他模块按照该时间间隔执行操作;
所述负载监测模块,用于估计各处理节点进行连接匹配的计算负载;
所述均衡监测模块,用于根据由所述负载监测模块所估计的计算负载,分别计算所述流连接系统的两部分节点的负载不均程度;
所述负载迁移模块,用于判断有所述均衡监测模块所计算的负载不均程度与预设的均衡阈值之间的关系;所述负载迁移模块,还用于在任意一部分节点的负载不均程度大于所述均衡阈值时,使该部分节点按照键值进行负载迁移,以减小该负载不均程度;
其中,所述流连接系统的两部分节点分别用于存储待连接的两个数据流,所述第一处理节点为用于存储所述元组t所属数据流的其中一个处理节点,所述第二处理节点为用于存储另一条数据流的其中一个处理节点;在两部分节点中,根据所述映射关系,键值相同的元组被映射到相同的处理节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408893.6A CN110213172B (zh) | 2019-05-17 | 2019-05-17 | 基于动态负载监测的流连接系统负载均衡方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408893.6A CN110213172B (zh) | 2019-05-17 | 2019-05-17 | 基于动态负载监测的流连接系统负载均衡方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110213172A true CN110213172A (zh) | 2019-09-06 |
CN110213172B CN110213172B (zh) | 2020-10-30 |
Family
ID=67787448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910408893.6A Active CN110213172B (zh) | 2019-05-17 | 2019-05-17 | 基于动态负载监测的流连接系统负载均衡方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110213172B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813761A (zh) * | 2020-06-23 | 2020-10-23 | 浙江大华技术股份有限公司 | 一种数据库管理方法、装置以及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8989049B2 (en) * | 2012-06-15 | 2015-03-24 | Cisco Technology, Inc. | System and method for virtual portchannel load balancing in a trill network |
CN107341240A (zh) * | 2017-07-05 | 2017-11-10 | 中国人民大学 | 一种应对倾斜数据流在线连接的处理方法 |
CN107562531A (zh) * | 2016-06-30 | 2018-01-09 | 华为技术有限公司 | 一种数据均衡方法和装置 |
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
-
2019
- 2019-05-17 CN CN201910408893.6A patent/CN110213172B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8989049B2 (en) * | 2012-06-15 | 2015-03-24 | Cisco Technology, Inc. | System and method for virtual portchannel load balancing in a trill network |
CN107562531A (zh) * | 2016-06-30 | 2018-01-09 | 华为技术有限公司 | 一种数据均衡方法和装置 |
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
CN107341240A (zh) * | 2017-07-05 | 2017-11-10 | 中国人民大学 | 一种应对倾斜数据流在线连接的处理方法 |
Non-Patent Citations (3)
Title |
---|
QIAN LIN ET AL.: ""Scalable Distributed Stream Join Processing"", 《HTTPS://DL.ACM.ORG/DOI/10.1145/2723372.2746485》 * |
SEBASTIAN EGGERT ET AL.: ""Bipartite Matching in the Semi-streaming Model"", 《HTTPS://LINK.SPRINGER.COM/CONTENT/PDF/10.1007/S00453-011-9556-8.PDF》 * |
王春凯 等: ""应对倾斜数据流在线连接方法"", 《软件学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813761A (zh) * | 2020-06-23 | 2020-10-23 | 浙江大华技术股份有限公司 | 一种数据库管理方法、装置以及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110213172B (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018095066A1 (zh) | 任务分组方法、装置、电子设备及计算机存储介质 | |
CN109034481A (zh) | 一种基于约束规划的带时间窗车辆路径问题建模及优化方法 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
CN105991459B (zh) | Cdn节点回源路由分配方法、装置和系统 | |
CN104915717B (zh) | 数据处理方法、知识库推理方法及相关装置 | |
CN108600019A (zh) | 一种网络服务功能链映射方法 | |
Alfarrarjeh et al. | Scalable spatial crowdsourcing: A study of distributed algorithms | |
CN106233276A (zh) | 网络可访问块存储装置的协调准入控制 | |
CN108551489A (zh) | 一种应用服务器负载均衡方法、系统、装置及存储介质 | |
CN107645520A (zh) | 一种负载均衡方法、装置以及系统 | |
CN104243258B (zh) | 一种基于分类的虚拟网络映射方法及系统 | |
CN109408509A (zh) | 数据存储方法、装置及计算机设备 | |
Ma et al. | A note on a selfish bin packing problem | |
CN113177050B (zh) | 一种数据均衡的方法、装置、查询系统及存储介质 | |
Comi et al. | A reputation-based approach to improve qos in cloud service composition | |
CN105677447A (zh) | 分布式云中基于聚类的时延带宽极小化虚拟机部署方法 | |
CN108089918A (zh) | 一种面向异构服务器结构的图计算负载均衡方法 | |
US9749219B2 (en) | Method of optimizing routing in a cluster comprising static communication links and computer program implementing that method | |
CN113300982B (zh) | 资源分配方法、设备、系统及存储介质 | |
CN110213172A (zh) | 基于动态负载监测的流连接系统负载均衡方法及装置 | |
CN112445940A (zh) | 图划分方法、装置及计算机可读存储介质 | |
CN109165096A (zh) | web集群的缓存利用系统及方法 | |
CN107453948A (zh) | 一种网络测量数据的存储方法及系统 | |
CN106537323B (zh) | 存储设备访问调解 | |
CN105512268B (zh) | 一种数据查询方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |