处理无序事件的设备、方法和计算机程序的制作方法_3

文档序号:9240024阅读:来源:国知局
该”旨在也包括复数形式。还应当理解,术语“包括”、“包括有”、“包含”和/或“包含有”当被用在本文中时,指定陈述的特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或更多个其它特征、整数、步骤、操作、元素、组件和/或其组的存在或添加。
[0060]除非另外定义,否则本文所使用的所有术语(包括技术术语和科学术语)具有与由示例实施方式所属于的领域中的普通技术人员所通常理解的相同或类似的意义。还应当理解,术语(例如,在通常使用的词典中定义的那些)应该被解释为具有与它们在相关技术的上下文中的意义一致的意义,并且除非在本文中明确地如此定义,否则将不在理想化的或太正式的意义上被解释。
[0061]图2例示了示例性EBS 200,其包括例如形式为可以收集传感器数据202(例如RFID读数)的天线的数个数据分发装置(DDS) 114,以及网络中可以运行相同的事件处理中间件220的数个节点210-1、210-2。中间件220可以每事件检测器210创建再排序缓冲器222。根据实施方式这个再排序缓冲器222分别可以由推测单元224包围。同时再排序缓冲器222和推测单元224分别形成推测事件缓冲器/排序单元226,其还可以被视为根据实施方式的用于对无序事件流204的事件进行排序的设备。
[0062]如可以从图2看到的,中间件220可以订阅由(传感器)事件源的底层网络230通告的事件204。订阅事件204可以由相应关联的事件检测器210-1、210-2用于检测/确定更高级别事件。为了基于来自网络230的底层订阅事件204正确地确定这样的更高级别事件,来自网络230的事件必须由相应的推测排序单元226-1、226-2时间上再排序。出于此目的,中间件220可以处理诸如处理和联网延迟或检测延迟的所有类型的延迟,并且不必知道所关联的事件检测器210-1、210-2(用本机编程语言(诸如C++)或用某种事件定义语言EDL)实现的复杂事件模式。事件检测器210-1、210-2不必知道其它事件检测器(诸如更高级别事件检测器)正在哪一个机器上运行,也不必知道它们的运行时配置。在启动时,中间件220可能没有关于事件延迟的知识但是可以就事件发布和订阅(通告)而通知其它中间件实例。中间件220因此可以是通用的且封装的。
[0063]为得到实施方式的以下更详细描述,将使用以下术语:事件类型、事件实例和事件时间戳。
[0064].事件类型定义有趣发生或感兴趣的事的发生并且可以由唯一事件类型ID标识。
[0065]?事件实例是事件类型在一时间点的瞬时发生。例如,它可以是简单(传感器)事件或复合事件。
[0066].—个事件可以具有三个时间戳:发生时间、检测时间和到达时间。根据我们的时间模型所有时间戳可以在相同的离散时域中。事件可以在它的发生时间戳ts或缩写为仅时间戳处出现。可以在它的检测时间戳dts处检测到它。在到达时间戳ats处,事件可以由特定EBS节点接收。发生时间戳和检测时间戳在任何接收节点处对于事件可以是固定的,然而到达时间戳可以在网络中的不同节点处变化。
[0067]考虑事件流e1、…、en。预定义类型ID的事件可以被用来设定与事件检测器相关联的本地时钟。然后,如果不存在具有e" id = ek.1d = ID并且e" ats ( e」.ats的ek使得ey ts ( ej.ts ( ek.ts (即,e」.ats在两个连续时钟更新之间不适合),则可以将e」视为无序的。
[0068]事件检测器的输入可以是通常为所有事件的子集的潜在无限的事件流。事件流可以针对该特定事件检测器保持至少感兴趣的事件类型,并且也可以包括一些无关事件。
[0069]考虑以下示例:为了检测选手击中球,我们可以等待球在选手附近(A)并且然后球被踢(加速度峰值(C))的事件。在这两个事件之间可能不存在球离开选手的事件(不是B),因为在那种情况下球将仅仅已跌到地面。更正式地:如果我们接收到事件A(靠近)并且随后接收到事件C(加速度峰值)而不是中间的B(不靠近),则我们可以生成事件D。在这个上下文中,图3a描绘了针对事件D的有限态自动机300。为了简化,我们省去用于选手标识的发送器ID的区别。
[0070]在图3b中描绘了简化的事件流204。流300中的事件(A、B、C、E)是无序的并且事件的自发处理将不导致事件检测器从A4/C5中生成事件D并且将从A2/C1中检测D。这里,符号A4是针对具有发生时间ts = 4的事件A的简化符号。类似地,C5是针对具有发生时间ts = 5的事件C的缩写词。
[0071]为了实现正确的事件检测,EBS 200的缓冲中间件220可以在事件输入流204与事件检测器210之间安装基于K-slack的动态地生成的排序单元。从而,K-slack假定能够使事件ei延迟达至多K个时间单位。因此,对于特定事件检测器210,取得具有潜在无序事件的流并且产生有序事件流的排序单元需要K为所有订阅事件的单位时间中的最大延迟以及用于事件排序的K大小的缓冲器。因此,我们可以从事件流中提取本地时钟elk并且使晚期事件和早期事件这二者延迟尽可能长以避免无序事件处理。
[0072]在这个上下文中,图4示出了用于检测高级别“封锁射门”事件472的示例性事件处理层次400。如可以看到的,级别7“封锁射门”事件472可以基于多个较低级别事件412至462。从而各个较低级别事件412至462可以使专用事件检测器与其相关联。这个事件处理层次400中的各个事件检测器可以具有它自己的动态地参数化的排序单元,并且被配置为检测具有低等待时间的事件。例如,“选手击中球”事件检测器(级别5)可以实现与图3b的模式类似的模式。其排序单元引入多达I秒的等待时间以保证到检测器的有序事件输入。这使“射门”事件(级别6)的检测延迟达至少一秒并且可以使“封锁射门”事件472延迟甚至更长。
[0073]即使跨越层次400对于所有事件检测器412至472使用了最小K值,结果得到的组合或累积等时间也可能未必高并且推测处理可能是较好选项。
[0074]假定图3b的示例需要最小Kd= 3。这使上部处理层次中的任何事件的检测延迟了至少三个时间单位,因为仅能够在三个时间单位延迟情况下检测到事件D。然而,假定类型B的事件是罕见的。然后不使事件D的检测延迟直到我们阻碍事件B的发生为止、但是当事件B实际上发生时在罕见情况下撤销D的假检测可能是有利的。对于图3b所描绘的事件流我们因此可以在将elk设定为8 (由于Kd= 3)之前从A4/C5中检测事件D。如果存在用于稍后取消事件D的检测的事件B则我们可以撤销D。因此,被用来检测事件D的事件检测器可以生成能够被用来以较低等待时间在更高级别上触发事件检测器的初步事件。因此,实施方式的一个关键构思在于组合两个技术并且在于让推测单元224包围(wrap)K-slack缓冲器222以过早地处理事件的一部分。
[0075]如果根本不存在无序事件则附加的推测可能导致改进的检测等待时间,因为不曾更深一层从检测器层次撤销事件检测器发出的东西。然而,在事件流中存在无序事件越多并且检测层次越深,撤销工作可能越复杂,因为可能需要更多存储器来存储检测器状态并且因为可能需要更多CPU时间来执行撤销。因此,在自发推测方法中清除假推测的效果的成本可能容易地比它的有益效果重要并且可能容易地增加等待时间超过纯非推测缓冲将具有成本的。因此,实施方式提出限制推测的量,使得可以在一侧以全容量使用CPU和存储器但是而不在另一侧得以耗尽。能够在运行时推导出系统参数,并且推测排序单元226能够连续地适于当前系统和事件负荷。
[0076]图5例示了根据本发明的实施方式的用于对无序事件流204进行排序的方法500。
[0077]由事件流204包括的事件各自使单独的事件发生时间e1.ts以及多达K个时间单位的最大传播延迟的单独的事件传播延迟与其相关联。方法500包括向推测缓冲单元226提供从传入事件流204接收到的事件的步骤502。此外,方法500包括根据它们相应的发生时间(时间上)对推测事件缓冲单元226中接收到的事件进行排序以便获得如已经关于图3b描述的有序事件的步骤。在另一步骤506中,具有事件发生时间e1.ts的有序事件ei在最早时刻elk被从推测事件缓冲器(排序单元)226推测地转发到它关联的事件检测器210,使得e1.ts+a*K彡clk,其中,α表示其中0〈 a〈I的推测量。在事件检测器210处可以基于至少一个推测地转发的较低级别事件来检测更高级别事件。并且,可以基于所述至少一个有序且推测地转发的事件来设定所检测到的更高级别事件的事件发生时间。例如,在事件检测器210处可以基于从缓冲单元226转发到事件检测器210的第一事件A和第二事件B来检测复合事件C。事件检测器210可以取决于经转发的第一事件A和/或经转发的第二事件B的事件发生时间(例如,取决于第一事件A和第二事件B的发生时间中的哪一个触发复合事件C的发生时间)来设定复合事件C的事件发生时间。因此,事件检测器210可以取决于它的输入事件A、B来设定或重置复合事件C的发生时间(时间戳)。例如,事件检测器210可以给在时刻T2处检测到的复合事件提供对该复合事件作出贡献的较旧事件的时间戳T1(T1〈T2)。例如,这对于更复杂的复合事件(例如英式足球中的“越位”)可能是相关的。这在已经执行方法500之后在事件检测器210的推测事件缓冲单元226的输出端处导致推测地排序的事件流。在目前实施方式的上下文中,推测地转发意指在事件已被延迟了传统上要求的K个时间单位之前转发事件。
[0078]根据实施方式的推测事件处理技术扩展常规的K-slack缓冲方法。它可以按时间顺序放置输入事件204的大多数,但是它不根据需要缓冲它们以得到完全正确的时间顺序。不是缓冲事件^达K个时间单位,而是实施方式仅缓冲^和具有新推测量α的下式一样长:
[0079]e1.ts+α *Κ彡elk a e ]0 ;1[,(I)。从而推测量a可以被用来调整推测分量。a越大,可以推测地发出事件越少。也就是说,如果它是a = I或a接近于1,则实施方式在没有推测的情况下基本上朝向K-slack收敛。用于推测量α的较小值在推测时切换。也就是说,如果α为O或接近于0,则根本没有或几乎没有缓冲/排序,因为不等式(I)在大多数情况下基本上成立(除了如果不同的事件类型被用来在推测排序单元226处设定本地时钟elk则可能发生的具有负延迟的事件)。一般而言:0〈 α〈I。然而,在一些实施方式中:0.1彡α彡0.9。
[0080]例如,具有K = 5和α = I的常规事件排序单元将发出具有ts = 20的事件,其是不在elk至少为25之前在elk = 22处接收到的。仅然后e1.ts+K = 20+5 ^ 25 = elk。纯缓冲中间件将不仅仅发出事件而是它们还将从缓冲器中清除它们。在具有K = 5但是具有α =0.6的示例中,推测缓冲器226可能已经在elk = 23 (20+0.6*5 = 23)处即较早地推测地发出具有ts = 20的事件。在推测量α < 0.4情况下发出甚至立即在elk = 22处。根据实施方式,如果总是基于相同的事件类型设定elk,则在时刻elk被从推测事件缓冲器226推测地转发到事件检测其210的具有事件发生时间ep ts的事件Oi满足e ^ ts+K>clk。
[0081]在附加推测(S卩,0〈α〈1)情况下,事件可以被推测地发出给事件检测器210但是可能不再立即被从缓冲器中清除或删除,因为它们稍后可能是事件重放所需要的。根据一些实施方式,至少如果一直总是基于相同的事件类型得到时钟信号elk,则可以在所述时刻elk从事件缓冲器中删除具有满足ep ts+K ( elk的事件发生时间e1.ts的事件ei。因此,根据实施方式,可以利用已经发出指针(AEP)增强推测事件缓冲器226,所述AEP可以被认为是对已经被推测地发出的推测缓冲器226中的最后事件或元素的引用。也就是说,推测地转发事件的步骤506可以包括使最后推测地转发的事件的指针(AEP)保持在事件缓冲器226 中。
[0082]来自输入流204的新近到达事件ei可以根据它的发生时间戳e ^ ts被插入到推测事件缓冲器226中。例如,在图6a和图6b中可以在已经缓冲的事件A2 (具有ts = 2的A)与B4 (具有ts = 4的B)之间插入晚到达事件A3 (具有ts = 3的A)。从缓冲器的首部到已经发出指针(AEP)的事件A0、事件Cl和事件A2(示出为阴影)已经被转发到所关联的事件检测器。取决于α、elk, K和AEP,存在两个可能的情况:
[0083].e1.ts>eAEP.ts:如果最新到达事
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1