一种支持负载均衡的动态伸缩移动感知复杂事件处理方法与流程

文档序号:11623905阅读:334来源:国知局
一种支持负载均衡的动态伸缩移动感知复杂事件处理方法与流程

本发明涉及移动感知复杂事件处理领域,具体涉及一种支持负载均衡的动态伸缩移动感知复杂事件处理方法,能够在运行时刻横向扩展移动感知复杂事件处理查询的处理节点,保证扩展前后事件处理在语义上的一致,并能在运行时刻均衡各处理节点间的负载,从而提升移动感知复杂事件处理查询的吞吐率。



背景技术:

近几年,诸如传感器等各种数据源的出现使需要处理的数据规模呈指数型增长,为了对规模庞大的数据形成的数据流进行实时处理,复杂事件处理技术成为了研究热点。复杂事件处理技术发掘数据流中数据潜在表达的语义,检测用户感兴趣的事件模式,当这种事件模式发生时,产生一个复杂事件并将其传递给用户。移动感知复杂事件处理是复杂事件处理技术在移动互联网时代发展出的一个分支。移动感知复杂事件处理能对以位置为基准的一定范围内的复杂事件进行查询,并且这种范围随着基准位置的移动而改变。这种特性使移动感知复杂事件处理技术相较于传统的复杂事件处理技术更能适应移动环境。

在现有的移动感知复杂事件处理架构中,一条用户查询对应着一个称为operatorgraph的处理单元,每个operatorgraph又由若干个称为operator的处理节点及其之间的数据流构成。每个operator负责处理查询的一部分,其处理前续operator通过数据流发送的数据,产生结果后将其作为新的数据流输出至后续operator。这种架构的可扩展性是极低的,当数据量突然大幅度增加时,operatorgraph将无法满足用户的吞吐率需求,造成拥塞。

现有技术中仍然存在需要解决的问题。首先,系统无法在运行之前事先知道使用多少个operator副本才是最合适的。使用过多的副本将造成系统资源的浪费,使用过少的副本又将造成处理能力不足,影响吞吐率。其次,随着时间的推移,不同副本的负载——即每秒流入该副本的数据量——将产生差异,这种差异使有些副本过载,有些副本无法完全发挥其处理能力。



技术实现要素:

为了解决上述问题,本发明提出了一种支持负载均衡的动态伸缩移动感知复杂事件处理方法。提升系统资源的利用率,提高operator副本的整体吞吐率。

本发明监控operator副本的负载,利用动态伸缩的方法优化移动感知复杂事件处理系统中operator副本在运行时刻不同负载下的数量,提升系统资源的利用率,并保证调整前后查询结果的一致性。此外,利用负载均衡的方法提高operator副本的整体吞吐率。此外,本发明还保证了在使用动态伸缩和负载均衡方法后,移动感知复杂事件处理结果与使用上述方法前是一致的。

技术方案:本发明公开的一种支持负载均衡的动态伸缩移动感知复杂事件处理方法,其步骤包括:

步骤1、轮次时间收集与处理:对于operator副本,处理连续两个标记信息之间的数据称为一个轮次。轮次时间收集,分别收集每个operator所有副本对当前轮次的处理时间;轮次时间处理,计算出各副本处理时间的平均值和变异系数;

步骤2、判断是否需要伸缩或负载均衡:根据步骤1中得到的平均值和变异系数判断是否有operator计算能力不足而需要动态伸缩或需要负载均衡;

步骤3、进行伸缩与负载均衡:当operator进行伸缩,即调整operator副本个数,使operator以合适的计算资源匹配当前负载,即该轮次处理时间的平均值处于设定的阈值范围θmean_high~θmean_low,或小于θmean_low,同时变异系数不小于预设的阈值θcv_high;

当各副本进行负载均衡,即重新分配operator副本之间的负载,直至变异系数小于预设的阈值。

进一步的,步骤1中包含以下2个步骤:

步骤1.1、轮次时间收集;

步骤1.2、轮次时间处理。

