用于迁移事件检测器处理的设备、方法和计算机程序的制作方法
【专利摘要】实施方式涉及将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至分布式计算系统的第二节点(N2)的概念,其中事件检测器处理多个输入事件(e;A、B、C)以基于输入事件产生至少一个输出事件(D),其中每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于输入事件至第一节点(N1)的传播时间。其包括将关于对应于第一节点(N1)的多个输入事件(e;A、B、C)的事件延迟的信息从第一节点(N1)转移(112;312)至第二节点(N2);将事件检测器的内容从第一节点(N1)转移(114;314)至第二节点(N2)以在第二节点获得迁移的事件检测器;将多个输入事件(e;A、B、C)从第一节点(N1)转发(116;316)至第二节点(N2);在第二节点(N2)接收(122)从第一节点(N1)以及从与多个输入事件关联的起源事件检测器并行地转发的多个输入事件(e;A、B、C);以及基于关于事件延迟的转移的信息和基于从关联的起源事件检测器接收的多个输入事件(e;A、B、C)的事件延迟在第二节点(N2)处理(124;320)多个接收的输入事件(e;A、B、C)。
【专利说明】用于迁移事件检测器处理的设备、方法和计算机程序
[0001]本发明的实施方式总体涉及数据网络,并且具体地说,涉及用于在分布式计算系统的不同节点之间转移或迁移事件检测器的设备和方法。
【背景技术】
[0002]诸如(例如)无线传感器网络的传感器网络具有宽范围的应用。例如,多种技术的无线传感器网络可用于定位用途,诸如定位人和/或其它对象。这里,“定位”意指检测或确定地理位置或方位。一些专用的定位或方位跟踪系统可用于在体育赛事(诸如足球、美式足球、橄榄球、网球等)中定位球员和其它对象(例如,球)。
[0003]通过利用球员和/或球的收集的地理位置或定位数据,可得出关于整个体育赛事(例如足球比赛)或关于单个球队或球员的统计学信息。由于多种原因,这样得到的统计学信息可以是有趣的。一方面,由于特定的统计及其分析的可与在体育馆和/或家中的电视机前的观众具体地关联,所以存在许多商业利益。由此,提供特定的统计可在体育赛事中产生更多利益。另一方面,从原始定位数据得出的统计数据也可用于训练用途。这里,可分析对手和/或自己球队的行为以及各个球员的表现和/或健康状况。
[0004]前述定位或方位跟踪系统可基于多种技术。例如,可基于对无线信号和/或磁场的评价来确定位置信息。为此,通常还表示为传感器的发送器和/或接收器可布置于将通过系统定位的单独对象(例如,球员、球等)处。对应的接收和/或发送装置也可安装至所关注的地理区域(例如,足球场)周围的预定位置处。仅举例说明一些可能的技术替代,对信号强度、信号传播时间和/或信号相位的评价可接着引出对单独球员或对象在不同时刻的地理方位进行指示的传感器数据流。一般来说,地理位置数据样本与对对象何时位于何地理方位进行指示的时间戳关联。利用该组合的信息运动学数据,除包括例如X坐标、y坐标和z坐标这样的位置数据之外,也可提供像速度(速率)、加速度等。在本说明书的下文中,由定位传感器系统传送的位置和运动学数据还将称作(原始)传感器数据。
[0005]在无线跟踪系统的特定示例中,人或对象可配有微型发送器,其可嵌入于鞋、制服和球中,并且通过在被观察的区域周围布置的若干天线来拾取其信号。接收器单元处理收集的信号并确定它们的到达时间(ToA)值。基于对传播延迟的差异进行计算,随后连续地确定每个发送器的方位。另外,集成有无线跟踪系统的计算机网络可分析方位或传感器数据,以检测特定事件。在2.4或5GHz波段中操作的跟踪系统是全球免费许可的。
[0006]基于从定位或位置跟踪系统输出的原始传感器数据流,可检测到所谓的“事件”。因此,事件或事件类型可定义为在一时间点关注的瞬时发生,并可由唯一的事件ID限定。通常,事件与可被感测到的相关数量的分布的变化关联。事件实例是在不同时间点的事件类型的瞬时发生。事件可以是原始事件(直接基于跟踪系统的传感器数据(运动学数据))或合成事件(基于先前检测到的其它替代事件)。也就是说,合成事件不直接基于原始的传感器数据而是基于其它事件。在球类游戏应用中,事件例如可以是“球员X击中球”或“球员X正控制球”。更复杂的事件例如可以是“越位”或“犯规”。每个事件实例可具有三个时间戳:发生、检测和到达时间戳。所有时间戳处于相同的离散时域中。发生时间戳ts是事件实际发生的时间,检测时间戳dts是由事件检测器检测到事件的时间,并且到达时间戳ats是由特定的事件处理系统(EPS)节点接收到事件的时间。发生和检测时间戳针对在任何接收节点的事件实例是固定的,而在网络中的不同节点处,到达时间戳可变化。
[0007]在过去的几年内,在数据库和分布式系统团体中,基于基础的传感器数据流的事件的检测(复杂事件处理,CEP)被更多地关注。现今宽范围的并且数量一直增加的应用(包括如网络监控、电子商务、医疗保健、金融分析和安全性或前述体育赛事监督的应用)依赖于处理数据流之上的查询的能力,所述数据流之上的查询理想地采取时间次序的一系列事件的形式。事件检测指不需要人工干预的原始传感器数据和/或事件的全自动化处理,因为在许多应用中,大量供应的传感器数据和/或事件已经不再能够被人类采集或处理。例如,如果预计到球员或运动对象(例如,球)的高速变化,则必须以足够高的数据速率通过基础的(无线)传感器网络确定原始的传感器(定位或位置跟踪)数据。另外,如果要跟踪的球员和/或对象(例如,在足球中,有22个球员和一个球)的数量很大,则整体地理位置和运动学数据样本每秒的量会变得过大,特别是针对实时事件处理需求。
[0008]由此,即使全自动化地分析原始传感器和/或事件数据流并且以信号发送,仍然存在太多的信息,这些信息可能甚至完全没有任何意义。未来,随着越来越多的装置将配有传感器并且可能将它们确定的传感器数据提供至诸如互联网的公共网络(例如,由像智能电话的无线装置确定的天气或温度数据),该问题将进一步变糟糕。因此,将要进一步处理到关注的特定事件中的传感器数据的量将快速增长。通过尝试逐条地聚集原始传感器数据并确定更抽象的和互相依赖的事件,自动化的事件检测可提供针对这种情况的补救办法,其可转移比原始传感器数据本身多得多的信息。例如,除前述关于足球的示例之外,这种确定的事件可包括“轿车X位于十字路口 Y”或“在路X上的交通拥堵”。
[0009]在自动化的事件检测中发生的问题是针对可能的大量的并行传感器和/或事件数据流执行事件检测所需的计算能力,所有这些都在至少接近实时处理的需求下。可通过可例如在可例如通过以太网进行通信的计算机网络的不同(即,分布式)的网络节点上运行的事件检测器的并行化来解决该问题。因此,事件检测器根据用户的事件说明从事件或传感器数据流中自动地提取所关注的特定事件。单独的事件检测器可分布在数据网络的不同的网络节点上,其中,不同的事件检测器利用通过不同的网络路径和分支在网络上行进的事件和/或传感器数据进行通信。因此,可根据像例如UDP (用户数据报协议)、TCP (传输控制协议)/IP (互联网协议)等的某些传输协议在数据分组中传输原始传感器数据和/或事件。然而,这种概念导致了关于不同的网络节点之中的可能的不平衡的计算负载以及关于网络中的事件数据流的同步的新的问题。在没有合适对策的情况下,不同的网络节点之间的计算负载不平衡,并且网络中的单独的传感器和/或事件数据流彼此在时间上不同步,这表示单独的事件可不按它们的初始时间次序到达事件检测器,从而导致错误的检测结果。
[0010]现在,让我们看示例性的足球场景,其中,假定多个并行的自动操作事件检测器用于检测从球员A至球员B的传球。为了检测“传球”事件,需要以下前序事件序列:
[0011]1、“球员A持球”;
[0012]2、“球员A踢球”;
[0013]3、“球离开球员A”;[0014]4、“球靠近球员B”;
[0015]5、“球员B击球”。
[0016]对事件“球员X踢球”的事件检测可基于事件序列“球员X靠近球”以及检测到的球的加速度峰值。针对所述事件“球员X踢球”,存在以下用于设置自动化的事件检测器的替代形式:
[0017]我们可一个接一个地等待单独的要求的事件。如果我们以正确的(时间)次序看见了所有要求的事件(这里,为了简明起见,忽视任何中止标准),可以说,我们已经看见或经历了一次传球。然而,针对复杂应用,由于事件检测器的并行化导致不一定在单个网络节点或CPU(中央处理单元)上发生对所有要求的事件的检测。因此,不必一定确保单独的要求的事件按照正确的要求的次序到达事件检测器。例如,这可以是由于网络不稳定(jitter)、变化和/或不平衡的CPU负载或增大的网络负载。例如,考虑由事件实例e”e2、…、en(其中,ek.ats〈ek+1.ats, (I ( k〈n))构成的事件流,即,事件流中的事件根据它们的到达时间按升序进行分类。如果存在任何事件ei和& (其中,I < i<j ( η)使得e1.ts>ej.ts,则将事件&被指示为无序事件。
[0018]由此,我 们可尝试缓存事件并随后搜索针对正确的事件形式(correct eventpattern)的缓冲器。但是应该使用何种缓冲器大小?如果我们说在最大5秒内必须发生传球,则我们将要考虑在第一关联事件之后的最大5秒的时间段内的事件,直至我们检测到传球或直至我们放弃。然而,最后的关联事件还可能在计算上较为复杂,这需要小的附加的缓冲器。但是该附加的缓冲器大小如何?以及与需要“传球”事件作为输入事件的合成事件检测器相关的缓冲器大小如何?
[0019]在S.Babu、U.Srivastava 和 J.Widom 的“Exploiting k-constraints to reducememory overhead in continuous queries over data streams,,(ACM Trans.DatabaseSystems,第29卷,第545 - 580页,2004年)中的K-slack算法是一种在事件检测中处理无序事件的公知的方案。K-slack使用长度K的缓冲器来确保事件ei可延迟至多K个时间单位(K必须是先验已知的)。然而,在分布式系统中,事件信号延迟取决于整个系统/网络配置(即,事件检测器的分布)以及网络和CPU负载。最终系统配置和负载情况在编译时均是不可预见的。
[0020]根据M.L1、M.Liu、L.Ding、E.A.Rundensteiner 和 Μ.Mani 的 “Event streamprocessing with out-of-order data arrival,,(Proc.27th Intl.Conf.DistributedComputing Systems Workshops, (Washington, DC),第 67 - 74 页,2007 年)中的方法,只要e1.ts+K< clk,就缓存至少事件ei。由于在分布式系统中不存在全局时钟,因此每个节点通过将其本地时钟设置为迄今已知的最大发生时间戳来使其本地时钟同步。
[0021]实施K-slack方法的排序单元将具有给定的K的滑动窗口应用于输入流,根据事件的时间戳来延迟事件,并生成事件的排序后的输出流。然而,针对分布式的、分级的事件检测器,单个的固定的先验K不起作用。随着K-slack用K个时间单位产生合成事件,也缓存了 K个单位并等待合成事件的在更高层上的事件检测器错过所述事件。等待时间沿着事件检测器层级增加。
[0022]在M.Liu、M.L1、D.Golovnya、E.Rundensteiner 和 K.Claypool 的 “Sequencepattern query processing over out-of-order event streams,,(Proc.25th Intl.Conf.Data Engineering, (Shanghai, China),第 784 - 795 页,2009 年)中,通过针对每个事件检测器指明单独的K避免了这种问题。每个Kn(η指层级)必须被设为大于max(Klri)的值,即,大于所有的预订的事件的最大的延迟。从而,预订的事件是各个事件检测器所关注的事件。层级η的事件检测器预订更低层级的事件,以将其用作检测更高分级事件的输入。虽然这样乍看起来不错,但是从特定应用和拓扑的角度,很难针对所有&选择合适的值,并且仅在仔细测量之后可以实现。保守的和过大的&导致具有大的存储需求的大缓冲器和针对分级CEP的长的延迟(由于延迟增加)。必须避免Kj过大。理论上,针对通用系统,可仅通过取决于事件检测器的分布和具体的基础网络拓扑的运行时间测量作为延迟来寻找最小的/最佳的K」。而且,在当检测器迁移时的运行时间,最佳Kj值改变。
[0023]利用给定的到来的事件^的流,克服前述问题的关键想法是通过将事件的发生时间戳ts与其到达时间戳ats进行比较来执行这些运行时间测量。也就是说,本发明的实施方式基于以下假设:可通过在将事件转发或中继至后续的事件检测器之前适当地延迟事件来实现通过不同的网络路径到达事件检测器(由此,经历不同的处理和/或传播延迟δ (.))的事件的原始时间次序的恢复。将事件中继至后续(下游)事件检测器的时间可基于对应事件的初始时间戳以及后续事件检测器所需的所有输入事件的处理和/或传播延迟,以确定其输出事件。
[0024]为了确保最小的所需公共延迟值(即,可使得能够快速地中继(至少)两个事件),可基于(对应事件的)第一和第二事件定时值并基于第一和第二事件的最大延迟来确定将第一和第二输入事件中继至它们的关联的下游事件检测器的输出时间。因此,事件的延迟δ (.)可由于若干原因。例如,可以由于不同的网络路径上的不同的不稳定状态或由于不同的处理时长和/或不同的网络延迟而造成事件在分布式计算系统内的延迟。换句话说,在输入延迟补偿时第一和第二事件的接收次序可由于不同的不稳定状态、不同的处理时长和/或不同的网络延迟而与第一和第二事件的初始发生次序不同。
[0025]可基于排序单元的第一和第二事件的接收/到达时间和基于反映事件发生的它们各自关联的事件定时值来测量或确定第一和第二事件各自的事件延迟。当用S (.)指代事件eji = I, 2,…)从其发生或检测时间tevent,ei(i = I, 2,…)至延迟补偿的输入的传播或信号延迟时,排序单元可被操作,以基于下式来确定将第一和第二事件中继至后续事件检测器的输出时间实例= I, 2,…):
[0026]tout’el’e2 = tevent’el’e2+max( δ (θι), δ (?))。
[0027]其中maX(.)指最大操作符。也就是说,排序单元可被操作,以确定从与第一和第二事件关联的事件延迟的组中获得的最大延迟值。当然,假使出现多于两个事件被排序单元中继的情况,排序单元可通过从与多于两个事件相关联的事件延迟组中获得最大的延迟值来确定公共延迟值。
[0028]由于分布式系统中的多种影响,K = max ( δ (e^ , δ (e2))的值可变化。另外,当elk在事件检测器中意外地变化时,会导致对K的错误猜测,由此导致错误的检测器输出。
[0029]由于通常事件延迟保持稳定,因此前述第一问题(即Kj的突然增大)是罕见的。如果发生这种情况,则我们不能保证总体正确的排序。但是可提供用于延迟的概率性安全界限来缓解这个问题。与此相反,我们可总是避免第二问题(即,elk意外的变化)。本发明可依赖的想法实施方式是在任何到来的事件上不再将时钟设为迄今已知的最大时间戳,而是仅使用指定类型的事件来设置elk。
[0030]如果我们仅在特定类型的到来的事件上设置网络节点的时钟,则可避免Clk意外的变化。虽然以上无序事件的定义已识别了迟到的事件,但是我们现在使用elk值来推迟过早到达的事件。在elk的任何两个更新之间,未推迟的事件根据它们的时间戳来排序。更正式地说,如前那样考虑事件流e1、e2、…、en。假设仅通过类型ID的事件来设置elk。如果不存在e1、ek(其中,e^ = ek.1d = ID),则事件e」是无序事件,从而e" ts ( e」.ts ( ek.ts。可通过δ (e」)=ek.ts-ej.ts给定ei的事件延迟。
[0031]其余的问题是拾取哪种事件类型来设置elk。拾取的事件类型的发生频率越高,越少的事件需要推迟,所得的K值越小,并且测量到的延迟越好。如果存在事件类型的选择,则更稳定和固定的延迟的事件类型是优选的,这是因为其更好地反映了实际时间。如果特定类型的事件的到达时间变化,则elk不能平稳地工作。为了增大时钟更新频率,可使用一组事件类型来设置时钟而非仅使用一个事件类型,前提是这些事件类型具有相同的绝对延迟,例如它们是来自相同源的传感器事件。具有精确的时间戳的高数据速率传感器事件是极好的备选。[0032]采用传感器事件(即,原始传感器数据)作为稳定的时钟更新事件使我们确定了 K的合适值。但是K突然增大的第一问题仍然存在。如果K太小,则我们错过事件或无序地处理它们,并且增大K以适合未来的事件延迟。通过增加的安全界限(即,稍微更大的K),可避免这种检测错误。可以用延迟的预期的变化来拟合K,而不在发生错误之后固定K。记住,K被定义为事件检测器的所有预订的事件的最大延迟。更确切地评价特定事件的延迟导致了更安全的K值。为了更好地猜测对事件^的期望的延迟,可使用ei的所有近期的延迟测量并且确定它们的标准偏差。所猜测的延迟是^的最大延迟加上标准偏差和比例因数λ的乘积。λ可以由系统设计师限定,并且对K将变得足够大的可能性产生影响。利用这种K值,即使事件延迟不稳定,我们也可对输入事件流进行排序。
[0033]然而,如果针对特定的事件检测器,K值增大,则该事实对于检测器分级结构上进一步的预订事件检测器来说仍然未知。当实际产生预订的事件时,更高层次的检测器将仅注意改变的和可能太大的延迟。更高层次的K会太小从而无法避免K的错误检测和更新。但更高层次的检测器可仅在更早通知的情况下在足够早的时间修改其K。由此,无论K何时改变,都可通知用户以使得他们可根据需要来修改他们的K值。因此,可立即发送具有合适的时间戳的伪事件。接收者可仅针对构造目的使用这种伪事件。
[0034]现在,我们具有足够好的K和稳定的时钟elk 二者。然而,这还不能产生分类或排序的事件流。我们需要在无序流上工作的事件排序单元,以将分类的输入提供至后续检测器。这种排序单元可实现为黑盒子,并可仅安装在初始事件流与事件检测器的输入之间,从而不需要修改事件检测器本身。排序单元的输出流是具有最小延迟的事件的分类序列。无论输入事件何时被接收(忽略伪事件),都根据其发生时间戳将其分类至排序单元的缓冲器中。如果无序事件是罕见的,则插入新事件的分类通常仅是对缓冲器头部的简单和快速的推送。当elk被更新并且针对在缓冲器中的某些尾事件ei保持ey ts+K ( elk时,这些ei可发送至排序单元的输出流,并且可处理下一输入事件。
[0035]注意,通常每台机器或网络节点具有不止一个事件检测器,每个事件检测器可具有专用的排序单元,其具有仅从主事件流中拾取其预订的事件的合适的和检测器专用的K。[0036]在分布式事件处理中,可以有必要在运行时间将事件检测器从一个机器移动至另一个机器。这可以由许多原因导致,例如,机器可能需要维护或由于系统故障而关闭,或者机器会超负荷或甚至过度疲劳,并且不能足够快速地执行它们的事件处理工作。这些改变可以是分析的环境中的动态的结果,例如突然的股票贸易。
[0037]主要在虚拟机(VM)的领域中实现处理或对象的运行时间迁移的相关工作。例如,在R.BradforcUE.Kotsovinos、A.Feldmann和H.Schi5bcrg 的“Live wide-area migrationof virtual machines including local persistent state,,(Proc.3rd Intl.Conf.Virtual Execution Environments, (San Diego, CA),第 169 - 179 页,2007 年)中解决了本地持久VM状态的转移。在迁移之后,将网络连接再导向至新主机,并且转发来自旧连接的命令。随着所有旧连接消失,旧VM被关闭。然而,两个机器不仅必须在转发命令的同时并行运行,而且忽略通过网络接收的命令的次序。
[0038]在H.Liu、H.Jin、X.Liao、L.Hu 和 C.Yu 的“Live migration of virtual machinebased on full system trace and replay,,(Proc.18th ACM Intl.Symp.High PerformanceDistributed Computing, (Garching, Germany), % 101 - 110 页,2009)中的 CR/TR-Motion使用检验点/恢复和跟踪/重播技术来实现VM的快速迁移。来自源VM的检验点在目的地恢复,并且重播所有来自源的跟踪,从而两个机器是一致的。停机时间明显短于先前的方法。然而,作者未考虑到来的命令的次序在新的主机处会不同。
[0039]在V.Medina 和 J.M.Garcia 在 “Live replication of virtualmachines,,(Proc.10th WSEAS Intl.Conf.Software Engineering, Parallel andDistributed Systems, (Stevens Point, WI),第 15 - 23 页,2011 年)中的方法与 CR/TR-Motion相似,但是其从最初就假设复制品。用户与一个VM相互作用,但是也将命令发送至复制品,以使得两个VM总是同步。当旧的机器停止工作时,客户端协议将命令发送至复制的VM,并展示复制品的响应。然而,命令从客户端被改变方向,这意味着在切换至复制品之后排序会不同。
[0040]没有一种方法明确考虑了到来的命令和/或数据的次序。这是因为命令的源(即,用户的工作站)通常是静态的,并且仍然按照正确的次序接收命令。然而,如果我们处理多用户VM,则如果两个用户尝试修改同一文件,则会发生问题。在初始VM,可首先接收用户A的命令,而在迁移的VM,用户B的命令将为第一。VM随后不同步。像CR/TR-Motion的方法将在这种不太可能的情况下重复恢复和重播处理。然而,针对事件检测,这种情况是非常可能的,并且迁移将永不结束。
[0041]由此,期望改进这种本领域的状态,以有效和安全地将对到来的无序事件进行操作的事件检测器从一个网络节点迁移至另一个网络节点。
【发明内容】
[0042]为了检测事件(诸如原始的和/或合成的事件),多种事件检测器可在分布式计算系统的不同节点上运行。这样的事件检测器可根据系统的条件和/或根据事件检测器的基础算法和/或待分析的传感器数据的计算复杂性在它们相应的关联的节点和/或整个分布式计算系统上导致不同负载。由此,在改变初始系统配置的前提或条件的情景下,可以发现事件检测器在各个网络节点上的初始分布关于计算负载平衡未达到最佳水平或可甚至导致分布式计算系统的崩溃。
[0043]可通过本发明的实施方式对抗这种不期望的负载不平衡。例如,如果至少一个事件延迟到达不允许的高值,则这可以是对源事件检测器(对应的事件从其到达目的地事件检测器)过负载或经历某些其它问题的指示。在这种情景下,会期望将恶意源事件检测器处理或对象转移或迁移至分布式计算系统的某些其它硬件资源。例如,恶意源事件检测器处理或对象可从其当前节点转移或迁移至分布式计算系统的具有更多可用的硬件资源的另一物理上分离的和不同的节点。
[0044]本发明的一个发现是,事件检测器从一个机器迁移至另一机器导致由受影响的事件检测器处理的事件的不同的事件延迟。当事件检测器从第一网络节点迁移至第二网络节点时,预订的事件的源节点保持不变,但是相关的事件延迟将很可能变化。除非针对所有涉及的事件的延迟缩小,否则因为迁移的事件检测器(或更高层上的任何事件检测器)不再以正确的次序看见预订的事件,所以幼稚(naive)事件检测器迁移很可能失败,这是因为在第一(旧)节点上良好工作的K值对于第二(新)节点和新得到的事件延迟来说太小。
[0045]由此,本发明的一个目的是确保针对迁移的事件检测器的按次序的输入事件。
[0046]本发明的一个发现是,协作性事件检测器切换分布式计算系统的新节点不仅从它们的起源或源节点预订必要的输入事件,而且旧节点也将这些事件转发至新节点。新节点可通过将来自沿着两条路径(即,转发的路径(经旧节点从源节点)和直接路径(直接从源节点))到达新节点的事件的延迟信息相结合得到正确的事件次序。
[0047]根据第一方面,提供了一种将事件检测器(处理或对象)从分布式计算系统的第一节点(即,旧节点)迁移至分布式计算系统的第二节点(即,新节点)的方法。事件检测器处理多个输入事件以基于输入事件产生至少一个输出事件。每个输入事件与事件延迟相关联,所述事件延迟对应于相应的输入事件至第一节点的传播时间或延迟,其中,传播时间可看作是事件发生时间与在第一节点的相应事件的后续事件接收或到达时间之间的差。所述方法包括:将关于与在所述第一节点的所述多个输入事件相对应的事件延迟的信息从所述第一节点转移至所述第二节点的步骤;将事件检测器的(处理或对象)内容从第一节点转移至第二节点以在第二节点获得迁移的事件检测器的步骤;将多个输入事件从第一节点转发至第二节点的步骤;在第二节点接收从第一节点以及从与多个输入事件关联的起源事件检测器并行地转发的多个输入事件的步骤;基于关于事件延迟的转移的信息并基于从关联的事件检测器接收的多个输入事件的事件延迟在第二节点(排序)处理多个接收的输入事件的步骤。
[0048]根据另一方面,还提供了一种将事件检测器从分布式计算系统的第一节点迁移至分布式计算系统的第二节点的分布式计算系统。分布式计算系统包括第一节点,其具有:用于将关于与在第一节点的多个输入事件的事件延迟相关的信息从第一节点转移至第二节点的装置;用于将事件检测器的内容从第一节点转移至第二节点以在第二节点获得迁移的事件检测器的装置;以及用于将多个输入事件从第一节点转发至第二节点的装置。分布式计算系统还包括第二节点,其具有:用于在第二节点接收从第一节点并且从与多个输入事件关联的起源事件检测器并行地转发的多个输入事件的装置;用于基于与事件延迟相关的转移的信息并基于从关联的事件检测器接收的多个输入事件的事件延迟在第二节点处理多个接收的输入事件的装置。[0049]由此,实施方式还提供分布式计算系统的第一和/或第二节点。
[0050]因此,还提供了用于将事件检测器从第一节点迁移至分布式计算系统的第二节点的第一方法(针对第一节点)。所述方法包括:将关于与在第一节点的多个输入事件相对应的事件延迟的信息从第一节点转移至第二节点的步骤;将事件检测器的内容或状态从第一节点转移至第二节点以在第二节点获得迁移的事件检测器的步骤;以及将多个输入事件从第一节点转发至第二节点的步骤。
[0051]还提供了用于将事件检测器从第一节点迁移至分布式计算系统的第二节点的(第二节点的)第二方法,包括:在第二节点接收从第一节点和从与多个输入事件关联的起源事件检测器并行地转发的多个输入事件的步骤;和基于关于事件延迟的转移的信息并基于从关联的事件检测器接收的多个输入事件的事件延迟在第二节点处理多个接收的输入事件的步骤。
[0052]某些实施方式包括安装在节点或设备中的数字控制电路。例如数字信号处理器(DSP)或专用集成电路(ASIC)这样的数字控制电路需要相应地编程。由此,另一实施方式还提供了一种计算机程序,其具有用于当在计算机或数字处理器上执行计算机程序时执行所述方法的实施方式的程序代码。
[0053]根据实施方式,事件检测器应被理解为是在分布式系统的节点上执行的计算机程序的实例。事件检测器包括计算机程序的程序代码及其当前活动性。分布式系统可以是例如分布式计算机网络或多核处理器。以计算机网络为例,节点(即网络节点)可包括通过例如以太网或某些其它形式的网络技术与其它网络节点通信的计算机装置或其处理单元(例如CPU)。也就是说,根据本发明的另一方面,还提供了一种分布式计算系统,其用于基于至少一个(原始)传感器数据流来确定事件。所提供的分布式计算系统(可以是计算机网络)包括多个分布式节点,每个节点具有与其关联的事件检测器,并且提供了在分布式计算系统的分布式节点之间迁移事件检测器的设备的至少一个实施方式。
[0054]事件检测器处理转移或迁移程序可例如在控制分布式计算系统的操作系统(OS)的帮助下执行。因此,OS应被理解为管理分布式系统的计算机硬件资源以及针对应用软件(例如像事件检测器处理或对象)提供公共服务的一组程序。这种OS服务还可包括初始化功能,即生成用于迁移的设备可访问的处理和/或对象实例的功能。也就是说,用于迁移的设备或迁移设备可包括用于控制分布式系统的操作系统的访问处理和/或对象实例化功能的装置。
[0055]在某些实施方式中,分布式计算系统可与用于定位和/或跟踪在预定地理区域内的对象的定位系统结合,其中定位系统为分布式计算系统提供了至少一个传感器数据流,传感器数据流带有指示本地对象的地理方位的数据。定位系统可基于无线传感器网络,其已在本说明书的介绍部分中进行了描述。
[0056]一种事件检测器可包括状态机,其可被理解为是用于设计事件检测器处理的基础的计算机程序的行为模型。状态机包括:与转变关联的(有限)数量的状态,其中转变是始于一状态并结束于另一(或相同)状态的一组行为。转变始于触发器,其中,所述触发器可以是例如原始或合成事件或事件检测器的原始传感器数据输入。由此,根据本发明的多个方面,事件检测器可包括状态机和事件检测器处理的内容,或者存储器可将所述状态机的当前状态反映为例如单独的变量或变量阵列。针对事件检测器处理,所述状态机可为基于软件的状态机,例如统一建模语言(UML)状态机。
[0057]在根据本发明实施方式的分布式计算系统的自组织中可看出实施方式的一个益处。这种分布式计算系统可通过在网络节点之间转移事件检测器来影响系统条件的改变,以使得分布式系统或网络总是能够执行稳健和有效的事件信号处理。
[0058]通常,如果CPU过载或缓冲器溢出触发了迁移,则不可能并行地运行旧的和新的事件检测器。而且,将完整的数据流从旧节点转发至新节点是不允许的,因为这会导致在特定事件不常发生的情况下的长时间的高网络负载和处理开销。实施方式提出了允许在运行时间迁移事件检测器并根据新节点的时间延迟来初始化K值的概念。所引入的延迟是可忽略的,并且旧的和新的检测器实例二者以及更高层次的检测器在任何时间都能看见按次序的事件。一旦状态已被复制,旧的事件检测器就可停止,并且网络开销保持最小。
【专利附图】
【附图说明】
[0059]以下将仅通过举例的方式并且参照附图来描述设备和/或方法的某些实施方式,图中:
[0060]图1示意性地示出了根据实施方式的用于将在第一节点上运行的事件检测器迁移至分布式计算系统的第二节点的方法的流程图;
[0061]图2a、图2b示出了在事件检测器迁移之前和之后的示例性设置;
[0062]图3示出了根据实施方式的事件检测器迁移的消息时序图;
[0063]图4示出了在事件检测器迁移之前、迁移中和迁移之后的事件延迟;以及
[0064]图5示出了根据实施方式的用于延迟修改和回波消除的计算机程序的示例性伪码。
【具体实施方式】
[0065]现在将参照示出了某些示例性实施方式的附图更彻底地描述多个示例性实施方式。在附图中,为了清楚起见可夸大层和/或区的厚度。
[0066]因此,虽然示例性实施方式能够具有各种修改形式和替代形式,但是仅通过附图中的示例示出其实施方式,并且将在本文详细描述。然而,应该理解,并不意图将示例性实施方式限于公开的具体形式,而是相反,示例性实施方式覆盖落入本发明的范围内的所有的修改、等同物和替代形式。在附图的整个描述中,相同的标号指代相似的元件。
[0067]应该理解,当一个元件被称作“连接至”或“耦接至”另一元件时,其可直接连接或耦接至另一元件,或者可存在中间元件。相对而言,当一个元件被称作“直接连接至”或“直接耦接至”另一元件时,不存在中间元件。用于描述元件直接的关系的其它词语应该按照相似的形式解释(例如,“位于……之间”与“直接位于……之间”、“相邻”与“直接相邻”等)。
[0068]本文所用术语仅是为了描述【具体实施方式】的目的,而非旨在限制示例性实施方式。如本文所述,除非上下文中另外地清楚指明,否则单数形式也旨在包括复数形式。还应该理解,术语“包括”和/或“包含”当用于本文中时,指明存在所列特征、整数、步骤、操作、元件和/或组件,但也不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或它们的组。
[0069]除非另外限定 ,否则本文所用的所有术语(包括技术和科学术语)具有与示例性实施方式所属领域普通技术人员通常理解的含义相同的含义。还应该理解,例如在通用词典中定义的那些术语应该被解释为具有与它们在相关技术的上下文中的含义一致的含义,并且将不按照理想化或过于正式的方式解释它们,除非本文中这样限定。
[0070]图1示意性地示出了根据本发明的实施方式的用于将最初在第一(旧)节点或机器上运行的事件检测器无缝地迁移或转移至分布式计算系统的第二(新)节点或机器的方法100的流程图。
[0071]迁移方法100包括两个子方法110和120。根据某些实施方式,子方法110的步骤可与第一网络节点关联,其中第二子方法120的步骤可与第二网络节点关联。然而,这并不意味着子方法110和120仅分别通过第一和第二网络节点执行。相反,方法110可例如部分地在第二网络节点上执行。如先前的解释,分布式计算系统的第一和第二节点例如可以是分离的CPU。例如,这种分离的CPU可布置在物理上不同的计算装置中,或可对应于多核CPU的不同的独立处理核。
[0072]将要从第一节点迁移至第二节点的事件检测器实例处理多个预订的输入事件,以基于预订的输入事件产生至少一个合成输出事件。也就是说,输入事件的事件层级低于所产生的合成输出事件。每个预订的输入事件与单独的事件延迟δ (.)关联,单独的事件延迟δ (.)对应于第一节点的各事件的事件发生或检测时间(ts或dts)与后续的事件接收或到达时间(ats)之间的时间差。
[0073]方法100或110包括将指示与在第一网络节点的多个预订的输入事件相对应的单独的事件延迟(或其最大延迟)的信息从第一节点转移至第二节点的步骤112。方法100或110还包括步骤114:将事件检测器的内容和/或状态从第一节点转移至第二节点以在第二节点获得迁移的事件检测器。如先前的解释,事件检测器可包括有限状态机,其包括有限数量的状态和在所述状态之间的特定转变。也就是说,要迁移的事件检测器的内容可将处理器状态机的当前状态反映为例如单独的变量或变量的阵列。
[0074]此外,方法100或110包括将多个输入事件从第一节点转发至第二节点的步骤116。本领域技术人员应该清楚的是,步骤112、114和116可通过第一节点本身执行。由此,步骤112至116—起形成可通过第一网络节点或中央控制器装置执行的方法110,其可控制计算交互和/或各个网络节点之间的通信。
[0075]迁移方法100或子方法120还包括步骤122:在第二网络节点接收从第一节点以及从与多个输入事件关联的起源事件检测器并行地转发的多个输入事件。也就是说,在步骤122中,在第二节点通过两条路径接收多个输入事件的每个。第一路径是从各输入事件的我们的源事件检测器的起源经第一网络节点到达第二网络节点的迂回路径。第二路径是从输入事件的起源事件检测器“直接”到达第二节点的直接路径。这里,“直接”意指通过分布式计算网络而不通过第一节点进行迂回。步骤122之后是步骤124,即在第二节点对多个接收的输入事件的排序处理,所述排序处理基于与来自第一节点的单独的事件延迟(或其最大延迟)相关的转移的信息以及基于从相关的起源(源)事件检测器直接接收的多个输入事件的新的单独的事件延迟。也就是说,步骤124还包括通过将来自沿着迂回或绕行的路径到达的事件的延迟信息与来自沿着直接路径到达第二节点的事件的延迟信息结合从而得出输入事件的正确的次序。
[0076]本领域技术人员应该清楚,步骤122和124 —起组成了可在分布式计算系统的第二网络节点执行的方法120。为了能够执行方法100、110和120的各个步骤,分布式计算系统和/或第一网络节点和/或第二网络节点可包括用于分别执行单独的步骤的对应的装置。因此,这种装置(例如,用于传送的装置、用于转发的装置、用于接收的装置或用于处理的装置)可包括可相应地编程的电子模拟或数字电路。例如,分布式计算系统可包括用作单独的网络节点的多个CPU。对应地,第一和/或第二网络节点可以是分布式计算系统的单独的、分离的CPU。根据某些实施方式,分布式计算系统可耦接至(无线)传感器网络,尤其是已在介绍部分中描述的定位网络。就定位传感器网络而言,后者可将包括方位数据以及运动学数据的原始传感器数据或原始事件传送至分布式计算系统。原始传感器数据可被视为分布式计算系统中的最低水平的事件数据。其还可用于传送时钟信号elk。基于最低水平的原始传感器数据,可检测所谓的原始事件作为第一级别事件。也就是说,原始事件仅基于原始(位置)传感器数据。随后从原始事件中得出所有更高层次的事件,其具有以下优点:在分布式计算系统中可避免原始传感器数据的极高的数据速率。这样可以进行诸如高度受欢迎的体育赛事(诸如足球)的事件检测所需的实时事件检测和处理。也就是说,在【具体实施方式】中,分布式计算系统可用于在体育游戏(诸如足球、橄榄球或美式足球)中检测事件。
[0077]现在将参照图2至图5进一步详细描述本发明的实施方式。
[0078]考虑图2a中描绘的分布式计算系统200的网络拓扑。示例性分布式计算系统200包括路由器210和220。每个路由器210、200与分布式计算系统200的多个网络节点关联。例如,路由器210与第一网络节点N1和第二网络节点N2关联。第二路由器220与分布式计算系统200的第三网络节点N3以及第四网络节点N4关联。路由器210和220通过链路230 (例如,以太网链路)互相连接,以使得所有网络节点N1至N4彼此互相连接。
[0079]图2a示例性地示出了在事件检测器从节点N1迁移至节点N2之前的网络情况。在其迁移之前,示例性事件检测器在节点N1上运行并预订三个输入事件A (由节点N3发布或发射)、B (由节点N2发布)和C (由节点N4发布)。将要从节点N1迁移至N2的事件检测器基于预订的输入事件A、B和C产生合成事件D,其再次被网络节点N3预订。换句话说,输入事件A通过在节点N3上运行的起源或源事件检测器被提供至在第一网络N1上运行的事件检测器(见标号242)。第二输入事件B通过第二网络节点N2被提供至节点N1的事件检测器(见标号244)。第三输入事件C通过网络节点N4被提供至在网络节点N1上运行的事件检测器(见标号246)。在第一网络节点N1上运行的事件检测器是针对合成事件D的起源或源事件检测器,所述合成事件D最初从网络节点N1提供至在网络节点N3上运行的更高层次的事件检测器(见标号248)。
[0080]现在转到图2b,示出了通过使用方法100将用于合成事件D的事件检测器从第一网络节点N1迁移或转移至第二网络节点N2之后的情景。当该事件检测器从N1迁移至N2时,预订的输入事件A、B和C的源节点(即N3、N2, N4)保持不变,但是它们相关的事件延迟非常肯定地会变化。示例性地,在新节点N2的输入事件B的延迟δ (B)可由于迁移而缩小,因为在迁移之后输入事件B现在是第二网络节点N2上的本地事件。其它预订的输入事件A和C的延迟可以缩小或不缩小。注意,即使节点N3的用户不参与到迁移中,网络节点N3的合成事件D的延迟也会变化。
[0081]除非事件延迟δ (.)针对所有涉及的事件缩小,否则天真的迁移(naivemigration)可能失败,这是因为在节点N2上的迁移的事件检测器或更高层上的任何事件检测器由于在旧节点(N1)上工作良好的K值在迁移之后对于新节点(N2)和新的事件延迟δ , (.)会太小而不再按照正确的(时间)次序看见预订的事件Α、B和C。
[0082]本发明的实施方式致力于通过测量和修改事件延迟来确保用于迁移的事件检测器的排序的输入事件。通常,如果CPU过载或缓冲器溢出已触发了迁移,则无法并行地运行旧的和新的事件检测器二者。而且,禁止从旧节点将完整的数据流转发至新节点,这是因为如果稀疏地发生具体的事件,则这会导致长时间的高网络负载和处理开销。
[0083]本发明的实施方式可根据在新节点的旧的事件延迟在运行时间迁移或转移事件检测器并初始化K值。引入的延迟时间是可忽略的,旧的和新的事件检测器实例二者以及更高层次的事件检测器可在任何时间看见有次序的事件。旧的事件检测器在其内容或状态信息已复制/转移至新网络节点时可停止,并且网络开销可保持最小。
[0084]在本发明的实施方式之后的想法是:事件检测器从一节点至另一新网络节点的协作性迁移或切换不仅从它们的起源或源事件检测器预订必要的输入事件,而且旧节点还将这些输入事件转发至新节点。这样,新的计算节点可通过将沿着两条不同路径(通过旧节点的迂回路径和来自输入事件源的直接路径)到达的来自输入事件的事件延迟信息进行结合来得到正确的时间次序(或K值)。
[0085]图3示出了根据实施方式的示例性事件检测器迁移处理的消息时序图(MSC) 300。
[0086]从消息时序图300中可看出,网络节点N2可首先预订(见标号302)仍然在(旧)第一节点(N1)上执行的事件检测器处理或对象的输入事件Α、B和C。这里,输入事件Α、B和C的预订302发生于时刻可例如响应于从在网络节点N2处的中央网络控制器接收的迁移指令而发生预订302。所述中央控制器实体可具有与多数或全部在分布式系统中沿着不同路线行进的事件信号的延迟相关的信息。因此,可例如由于不同的网络路径或路线的不同的不稳定性、不同的处理能力和/或不同的信号传播时间而导致事件的延迟。另选地或附加地,中央控制器可具有与指示整体系统负载的单独的节点和/或信息的多数或所有负载情况(例如,CPU负载)相关的信息。由此,根据某些实施方式,用于迁移的设备可具有整体系统参数知识。根据其它实施方式,用于迁移的设备也可以是非中心的,即分布于多个网络节点之上。在这种情况下,网络节点可仅具有指示其自身负载或事件延迟情况的有限的信息。由此,在某些实施方式中,整体系统参数知识会是不可用的。
[0087]MSC300还假设在新网络节点N2上已经生成(实例化)了事件检测器实例。也就是说,用于迁移的设备还可包括用于生成处理或对象实例的装置,其对应于第二节点上的第一事件检测器,以获得第二事件检测器。实例应被理解为无论是否当前执行的对象的出现或复制。类或对象的实例共享同一组属性,但是这些属性含有的内容通常不同。
[0088]另外,在时刻h或所述时间h之后不久,第二网络节点N2可将切换请求消息发送至第一网络节点N1 (见标号304)。响应于后一个切换请求消息,旧网络节点N1可开始将多个输入事件A、B和C从第一节点N1转发至第二节点N2 (见标号316)。此外,第一节点N1可用两个消息响应于步骤304的切换请求消息。从旧节点N1转移至新节点N2的第一消息可针对每个预订的输入事件A、B和C保持当前延迟信息(见步骤312)。也就是说,在步骤312中,关于与多个输入事件A、B和C相对应的单独的事件延迟的信息从第一节点N1转移至第二节点N2。例如,节点N1可接收具有事件延迟(延迟δ (A) = 30ms、δ⑶=IOms和δ (C) = 20ms)的输入事件,以使得K = max ( δ (A), δ (B), δ (C)) = 30ms。因此,延迟δ (.)可已经包括对应的安全界限。由此,根据某些实施方式,单独的延迟值δ (Α)、δ (B)、δ (C)和/或所得K值(K = max ( δ (A),δ⑶,δ (C)))可通过消息312从节点N1传送至节点N2。延迟信息包或消息312也可保持当前的时间戳ts以使得第二节点N2可确定df =elk - ts (也就是说,将事件从节点NI转发至节点N2的子延迟df)。针对当前示例,使df为5ms。换句话说,将输入事件A、B和C的事件延迟信息从第一节点N1转移至第二节点N2可包括将转移时间戳ts (指示发送所述信息的时刻)从第一节点N1转移至第二节点N2。另夕卜,转移事件延迟信息可包括:在第二节点N2确定从第一节点N1至第二节点N2的公共转移延迟,其中,公共转移延迟df指示转移时间戳与在第二节点N2的关于事件延迟的信息的接收或到达时间之间的时间差。在掌握了消息312的延迟信息的情况下,第二节点N2可基于转移的事件延迟信息(S (Α), δ (B)、δ (C)和/或K)和公共转移延迟来最初处理多个接收至IJ的输入事件A、B和C。
[0089]在步骤314中可从旧节点N1转移至新节点N2的前述第二消息或分组包括事件检测器的快照(snapshot)(即,当前状态的复制)。换句话说,在步骤314中,事件检测器的内容可从第一节点N1转移至第二节点N2的事件检测器实例,以在第二节点N2获得迁移的事件检测器。
[0090]例如,操作系统服务可包括转移装置为了转移内容可访问的复制或转移功能。也就是说,转移装置可包括用于对在计算节点或分布式系统的某些其它控制实体上运行的操作系统的处理或对象复制功能进行使用的装置。转移装置还可操作以在预定时刻“冻结”第一事件检测器的内容,以在冻结时刻获得第一事件检测器的限定条件。换句话说,将事件检测器的内容从第一节点N1转移至第二节点N2可包括冻结第一节点N1的事件检测器的当前状态和将冻结状态复制至第二节点N2的事件检测器的实例。因此,“冻结”意指事件检测器在冻结时刻进入确定的状态并停止对其输入作出响应。换句话说,第一事件检测器可在冻结时刻暂停以将其内容或状态条件复制至实例化的第二事件检测器。
[0091]由此,转移所述内容314可包括将冻结的内容/状态从第一事件检测器复制至第二事件检测器,以在节点N2的第二事件检测器获得相同的确定的状态或限定的条件。
[0092]在新的实例化的(即,第二)事件检测器在第二节点N2开始或开启之前,可缓存两个事件检测器的(相同的)输入事件,以使得两个事件检测器由于复制而理想地已经具有相同的限定的内部条件,还获得始于预定的时刻的相同的输入数据,即“冻结”时刻。由于时钟会在两个节点之间变化,因此节点N1应该确保第二节点N2可缓存所有事件,以使得其可恢复起源于转移的快照的正确的状态。例如,如果节点N1从时刻t0开始未处理输入事件,则其当前状态可用于该快照,并且tsnap = t0。否则可将tsnap设为节点NI的最后处理的输入事件的发生时间戳。在步骤314中发送快照之后,随着新节点N2可现在接手并开始运行由标号315指示的初始事件检测器的复制,第一网络节点N1可终止事件检测器。在关闭了旧节点N1的偶数检测器并开始了新节点N2的事件检测器的实例化之后,旧节点N1可继续将输入事件A、B和C(见标号316)转发至新节点N2,直至后者完成了事件延迟修改程序320,这将在后面进行描述。
[0093]例如,在时刻t0 = elk = 100,第二 (即,新)网络节点N2将切换请求消息304发送至旧网络节点K。随着旧网络节点N1继续处理预订的输入事件A、B和C,其可已经忙于具有时间戳180的输入事件。当来自节点N2的切换请求消息到达时,旧网络节点NI可获取初始事件检测器的快照,将tsnap设为180 (对应于最后处理的输入事件的时间戳),将快照消息314发送至新网络节点N2并终止在网络节点N1的初始事件检测器。新网络节点N2可设置新事件检测器实例的状态,并仅处理时间戳高于tsnap( S卩,180)的任何缓存的输入事件A、B和C。也就是说,将输入事件A、B和C从旧网络节点N1转发至新网络节点N2包括在新节点N2缓存从切换请求消息304的时间h开始至快照时间tsnap的所有转发的和/或接收的输入事件A、B和C。当在新节点N2的迁移的事件检测器开始运行时,其可处理时间戳(即,发生时间)高于快照时间tsnap的缓存的事件。换句话说,接收从第一节点NI转发的多个输入事件A、B和C可包括:当事件检测器的冻结的内容/状态从第一节点N1转移至第二节点N2时在新节点N2缓存所有转发的输入事件A、B和C,直至快照时间tsnap,并且其中在第二节点N2处理多个接收的输入事件A、B和C包括:对事件时间戳或发生时间超过快照时间tsnap的缓存的事件进行处理。
[0094]在下文中,将更加详细地描述步骤320的事件延迟信息(δ (A)、δ (B)、δ (C)和K)的修改。在步骤320中,来自旧节点N1的转移的事件延迟δ (A)、δ⑶、δ (C)和/或所得K值可以被依次修改或更新。此外,在第二节点N2通过迂回路径从旧节点N1接收的预订的输入事件的回波(echo)被消除。利用实施方式,可以正确地将运行的事件检测器从第一网络节点N1移动至第二网络节点N2。然而,在新网络节点N2,由于预订的事件的延迟可由于迁移和导致的直接接收而改变,因此预订的输入事件A、B和C的事件延迟和因此得到的合适的K值会不同。作为在第二节点N2从头开始计算用于合成事件D的缓冲器大小K’D的替代,可通过延迟信息消息312根据从旧节点N1接收的事件延迟信息而初始化所述缓冲器大小K’ D。也就是说,在新节点的最大延迟或缓冲器大小K’ D可根据下式确定:
[0095]K,D = KD+df
[0096]= max ( δ (A) +df,δ ⑶ +df,δ (C) +df)
[0097]= max (30+5,10+5,20+5) = 35ms,
[0098]其中,Kd指在旧节点N1的合成事件D的缓冲器大小。
[0099]也就是说,在第二节点N2处理多个接收的输入事件A、B和C的步骤124可包括:基于各个事件发生或检测时间和多个输入事件A、B和C的最大事件延迟K’ D,确定用于将接收的输入事件中继至迁移的事件检测器的输出时间t-。
[0100]如图4所示,新网络节点N2两次接收所有输入事件(A、B和C)。通常,输入事件e以延迟δ’ (e)到达在直接路径402上的新节点N2,并且其还通过旧网络节点N1到达迂回路径404上的新节点N2。因此,直接路径402从起源或源节点N3通过分布式网络406直接到达目的地节点N2,而迂回路径从源节点N3通过网络406到达旧节点N1并从此处到达新节点N2。只要新节点N2沿着直接路线402接收到输入事件e,其就可通过利用δ’ (e)而非δ (e)+df更新其缓冲器大小K。也就是说,处理步骤124还包括基于通过直接路径402从关联的事件检测器接收的多个输入事件的单独的事件延迟来更新关于单独的事件延迟的信息。也就是说,只要在第二节点通过直接路径402从与输入事件e关联的源事件检测器N3接收到所述输入事件,就可更新关于与在第一节点的输入事件相对应的单独的事件延迟的信息,从而对应的旧的事件延迟S (e)+df被替换为在起源事件检测器N3的事件的发生或检测时间与在第二节点N2的对应事件e的事件接收或到达时间之间的差。[0101]例如,针对第一直接接收的事件A的新(直接)延迟δ ’(A) = 25ms可将所需的缓冲器大小Kd从35ms减小至max (25,15,25) = 25ms。可从第二节点N2宣布更新的K值以预订更高或更上层的事件层级的事件检测器。也就是说,以防更新转移的事件延迟信息导致多个输入事件(例如A、B、C)的更新的最大事件延迟或缓存值(K值),可将所述更新的最大事件延迟或缓存值传达至利用第二节点N2的迁移的事件检测器的输出事件D作为输入事件的下游的或更高层的事件检测器。换句话说,这意味着可将更新的K值传达至已预订迁移的事件检测器的合成事件D的更高层的事件检测器。
[0102]在新节点两次接收输入事件可有利于初始化新缓冲器大小K的同时,回波的输入事件将形成迁移的事件检测器的问题。为了确保与迁移的事件检测器关联的事件排序单元仅看到输入事件一次,需要放弃回波的事件中之一。针对每个事件类型A、B、C,新节点队将第一次看见经直接路径402的事件及其经迂回路径404的回波二者。在该时刻之前,更低延迟的输入事件沿着排序单元通过,而放弃输入事件的稍后接收的版本。只要接收到直接事件版本(经直接路径402接收的事件的版本),就可通知旧节点N1该具体事件类型不再从旧节点N1转发至新节点N2。也就是说,只要第二节点N2经直接路径402从分布式计算系统406的起源事件检测器(例如N3)接收到对应输入事件e,就可操作第二节点N2以通知第一节点N1停止转发输入事件。可例如通过被接收的分组所包括的发送器信息来确定事件的发送器。
[0103]现在转到图5,其示出了根据本发明的实施方式的描述的延迟修改和回波消除的(简短的)伪码500。
[0104]示出的伪码500始于类型为EventList的对象echo的初始化(见标号502)。然后,在for循环504中,利用从第一节点转移的事件延迟加上公共转移延迟值df对迁移的事件检测器的事件延迟进行初始化。在步骤506中,根据max (delays)确定新的或迁移的事件检测器EDnew的K值。while循环508中的第一 if语句510检查接收的事件的ID是否属于预订的事件的数量。如果不是这种情况,则继续事件的接收直至接收到预订的输入事件e为止。如果已通过直接路径402接收到预订的输入事件e (见if循环512),则具有所述id的事件e的事件延迟被更新为值elk - e.ts (见标号514)。接着,在行516更新K值。如果更新的K值Kn不等于先前确定的K值K,将新的或迁移的事件检测器EDmw的K值更新为新的K值Kn。另外,将改变后的K值通知给更高层事件检测器(见if语句518)。另外,通知旧节点N1不必继续转发具有标识符id的事件(见行520)。在下一 if语句522,删除或擦除事件e的回波(只要其存在)。否则,添加回波(见标号524)并且将所接收的事件e推送至与新的或迁移的事件检测器实例EDnrat关联的排序单元。
[0105]根据本发明的实施方式的协作性切换或迁移概念可执行事件检测器从分布式计算系统的第一节点至第二节点的安全迁移,并可同时确保针对新的事件检测器的总的事件次序。事件检测器可被复制和立即关闭,因为迁移的事件检测器交互地校准其K值。本发明的实施方式甚至在大量无序事件的情况下也可实现对高数据速率传感器流的可靠的分布式事件处理。事件延迟可在运行时间测量和修改,并且只要必要地保证到来的事件流的总次序就可推迟事件。不需要事件延迟的先前知识。为了平衡负载和更好地利用可用的计算功率,事件检测器可在运行时间进行迁移的同时仍然保持定时约束有效。
[0106]本发明的实施方式在足球应用中在实时定位系统(RTLS)上工作良好。这种RTLS可例如针对球以每秒2000个采样点和针对球员和裁判以每秒200个采样点同时跟踪144个发送器。每个球员可配有四个发送器,每个发送器位于他的四肢之一上。来自发送器的原始传感器数据包括针对任何方向的毫米精度的绝对方位、速度、加速度和位置质量(QoL)。足球需要这些采样速率。利用针对球的每秒2000个采样点和高达150km/h的速度,两个接连的方位可距离2cm远。由于像传球、二过一、射门等这样的足球事件在几分之一秒内发生,因此事件处理和迁移应该确保及时地检测事件,使得事件检测器的层级可帮助例如播音员的人类观察者进行系统的实时输出。
[0107]说明书和附图仅示出了本发明的原理。因此,应该理解,本领域技术人员应该能够设计出多种布置方式,这些布置方式虽然未在本文中明确描述或示出,但是它们表现了本发明的原理并且将被包括在本发明的精神和范围内。此外,本文所述的所有示例原则上明显旨在用于教育目的,以帮助读者理解本发明的原理,并且发明人贡献的概念用于扩展本领域,并且应被理解为不限于这种特别详述的示例和条件。而且,本文中所有的说明描述了本发明的原理、方面、和实施方式,并且本发明的特定示例旨在涵盖本发明的等同物。
[0108]指示为“用于……的装置”(执行特定功能)的功能框应该被理解为分别包括修改、配置或可操作以执行特定功能的电路的功能框。由此,“用于……的装置”也可理解为“被修改、配置或可操作以……的装置”。由此,被修改以执行特定功能的装置不意味着这种装置必须执行所述功能(在给定时刻)。
[0109]包括任何功能框的附图中示出的各种元件的功能可通过使用专用硬件(例如处理器)以及能够与核实的软件关联地执行软件的硬件进行提供。当通过处理器提供时,功能可通过单个专用处理器、通过单个共享处理器或通过多个单独的处理器(它们的一些可共享)提供。而且,术语“处理器”或“控制器”的明确用法不应理解为专门指代能够执行软件的硬件,而是可暗含地包括(但不限于)数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、 现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储器。还可包括其他常规和/或定制的硬件。
[0110]本领域技术人员应该理解,本文的任何框图表示实现本发明的原理的解说性电路的方案图。相似地,应该理解,任何流程图、过程图、状态转移图、伪码等表示可基本上在计算机可读介质中表达并且通过计算机或处理器(无论这种计算机或处理器是否明确示出)执行的多种处理。
[0111]此外,权利要求并入详细说明书中,其中每项权利要求可将其本身表达为单独的实施方式。虽然每项实施方式可将其本身表达为单独的实施方式,但是应该注意的是,虽然从属权利要求可在权利要求书中引用一个或多个其它权利要求的组合,但是其它实施方式也可包括该从属权利要求与每个其它的从属权利要求的主题内容的组合。除非表示特定组合是不期望的,否则在本文中提出这种组合。此外,意图也将一项权利要求的特征包括在任何其它独立权利要求中,即使这种权利要求未直接从属于该独立权利要求。
[0112]还应该注意,本说明书中或者权利要求中公开的方法可通过具有用于执行这些方法的对应步骤的装置的装置实现。
[0113]此外,应该理解,在本说明书或权利要求书中公开的多个步骤或功能的公布可不应理解为限于特定次序。因此,除非所述步骤或功能因为技术原因是不可互换的,否则公开的多个步骤或功能将不限于特定次序。[0114]此外,在一些实施方式中,单个步骤可包括或可分为多个子步骤。除非明确说明不是这样,否则所述子步骤可被包括和成为公开的该单个步骤的一部分。
【权利要求】
1.一种用于将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至分布式计算系统的第二节点(N2)的方法(100 ;300),其中所述事件检测器处理多个输入事件(e ;A、B、C)以基于所述输入事件产生至少一个输出事件(D),其中每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述方法(100 ;300)包括: 将关于与在所述第一节点(N1)的所述多个输入事件(e ;A、B、C)相对应的事件延迟的信息从所述第一节点(N1)转移(112 ;312)至所述第二节点(N2); 将所述事件检测器的内容从所述第一节点(N1)转移(114 ;314)至所述第二节点(N2),以在所述第二节点获得迁移的事件检测器; 将所述多个输入事件(e ;A、B、C)从所述第一节点(N1)转发(116 ;316)至所述第二节点(N2); 在所述第二节点(N2)接收(122)从所述第一节点(N1)以及从与所述多个输入事件关联的起源事件检测器并行地转发的所述多个输入事件(e ;A、B、C);以及 基于关于所述事件延迟的所转移的信息以及基于从所述关联的起源事件检测器接收的所述多个输入事件(e ;A、B、C)的事件延迟,在所述第二节点(N2)处理(124 ;320)所述多个接收的输入事件(e ;A、B、C)。
2.根据权利要 求1所述的方法(100;300),其中,将关于所述输入事件的所述事件延迟的所述信息从所述第一节点(N1)转移(112 ;312)至所述第二节点(N2)包括:转移对所述信息已经从所述第一节点被发送至所述第二节点的时间进行指示的转移时间戳(ts)。
3.根据权利要求2所述的方法(100;300),其中,转移(112 ;312)关于所述事件延迟的所述信息包括:在所述第二节点(N2)确定从所述第一节点(N1)至所述第二节点(N2)的公共转移延迟(df),其中,所述公共转移延迟(df)指示转移时间戳(ts)与关于所述事件延迟的所述信息在所述第二节点(N2)的接收时间之间的时间差。
4.根据权利要求3所述的方法(100;300),其中,在所述迁移的事件检测器处理(124 ;320)所述多个接收的输入事件(e ;A、B、C)最初基于关于在所述第一节点(N1)的所述事件延迟和所述公共转移延迟(df)的信息。
5.根据前述权利要求之一所述的方法(100;300),其中,将所述事件检测器的内容从所述第一节点(N1)转移(114 ;314)至所述第二节点(N2)包括:冻结所述第一节点(N1)的所述事件检测器的当前状态并且将冻结状态复制至所述第二节点(N2)的所述事件检测器的实例。
6.根据前述权利要求之一所述的方法(100;300),其中,接收(122)从所述第一节点(N1)转发的所述多个输入事件(e ;A、B、C)包括:当所述事件检测器的内容从所述第一节点(N1)转移至所述第二节点(N2)时,在快照时间(tsnap)之前在所述新节点(N2)缓存所有转发的输入事件(e ;A、B、C),并且其中,在所述第二节点(N2)处理(124;320)所述多个接收的输入事件(e ;A、B、C)包括:处理事件发生时间超过所述快照时间(tsnap)的缓存的事件。
7.根据前述权利要求之一所述的方法(100;300),其中,只要在所述第二节点(N2)通过直接路径(402)从与所述输入事件(e ;A、B、C)关联的所述起源事件检测器(N3)接收到所述输入事件,就更新关于与在所述第一节点(N1)的输入事件(e ;A、B、C)相对应的事件延迟的所述信息,使得关于所述第一节点(N1)的所述对应的事件延迟被替代为关于去往所述第二节点(N2)的所述输入事件(e ;A、B、C)的直接路径(402)的事件延迟。
8.根据权利要求7所述的方法(100;300),其中,在所述第二节点(N2)处理(124 ;320)所述多个接收的输入事件(e ;A、B、C)包括:更新关于单独的事件延迟的所转移的信息,并且在所述更新导致所述多个输入事件(e ;A、B、C)的更新的最大事件延迟值(K)的情况下,将所述更新的最大事件延迟值(K)传达至以所述第二节点(N2)的所述迁移的事件检测器的输出为输入的事件检测器。
9.根据前述权利要求之一所述的方法(100;300),其中,只要所述第二节点(N2)经由直接路径(402)从所述分布式计算系统(200)的起源事件检测器接收到所述相应的输入事件,所述第二节点(N2)就通知所述第一节点(N1)停止转发输入事件。
10.根据前述权利要求之一所述的方法(100;300),其中,在所述第二节点(N2)处理(124 ;320)所述多个接收的输入事件(e ;A、B、C)包括:基于其事件发生时间和所述多个输入事件的最大事件延迟(K)来确定将所接收的输入事件中继至所述迁移的事件检测器的时间。
11.根据前述权利要求之一所述的方法(100;300),其中,事件是直接基于传感器数据的原始事件或基于原始事件(e ;A、B、C)的合成事件。
12.根据前述权利要求之一所述的方法(100;300),其中,最初在所述分布式计算系统(200)的分布式节点上检测到所述输入事件(e ;A、B、C),并且其中,所述输入事件基于地理定位系统的并行传感器数据流。
13.一种将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至所述分布式计算系统的第二节点(N2)的方法(110),其中,所述事件检测器处理多个输入事件(e ;A、B、C),以基于所述输入事件产生至少一个输出事件(D),其中,每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述方法(110)包括: 将关于与在所述第一节点(N1)的所述多个输入事件(e ;A、B、C)相对应的事件延迟的信息从所述第一节点(N1)转移(112 ;312)至所述第二节点(N2); 将所述事件检测器的内容从所述第一节点(N1)转移(114 ;314)至所述第二节点(N2),以在所述第二节点获得迁移的事件检测器;
14.将所述多个输入事件(e;A、B、C)从所述第一节点(N1)转发(116 ;316)至所述第二节点(N2)。
15.一种将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至所述分布式计算系统的第二节点(N2)的方法(120),其中,所述事件检测器处理多个输入事件(e ;A、B、C),以基于所述输入事件产生至少一个输出事件(D),其中,每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述方法(120)包括: 在所述第二节点(N2 )接收(122)从所述第一节点(N1)以及从与所述多个输入事件关联的起源事件检测器并行地转发的所述多个输入事件(e ;A、B、C);以及 基于关于所述事件延迟的所转移的信息并且基于从所述关联的起源事件检测器接收的所述多个输入事件(e ;A、B、C)的事件延迟,在所述第二节点(N2)处理(124 ;320)多个所接收的输入事件(e ;A、B、C)。
16.一种计算机程序,具有当在计算机或处理器上执行所述计算机程序时用于执行根据前述权利要求之一所述的方法的程序代码。
17.一种将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至所述分布式计算系统的第二节点(N2)的设备,其中,所述事件检测器处理多个输入事件(e ;A、B、C),以基于所述输入事件产生至少一个输出事件(D),其中,每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述设备包括: 用于将关于与在所述第一节点(N1)的所述多个输入事件(e ;A、B、C)相对应的事件延迟的信息从所述第一节点(N1)转移至所述第二节点(N2)的装置; 用于将所述事件检测器的内容从所述第一节点(N1)转移至所述第二节点(N2),以在所述第二节点获得迁移的事件检测器的装置; 用于将所述多个输入事件(e ;A、B、C)从所述第一节点(N1)转发至所述第二节点(N2)的装置。
18.一种将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至所述分布式计算系统的第二节点(N2)的设备,其中,所述事件检测器处理多个输入事件(e ;A、B、C),以基于所述输入事件产生至少一个输出事件(D),其中,每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述设备包括: 用于在所述第二节点(N2)接收从所述第一节点(N1)以及从与所述多个输入事件关联的起源事件检测器并行地 转发的所述多个输入事件(e ;A、B、C)的装置;以及 用于基于关于所述事件延迟的所转移的信息以及基于从所述关联的起源事件检测器接收的所述多个输入事件(e ;A、B、C)的事件延迟,在所述第二节点(N2)处理所述多个接收的输入事件(e ;A、B、C)的装置。
19.一种将分布式计算系统(200)的第一节点(N1)的事件检测器迁移至所述分布式计算系统的第二节点(N2)的分布式计算系统(200),其中,所述事件检测器处理多个输入事件(e ;A、B、C),以基于所述输入事件产生至少一个输出事件(D),其中,每个输入事件与单独的事件延迟关联,所述单独的事件延迟对应于所述输入事件至所述第一节点(N1)的传播时间,所述分布式计算系统(200)包括: 用于将关于与在所述第一节点(N1)的所述多个输入事件(e ;A、B、C)相对应的事件延迟的信息从所述第一节点(N1)转移至所述第二节点(N2)的装置; 用于将所述事件检测器的内容从所述第一节点(N1)转移至所述第二节点(N2),以在所述第二节点获得迁移的事件检测器的装置; 用于将所述多个输入事件(e ;A、B、C)从所述第一节点(N1)转发至所述第二节点(N2)的装置; 用于在所述第二节点(N2)接收从所述第一节点(N1)以及从与所述多个输入事件关联的起源事件检测器并行地转发的所述多个输入事件(e ;A、B、C)的装置;以及 用于基于关于所述事件延迟的所转移的信息以及基于从所述关联的起源事件检测器接收的所述多个输入事件(e ;A、B、C)的事件延迟,在所述第二节点(N2)处理所述多个接收的输入事件(e ;A、B、C)的装置。
【文档编号】G06F9/54GK103907092SQ201280052949
【公开日】2014年7月2日 申请日期:2012年3月14日 优先权日:2011年10月31日
【发明者】C·穆奇勒, M·菲利普森 申请人:德国弗劳恩霍夫应用研究促进协会