上述方法的步骤1中,轮次时间收集,开始处理当前轮次数据时,副本记录当前时刻t1;处理到标记信息时,暂停数据处理并记录当前时刻t2;将t2-t1作为该轮次数据的处理时间;所有副本均得到该轮次处理时间时,该轮次的轮次时间收集结束。

轮次时间处理,得到所有副本的轮次时间后,计算所有副本该轮次处理时间的平均值tmean和变异系数tcv:

tsd表示标准差,n表示副本个数,tprocess_i表示第i个副本该轮次的处理时间。

上述方法的步骤2中包含以下2个步骤:

步骤2.1、判断operator是否需要伸缩。根据步骤1.2计算得到的tmean和tcv,按照如下规则判断operator是否需要伸缩:

①tmean大于阈值θmean_high,则增加一个operator副本;

②tmean小于阈值θmean_low且tcv小于阈值θcv_high,则减少一个operator副本。

步骤2.2、判断各副本是否需要负载均衡。根据步骤1.2计算得到的tmean和tcv,按照如下规则判断各副本是否需要负载均衡:

当tcv大于阈值θcv_high,则需要进行负载均衡。

步骤3中包含以下步骤:

当operator进行伸缩,即调整operator副本个数,使tmean小于阈值θmean_high,且tmean大于阈值θmean_low,或tmean小于阈值θmean_low,但tcv不小于阈值θcv_high。

当各副本进行负载均衡,即重新分配operator副本之间的负载,直至tcv小于阈值θcv_low。

上述的operator进行伸缩方法,进一步包括以下步骤:

步骤3.1,增加或减少operator副本。

根据轮次时间处理中得到的平均值和变异系数,若需要增加operator副本,则从存储已就绪副本的资源池中获取一个副本,并与前续和后续operator的各个副本进行连接;若需要减少operator副本,则首先将其中的状态迁移至其他副本,然后将该副本放入资源池中。

步骤3.2,对数据所属副本进行重新划分。

增减了operator副本数量后,有些数据需要划分给新的副本处理,或是被删除的副本的数据需要由其他副本处理,因此需要对数据进行重新划分。重新划分的过程基于一致性哈希,一致性哈希通过哈希函数将数据散列在2n个桶的环形空间上,每个副本具有多个虚拟节点,这些虚拟节点通过相同的哈希函数散列在环上,环上的数据顺时针分配给最近的虚拟节点,数据最终将发送给虚拟节点对应的副本。重新划分数据的过程是,当增加副本后,在环上相应地增加或删除虚拟节点,并重新将环上的数据进行分配;当减少副本后,在环上相应的删除虚拟节点,被删除的副本的数据由其他副本处理。

步骤3.3,对副本状态进行迁移。

副本状态即迁移时刻副本中存储的数据,包括:

①数据缓存,包括未处理和新生成的数据;

②中间结果,指副本对数据进行处理所产生的中间结果数据;

③路由状态,指副本发送数据时所需的信息;

对发生伸缩的operator数据缓存和中间结果进行迁移,同时调整其前续operator、后续operator对其的路由状态。增删副本并重新划分数据后,需要将状态迁移至对应的副本才能开始新一轮次的处理。称发生伸缩的operator为l1,其前续operator称为l0,后续operator称为l2。l1层的数据划分变动后,其数据缓存和中间结果均需要发生迁移;l0、l2层需要调整其对l1的路由状态,使数据能按照新的划分进行发送。

上述的各副本进行负载均衡的方法,进一步包括以下步骤:重新分配operator副本之间的负载,负载均衡算法以一致性哈希为基础,首先根据环上数据划分得出各副本的负载情况,即副本对应的所有虚拟节点分配数据量的总和;然后对副本按负载进行排序,得到负载最大副本nh和负载最小副本nl;将nh负载最低的虚拟节点分配给nl,重新计算副本的变异系数tcv;若tcv小于阈值θcv_low,则循环终止,否则跳转至对副本按负载进行排序步骤。

有益效果:本发明利用了移动感知复杂事件处理技术使用标记信息来分割不同范围事件的特性,得到了同一个operator各个副本每轮次数据处理的平均值和变异系数,并以之为基础构建了移动感知复杂事件处理伸缩性和负载均衡方法,使移动感知复杂事件处理技术能在运行时刻调整其operator副本数量并均衡副本间负载,从而节省移动感知复杂事件处理技术运行过程中的整体开销,并提升其吞吐率。

附图说明

图1为本发明实施例的伸缩与负载均衡决策过程示意图;

图2为本发明实施例的动态增加副本过程示意图;

图3为本发明实施例的动态减少副本过程示意图;

图4为本发明实施例的状态迁移过程示意图。

具体实施方式

下面对本发明技术方案结合附图和实施例进行详细说明。

移动感知复杂事件处理是一种支持移动环境下对数据流中的数据进行实时复杂事件处理的技术。进行移动感知复杂事件并行处理架构开发时需要使operator具有动态伸缩和负载均衡功能时,可以使用本发明。

本发明的一种支持负载均衡的动态伸缩移动感知复杂事件处理方法,是一种支持移动感知复杂事件处理的处理节点operator在运行时刻动态进行副本数量调整及副本负载均衡的编程方法。若运行时刻operator副本数量无法承载operator负载,或副本数量过多导致计算资源浪费,则进行动态副本数量调整;若运行时刻operator副本间的负载不均衡造成某些副本过载,某些副本空闲,则进行动态负载均衡。

支持负载均衡的动态伸缩移动感知复杂事件处理方法,其步骤包括:

步骤1、轮次时间收集与处理:对于operator副本,处理连续两个标记信息之间的数据称为一个轮次。轮次时间收集,分别收集每个operator所有副本对当前轮次的处理时间;轮次时间处理,计算轮次时间收集步骤中得到的各副本处理时间的平均值和变异系数。

轮次时间收集,开始处理当前轮次数据时,副本记录当前时刻t1;处理到标记信息时,暂停数据处理并记录当前时刻t2;将t2-t1作为该轮次数据的处理时间;所有副本均得到该轮次处理时间时,该轮次的轮次时间收集结束。

轮次时间处理,得到所有副本的轮次时间后,计算所有副本该轮次处理时间的平均值tmean和标准差tsd,并根据tmean和tsd计算出变异系数tcv:

n表示副本个数,tprocess_i表示第i个副本该轮次的处理时间。

步骤2、判断是否需要伸缩或负载均衡,如图1所示:

步骤2.1、根据步骤1.2计算得到的tmean和tcv,判断operator是否需要伸缩:

①tmean大于阈值θmean_high,则增加一个operator副本;

②tmean小于阈值θmean_low且tcv小于阈值θcv_high,则减少一个operator副本。

步骤2.2、根据步骤1.2计算得到的tmean和tcv,判断各副本是否需要负载均衡:

①tcv大于阈值θcv_high,则进行负载均衡。

不同的运行环境下轮次时间不同,阈值一般在几十到几百毫秒,根据运行环境设定合适的阈值。

步骤3、进行伸缩与负载均衡:当operator进行伸缩,即调整operator副本个数,使operator以合适的计算资源匹配当前负载,即该轮次处理时间的平均值处于设定的θmean_high~θmean_low,或小于θmean_low,但变异系数不小于预设的阈值θcv_high;

当各副本进行负载均衡,即重新分配operator副本之间的负载,直至变异系数小于预设的阈值θcv_low。

operator进行伸缩,调整operator副本个数,使operator以合适的计算资源应对当前负载,包括以下步骤:步骤3.1,增加或减少operator副本。

如图2所示,根据轮次时间处理中得到的平均值和变异系数,若需要增加operator副本,则从存储已就绪副本的资源池中获取一个副本,并与前续和后续operator的各个副本进行连接;如图3所示,若需要减少operator副本,则首先将其中的状态迁移至其他副本,然后将该副本放入资源池中。

步骤3.2,对数据所属副本进行重新划分。

增减了operator副本数量后,有些数据需要划分给新的副本处理,或是被删除的副本的数据需要由其他副本处理,因此需要对数据进行重新划分。重新划分的过程基于一致性哈希,一致性哈希通过哈希函数将数据散列在2n个桶的环形空间上,每个副本具有多个虚拟节点,这些虚拟节点通过相同的哈希函数散列在环上,环上的数据顺时针分配给最近的虚拟节点,数据最终将发送给虚拟节点对应的副本。重新划分数据的过程是,当增加副本后,在环上相应地增加或删除虚拟节点,并重新将环上的数据进行分配;当减少副本后,在环上相应的删除虚拟节点,被删除的副本的数据由其他副本处理。

步骤3.3,对副本状态进行迁移。见图4:

副本状态即迁移时刻副本中存储的数据,包括:

①数据缓存,包括未处理和新生成的数据;

②中间结果,指副本对数据进行处理所产生的中间结果数据;

③路由状态,指副本发送数据时所需的信息;

称发生伸缩的operator为l1,其前续operator称为l0,后续operator称为l2。l1层的数据划分变动后,其数据缓存和中间结果均需要发生迁移;l0、l2层需要调整其对l1的路由状态,使数据能按照新的划分进行发送。

实施例

本实施例以车祸场景检测为例说明本发明的使用方法。本例中一共有三种operator:减速检测operator,换道检测operator和车祸检测operator。数据先分别经由减速检测operator和换道检测operator处理后,一并发送至车祸检测operator进行处理以判断是否发生车祸。

现设定三种operator的初始并行度均为1,即每个operator有一个副本,使用一致性哈希对数据的carno(车牌号)属性的末位(0-9)进行映射,将数据传输至映射的副本。设θmean_high=300,θmean_low=100,θcv_high=5,θcv_low=3。

初始时,所有速度事件均发送给减速检测operator的唯一副本(1号)。在某一轮次的事件处理过后,该副本处理该轮次事件的时间为350>θmean_high,触发动态伸缩,减速检测operator需要增加一个副本,因此从operator池中取出一个减速检测operator副本的实例(2号)。接下来重新划分每个operator处理的数据范围,将carno以5-9结尾的数据划分给2号副本,并将相关的数据缓存与中间结果从1号副本迁移至2号副本,调整数据源与车祸检测operator到减速检测operator的路由状态。

接下来在另一轮次的事件处理过后,2个减速检测operator副本处理该轮次事件的时间平均值为200,但变异系数达到了6,根据规则需要进行负载均衡。此时一致性哈希的环上有4个虚拟节点(1-4号),carno以0-2结尾的数据发送给1号虚拟节点,3-4结尾的数据发送给2号虚拟节点,5-7结尾的数据发送给3号虚拟节点,8-9结尾的数据发送给4号虚拟节点。1、2号虚拟节点的数据发送给1号副本,3、4号虚拟节点的数据发送给2号副本。负载均衡时,首先对副本按负载进行排序,1号副本负载大于2号副本负载,将1号副本负载最小的2号虚拟节点分配给2号副本。重新计算副本的变异系数,结果为2.5,说明负载均衡后各副本负载趋于平均,因此结束负载均衡,开始下一轮次的事件处理。

之后的某一轮次中,2个减速检测operator副本处理该轮次事件的时间平均值为400,且变异系数为5.5。此时根据规则,需要先增加一个减速检测operator的副本,然后对其进行负载均衡。另一轮中,2个副本的事件处理时间平均值为90,变异系数为2。此时根据规则,将2号副本的数据缓存与中间结果迁移至1号副本,调整数据源与车祸检测operator到减速检测operator的路由状态,然后将2号副本放回operator池中。

本发明利用了移动感知复杂事件处理技术使用标记信息来分割不同范围事件的特性,得到了同一个operator各个副本每轮次数据处理的平均值和变异系数,并以之为基础构建了移动感知复杂事件处理伸缩性和负载均衡方法,使移动感知复杂事件处理技术能在运行时刻调整其operator副本数量并均衡副本间负载,从而节省移动感知复杂事件处理技术运行过程中的整体开销,并提升其吞吐率。

虽然本发明通过实施例进行了描述,但实施例并非用来限定本发明。本领域技术人员可在本发明的精神的范围内,做出各种变形和改进,其同样在本发明的保护范围之内。因此本发明的保护范围应当以本申请的权利要求相同或等同的技术特征所界定的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1