CN104956333A - 处理无序事件的设备、方法和计算机程序 - Google Patents
处理无序事件的设备、方法和计算机程序 Download PDFInfo
- Publication number
- CN104956333A CN104956333A CN201480006997.XA CN201480006997A CN104956333A CN 104956333 A CN104956333 A CN 104956333A CN 201480006997 A CN201480006997 A CN 201480006997A CN 104956333 A CN104956333 A CN 104956333A
- Authority
- CN
- China
- Prior art keywords
- event
- detector
- time
- speculatively
- forwarded
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/30—Services specially adapted for particular environments, situations or purposes
- H04W4/38—Services specially adapted for particular environments, situations or purposes for collecting sensor information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
实施方式涉及一种用于针对事件检测器(210)对包括无序事件的事件流(204)的事件进行排序的构思,其中,所述事件使单独的事件发生时间(ei.ts)以及多达K个时间单位的最大延迟的单独的事件传播延迟与所述事件相关联。从所述事件流接收到的事件被提供给事件缓冲器(222;226)。所述事件缓冲器(222;226)中接收到的事件是根据它们相应的发生时间来排序的,以获得有序事件。具有事件发生时间ei.ts的有序事件(ei)在最早时刻clk被从所述事件缓冲器(222;226)推测地转发到所述事件检测器(210),使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量。
Description
本发明的实施方式一般地涉及数据网络,并且具体地,涉及处理无序事件(即,没有按照它们原先的时间顺序接收到的后续事件)的设备和方法。
传感器网络(诸如,例如无线传感器网络)具有广泛的应用。例如,各种技术的无线传感器网络可以被用于定位目的,诸如定位人类和/或其它对象。这里,“定位”意指地理定位或位置的检测或确定。一些专门的定位或位置跟踪系统可以被用于在体育事件中定位选手和其它对象(例如球),所述体育事件诸如例如英式足球、美式足球、橄榄球、网球等。
在使用收集的选手和/或球的地理定位或定位数据情况下,能够得到与整个体育事件(例如英式足球比赛)有关的或与单独队伍或选手有关的统计信息。这样得到的统计信息可能因各种原因而是有趣的。一方面,存在各种商业利益,因为特定统计量和它们的分析对于在体育场中和/或在家里的电视机前面的观众来说可以是特别相关的。因此,提供特定统计量可以提高对体育事件的更大兴趣。另一方面,从原始定位数据得到的统计数据也可以被用于训练目的。这里,可以分析自己的队伍的对手和/或行为以及单独选手的表现和/或健康状况。
前述的定位或位置跟踪系统可以基于各种技术。例如,可以基于无线无线电信号和/或磁场的评估来确定定位信息。出于这种目的,可以将通常还被表示为传感器的发送器和/或接收器放置在要由系统定位的单独对象(例如选手、球等)处。还可以将对应的接收和/或发送装置安装到在感兴趣的地理区域(如例如,英式足球场)附近的预定定位。信号强度、信号传播时间和/或信号相位等几个可能的技术另选方案的评估然后可以导致指示单独选手或对象在不同时刻的地理位置的传感器数据流。通常,地理定位数据样本与指示在哪一个时刻对象位于在哪一个地理位置处的时间戳相关联。采用这种组合的信息除包括例如x坐标、y坐标和z坐标的定位数据之外也可以提供运动数据(例如速率(速度)、加速度等)。在本说明书的续篇中,由定位传感器系统传送的定位和运动数据还将被称为(原始)传感器数据。
在无线跟踪系统的特定示例中人们或对象可以装配有微型发送器,所述微型发送器可以被嵌入在鞋袜、制服和球中并且其信号被放置在观测下的区域附近的许多天线拾取。接收器单元处理所收集的信号并且确定它们的到达时间(ToA)值。基于传播延迟差的计算,然后连续地确定了各个发送器的位置。另外,与无线跟踪系统一起集成的计算机网络可以分析位置或传感器数据以便检测特定事件。在2.4或5GHz波段下操作,跟踪系统是全世界免授权的。
基于从定位或位置跟踪系统输出的原始传感器数据流可以检测到所称的“事件”。从而事件或事件类型可以被定义为在一时间点的感兴趣的瞬时发生并且可以由唯一事件ID定义。一般而言,事件与能够被感测到的相关量的分布中的改变相关联。事件实例是事件类型在不同时间点的瞬时发生。事件可以是简单事件或复合事件,所述简单事件直接基于跟踪系统的传感器数据(运动数据),所述复合事件替代地基于先前检测到的其它事件。也就是说,复合事件不直接取决于原始传感器数据而是取决于其它事件。在球赛应用中,事件例如可以是“选手X击中球”或“选手X占有球”。更复杂的事件例如可以是“越位”或“犯规”。各个事件实例可以具有三个时间戳:发生时间戳、检测时间戳和到达时间戳。所有时间戳在相同的离散时域中。发生时间戳ts是当事件实际上已发生时的时间,检测时间戳dts是当事件已由事件检测器检测到时的时间,并且到达时间戳ats是当事件由特定事件处理系统(EPS)节点接收到时的时间。发生时间戳和检测时间戳对于在任何接收节点处的事件实例来说是固定的,然而到达时间戳可以在网络中的不同节点处变化。
在过去几年里基于底层传感器数据流的事件的检测(复杂事件处理,CEP)已经提高增加了对数据库和分布式系统社区的兴趣。现今广泛且数目日益增长的应用(包括如网络监控、电子商务、保健、金融分析和安全或前述体育事件监视的应用)依赖处理对理想地采取事件的时间排序系列的形式的数据流的查询的能力。如在大量供应的传感器数据和/或事件不再能够被人类捕获或处理的许多应用中一样,事件检测表示原始传感器数据和/或事件在无需人为干预的情况下的完全自动化的处理。例如,如果选手和运动对象(例如,球)的高速变化将被预期到,则原始传感器(定位或位置跟踪)数据必须由底层(无线)传感器网络以足够高的数据速率确定。另外,如果存在大量的选手和/或对象(例如,在存在22个选手和一球的英式足球中)要被跟踪,则具体地相对于实时事件处理要求,每秒总体地理定位和运动数据样本的数量可能变得过高。
因此,即使原始传感器和/或事件数据流被完全自动化地分析并且用信号发送,也可能仍然存在多得太多的信息,其全面可能甚至不是任何感兴趣的。在将来这个问题将甚至变坏,因为越来越多的装置将装配有传感器以及将它们确定的传感器数据提供给诸如因特网的公用网络(例如,由像智能电话这样的无线装置确定的天气或温度数据)的可能性。由于这个原因要进一步处理为感兴趣的特定事件的传感器数据的数量将迅速地增长。自动化事件检测可以通过设法逐条地聚合原始传感器数据并且设法确定更抽象的且相互依赖的事件来为此提供补救,这可以转移比原始传感器数据它本身多得多的信息。例如,除前述的英式足球相关示例之外,这样确定的事件能够包括“汽车X位于路口Y处”或“交通在道路X上堵塞”。
在自动化事件检测中出现的问题是用于对可能整体地并行的传感器和/或事件数据流执行事件检测的所需计算能力-并且这一切都在至少准实时处理要求下。这个问题可以通过事件检测器的并行化来解决,所述事件检测器例如可以在计算机网络的不同的(即分布式)网络节点(其例如可以经由以太网进行通信)上运行。从而事件检测器根据用户的事件规范从事件或传感器数据流中自动地提取感兴趣的特定事件。单独的事件检测器可以分布在数据网络的不同的网络节点之上,其中,不同的事件检测器使用事件和/或传感器数据进行通信从而通过网络使用不同的网络路线和分支而行进。从而,可以根据像例如UDP(用户数据报协议)、TCP(传输控制协议)/IP(网际协议)等这样的一些传输协议在数据分组中传输原始传感器数据和/或事件。然而,这个构思相对于在不同的网络节点当中可能不均衡的计算负荷并且相对于网络内的事件数据流的同步引起新的问题。在没有适合的对策的情况下,在不同的网络节点当中的计算负荷是不均衡的并且网络中的单独的传感器和/或事件数据流对于彼此而言不是时间同步的,这意味着单独的事件可以不按照它们原先的时间顺序到达事件检测器并且从而导致假检测结果。
让我们考察示例性英式足球场景,其中多个并行自动地操作的事件检测器被假定检测到从选手A到选手B的传球。为了检测所述“传球”事件,以下前面的事件序列是要求的:
1.“选手A占有球”,
2.“选手A踢球”,
3.“球离开选手A”,
4.“球来到选手B附近”,
5.“选手B击中球”。
对于事件“选手X踢球”的事件检测可以基于事件序列“选手X靠近球”和检测到的球的加速度峰值。存在用于为所述事件“选手X踢球”建立自动化事件检测器的以下另选方案。
我们可以等待单独要求的事件-一个接着一个。如果我们已按照正确的(时间)顺序看到所有所要求的事件(这里,为了简单起见任何中止准则被忽视),则我们能够说我们已看到或经历了传球。然而,对于复杂的应用所有所要求的事件的检测由于事件检测器的并行化而未必在单个网络节点或CPU(中央处理单元)上发生。由于这个原因未必保证单独要求的事件按照正确要求的顺序到达事件检测器。这例如可能是由于网络抖动、变化的和/或不均衡的CPU负荷或增加的网络负荷而导致的。例如,考虑包括其中ek.ats<ek+1.ats(1≤k<n)的事件实例e1、e2、…、en的事件,即,事件流中的事件是按照它们的到达时间以降序排序的。如果存在其中1≤i<j≤n的任何事件ei和ej,使得ei.ts>ej.ts,则事件ej被表示为无序事件。
因此,我们能够设法缓冲事件并且然后搜索缓冲器以得到正确的事件模式。但是应该使用哪一个缓冲大小呢?如果我们说传球必须在最大5个时间单位(例如秒)内发生,则我们将必须考虑在第一相关事件之后在最大5个时间单位的时间段内的事件,直到我们已检测到传球为止或直到我们中止为止。然而,最后相关事件是计算上相当复杂的也是可能的,这要求小规模的附加缓冲器。但是这个附加缓冲器的大小是什么呢?并且与要求“传球”事件作为输入事件的复合事件检测器有关的缓冲器大小是什么呢?
S.Babu,U.Srivastava和J.Widom,“Exploiting k-constraints to reduce memoryoverhead in continuous queries over data streams,”ACM Trans.Database Systems,第29卷,第545–580页,2004的K-slack算法是用于在事件检测中处理无序事件的公知解决方案。K-slack使用长度K的缓冲器来来确保能够使事件ei延迟达至多K个时间单位(K必须为已知先验的)。然而,在分布式系统中事件信令延迟依赖于是整个系统/网络配置(即,事件检测器的分布)以及网络负荷和CPU负荷。最终系统配置和负荷场景均不可以在编码时被预见。
通过2007年第27届分布式计算系统国际会议研讨会(华盛顿,DC)会刊第67–74页中的M.Li,M.Liu,L.Ding,E.A.Rundensteiner和M.Mani,“Event stream processingwith out-of-order data arrival”的方法缓冲事件ei至少和ei.ts+K≤clk一样长。因为在分布式系统中没有全局时钟,所以各个节点通过将它设定为迄今看到的最大发生时间戳来使它的本地时钟同步。
实现K-slack方法的排序单元对输入流应用具有给定K的滑窗,根据它们的时间戳使事件延迟,并且产生事件的有序输出流。然而,单个固定先验K不适合于分布式分层事件检测器。因为K-slack花费K个时间单位生成复合事件,所以在高层上还缓冲达K个单位并且等待复合事件的事件检测器错过所述事件。等待时间沿着事件检测器层次累计。
2009年第25届数据工程国际会议(中国上海)会刊第784–795页的M.Liu,M.Li,D.Golovnya,E.Rundensteiner和K.Claypool,“Sequence pattern query processing overout-of-order event streams”通过为各个事件检测器指定单独的K而避免了这样的问题。必须将各个Kn(n表示层次级别)设定为大于max(Kn-1)即大于所有订阅事件的最大延迟的值。从而订阅事件是对相应的事件检测器感兴趣的事件。层次级别n的事件检测器订阅较低层次级别的事件以便将它用作输入来检测更高层次事件。尽管这乍一看听起来不错,但是为所有Kj选取适当的值是困难的、应用且拓扑特定的,并且仅能够在仔细测量之后完成。保守且过大的Kj导致具有高存储器需求的大缓冲器并且对于分层CEP导致长延迟(因为延迟累计)。必须避免太大的Kj。理论上,对于通用系统仅能够借助于运行时测量找到最小的/最好的Kj,因为等待时间取决于事件检测器的分布并且取决于具体的底层网络拓扑。而且,当检测器迁移时最好的Kj值在运行时改变。
如已经说明的,可以在许多应用领域(诸如监视、体育、股票交易、RFID系统和各种区域中的欺诈检测)中将基于事件的系统(EBS)用作对于数据流的准实时反应性分析的选择的方法。EBS可以将高数据负荷变成事件并且将它们过滤、聚合和变换成更高级别事件,直到它们达到适于终端用户应用或适于触发某个动作的粒度级别为止。常常,性能要求是如此高以致事件处理需要分布在分布式计算系统的数个计算节点上。许多应用还要求具有最小事件延迟的事件检测。例如,分布式EBS可以检测用于把自主相机控制系统引向感兴趣点的事件。在图1中示意性地例示了这样的系统。
图1示出了耦接至包括无线电发送器112的跟踪系统110(例如RTLS)的EBS100,所述无线电发送器112可以附接至一个或更多个感兴趣对象。由发送器112发出并且携带原始传感器数据的无线电信号可以经由天线114被接收并且转发到分布式计算网络120。计算网络120的计算节点可以从由跟踪系统110递送的传感器数据中提取简单事件。这些简单事件可以由在EBS 100的一个或更多个计算节点上运行的一个或更多个事件检测器130处理。从而,事件检测器130可以形成事件检测器层次,其中,最低层次级别的事件检测器130-1、130-2可以消耗传感器数据和/或从其中得到的简单事件,并且其中,更高层次级别的事件检测器130-3、130-4、130-5可以消耗基于先前检测到的较低级别事件的复合事件。如果特定感兴趣事件(例如,选手击中球)已经由EBS 100检测到,则可以自动地引导相机140以捕获所检测到的感兴趣事件的视频总长度。这显然要求低检测等待时间。
为了处理高速率事件流,EBS 100可以在例如通过发布-订阅链接以建立事件检测层次的数个事件检测器130-1至130-5上分割计算。这些事件检测器130可以分布在由计算网络120包括的可用机器上。忽视由在事件检测器130处的不同事件传播延迟引起的错误时间顺序可能引起误检测。事件检测器130本身不能够对具有低等待时间的事件进行再排序,因为一般而言事件延迟在运行时之前是未知的。而且,因为还可能存在动态地改变的应用特定延迟类型(像例如检测延迟),所以不存在事件检测器到可用计算节点的先验最优分配。因此,在分布式EBS中,中间件可以通常在没有关于事件检测器、它们的分布及其订阅事件的先验知识的情况下处理无序事件。从而中间件通常表示向(分布式)软件应用提供除可从操作系统得到的那些服务以外的服务的软件层。
缓冲中间件方法可以扣留事件一段时间,对它们进行排序并且按顺序向检测器发出它们。主要问题是排序缓冲器的大小。如果它太小,则检测失败。如果它太大,则浪费时间并且引起高检测等待时间。注意,等待时间可以沿着检测层次累计。最好的缓冲器大小是未知的并且可能取决于某个动态的不可预知行为。另外,无需缓冲不可能无序的或能够在没有问题的情况下被无序处理的事件。缓冲中间件可以是可靠事件检测的基础但是对于许多类型的事件来说代价太大并且不从更快CPU中受益,因为它们受等待时间约束。
用于处理无序事件到达的推测中间件另一方法推测地对原始事件流起作用。因为不存在缓冲,所以这个更快。每当接收到无序事件,可以撤销错误地发出的事件并且可以重放事件流。对于事件撤销和流重放的努力随着无序事件的数量并且随着时间检测层次的深度而增长。这对于存储器管理是不平凡挑战,可能耗尽CPU并且可能引起高检测等待时间或事件系统故障。和前述基于缓冲器的方法对比,更强CPU可能有用,但是高检测等待时间的风险仍然保持。
Proceedings of the VLDB Endowment,第3卷,第220–231页,新加坡,2010中的Badrish Chandramouli,Jonathan Goldstein和David Maier,“High-Perfo rmance DynamicPattern Matching over Disordered Streams”通过使用标点法来许可流修订。它们为无序事件给出了去除无效序列的插入算法。然而,去除无效序列对于高度分布式系统来说是不可能的。可能已在其它节点上消耗/处理了需要为无效的事件。Chandramouli等人要么通过序列号要么通过净化来限制推测。当以稳定速率生成特定事件时接收器能够使用前者来在罕见情况下推导出无序信息。后者仅适用于基于标点法的环境,所述基于标点法的环境必须并入事件定义以通过将标点法设定为事件检测器的事件时间戳来限制查询窗口。然而,当中间件技术不能够访问所述信息时不能够将这个信息用作通用缓冲扩展。
因此,期望提供用于处理无序事件到达的改进方法。
组合基于缓冲器的方法和推测方法这二者的优点是实施方式的一个发现。因此,实施方式与添加到缓冲EBS的新颖推测处理有关。为此,
(1)中间件可以既不利用事件语义也不利用它们通过事件检测器的使用,因为它们两者都是高度用户且应用特定的。
(2)不管推测,缓冲中间件可以使事件检测保持可靠,也就是说,可以避免假阳性检测或假阴性检测以防止系统故障。因此,不选择使用不精确的大约方法或丢弃将引起系统过负荷的事件。
人们已经发现,可以通过使用缓冲来对大多数事件进行排序但是让快照事件检测器推测地且过早地处理很快将被发出的那些事件来解决上述问题。当发生重放时可以复原事件检测器,即,它们的内部状态和/或输出。推测的程度可以被适配为适合范围从在空闲CPU上的完全推测到在忙CPU上的平滑缓冲的CPU可用性。所提出的技术在没有关于内部事件语义的知识的情况下工作,能够被用于任何基于发布-订阅的缓冲中间件并且不使用查询语言或事件大约。
根据第一方面,实施方式提供了一种用于针对事件检测器对无序事件流的事件进行排序的方法。由所述事件流携带的所述事件分别使单独的事件发生时间以及多达K个时间单位的最大传播延迟的单独的事件传播延迟与其相关联。从而,最大延迟K表示事件从它实际的事件发生开始行进到所述事件检测器花费的最大延迟。所述方法包括向还可以被称为排序单元的事件缓冲器提供从所述事件流接收到的事件的步骤。此外,所述方法包括根据相应的发生时间(时间上)对所述事件缓冲器中接收到的事件进行排序以获得(时间上)有序事件的步骤。并且,所述方法包括在(最早)时刻clk将具有事件发生时间ei.ts的有序事件ei从所述事件缓冲器推测地转发到(快照)事件检测器的步骤,使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量。在所述事件检测器处可以基于至少一个推测地转发的事件来检测事件。并且,可以基于所述至少一个推测地转发的事件来设定所检测到的事件的事件发生时间。在一些实施方式中,所述事件检测器可以取决于所述至少一个转发的事件的事件发生时间来设定所检测到的事件的事件发生时间。例如,可以至少基于第一转发的事件和第二转发的事件来检测复合事件。所述事件检测器可以例如取决于所述第一事件或所述第二事件的发生时间中的哪一个触发所述复合事件的发生时间来设定取决于或与经转发的第一事件或经转发的第二事件的事件发生时间对应的所述复合事件的事件发生时间。
根据另一个方面,实施方式还提供了一种用于对于事件检测器对包括无序事件的事件流的事件进行排序的设备,其中,所述事件使单独的事件发生时间ei.ts以及多达K个时间单位的最大延迟的单独的事件传播延迟与其相关联。从而,所述设备包括被配置为向事件缓冲器(排序单元)提供从所述事件流接收到的事件的输入端。所述设备还包括被配置为根据它们相应的发生时间ei.ts对所述缓冲器中所接收到的事件进行排序以获得(时间上)有序事件的排序器实体。并且,所述设备包括输出端,所述输出端被配置为在(最早)时刻clk将具有事件发生时间ei.ts的有序事件ei从所述事件缓冲器推测地转发到(快照)事件检测器,使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量。可以将推测地转发理解为在与所述最大延迟K对应的缓冲时间已流逝之前转发或发送来自所述缓冲器事件的事件。所述设备的事件检测器可以被配置为基于至少一个推测地转发的事件来检测事件。并且,所述事件检测器可以被配置为基于所述至少一个推测地转发的事件来设定所检测到的事件的事件发生时间。在一些实施方式中,所述事件检测器可以取决于所述至少一个转发的事件的事件发生时间来设定所检测到的事件的事件发生时间。例如,所述事件检测器可以被配置为至少基于第一转发的事件和第二转发的事件来检测复合事件并且配置为例如取决于所述第一事件或所述第二事件的发生时间中的哪一个触发所述复合事件的发生时间来设定取决于或与经转发的第一事件或经转发的第二事件的事件发生时间对应的所述复合事件的事件发生时间。
例如,一些实施方式可以包括安装在所述设备内的数字控制电路,其可以被实现在分布式计算网络的一个或更多个计算节点中。需要相应地对这样的数字控制电路(例如,数字信号处理器(DSP)、专用集成电路(ASIC)或通用计算机)进行编程。因此,又另外的实施方式还提供了一种计算机程序,该计算机程序具有用于当所述计算机程序正在计算机或数字处理器上执行时执行所述方法的实施方式的程序代码。
根据实施方式,可以将事件检测器过程理解为在分布式系统的节点上正被执行的计算机程序的实例。事件检测器包括计所述算机程序的程序代码及其当前活动。例如,所述分布式系统可以是分布式计算机网络或多核处理器。在计算机网络情况下,节点即网络节点可以包括经由例如以太网或某种其它形式的联网技术与其它网络节点进行通信的计算机装置或处理单元(例如其CPU)。也就是说,根据本发明的又一个方面,还提供了一种用于基于无序较低级别事件流来确定更高级别事件的分布式计算系统,所述无序较低级别事件流再次基于至少一个(原始)传感器数据流。可以为计算机网络的所述分布式计算系统可以包括各自具有与其相关联的事件检测器的多个分布式节点,以及用于对无序事件流的事件进行排序的设备的至少一个实施方式。
在一些实施方式中,所述分布式计算系统或其设备可以耦接至用于定位和/或跟踪预定义地理区域内的对象的定位系统,其中,所述定位系统可以向所述分布式计算系统提供至少一个传感器数据,所述传感器数据流携带指示地理位置的数据和/或与已定位对象有关的运动数据。定位系统(诸如RTLS)可以基于已经在本说明书的介绍部分中描述的无线传感器网络。
实施方式提出使用缓冲技术来使事件延迟和/或时间上对事件进行排序但是还推测地处理它的至少一部分。实施方式可以在运行时适配推测的程度以适合可用的系统资源,使得检测等待时间能够变得最小。实施方式可能在来自具有每秒数百个无序传感器事件的实时定位系统(RTLS)的合成数据和真实传感器数据方面胜过现有技术方法。
将仅通过示例并且参照附图在下文中描述本发明的一些实施方式,附图中
图1示意性地例示了根据实施方式的基于基于事件的系统(EBS)的自动地控制的相机系统。
图2例示了根据实施方式的分布式发布/订阅EBS节点/系统;
图3a、图3b示出了例示性状态机和无序事件流;
图4示例性地例示了事件处理层次;
图5示意性地例示了根据实施方式的用于对无序事件流的事件进行排序的方法的流程图;
图6a、图6b例示了新近到达无序事件的插入的实施方式;
图7示例性地例示了在推测量α=1/3情况下根据实施方式的推测排序;
图8示出了根据实施方式的用于插入无序事件和可能必要的指针再定位的伪代码;
图9例示了根据实施方式的具有快照恢复和推测量α=1/3的推测排序单元;
图10示出了根据实施方式的针对事件的推测发出的伪代码;
图11a、图11b例示了在接收新近到达无序事件时事件撤销的实施方式;
图12例示了推测量α的自适应;
图13示出了根据实施方式的由于平滑缓冲和推测缓冲而导致的等待时间的比较;
图14例示了由于推测因子α的自适应而导致的负荷行为;以及
图15示出了针对α的不同值的各种负荷场景。
现在将参照附图更详细地描述各种示例实施方式,在附图中例示了一些示例实施方式。在图中,为了可以放大清楚层和/或区域的厚度。
因此,虽然示例实施方式能够各种功能和结构修改及另选形式,但是其实施方式在图中通过示例来示出并且将在本文中被详细地描述。然而,应该理解,不旨在将示例实施方式限制于所公开的特定功能和结构形式,而是相反,示例实施方式将涵盖落入本发明的范围内的所有功能和结构修改、等同物以及另选方案。同样的标号在这些图的所有描述中指代同样或类似的元素。
应当理解,当元素被称为被“连接”或“耦接”至另一元素时,它能够直接连接或耦接至另一个元素或者可以存在中间元素。相比之下,当元素被称为被“直接连接”或“直接耦接”到另一元素时,没有中间元素存在。应该以同样的方式来解释用来描述元素之间的关系的其它单词(例如,“在...之间”对“直接在...之间”、“相邻”对“直接相邻”等)。
本文所使用的术语仅用于描述特定实施方式的目的并且不旨在限制示例实施方式。如本文所使用的,除非上下文另外清楚地指示,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。还应当理解,术语“包括”、“包括有”、“包含”和/或“包含有”当被用在本文中时,指定陈述的特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或更多个其它特征、整数、步骤、操作、元素、组件和/或其组的存在或添加。
除非另外定义,否则本文所使用的所有术语(包括技术术语和科学术语)具有与由示例实施方式所属于的领域中的普通技术人员所通常理解的相同或类似的意义。还应当理解,术语(例如,在通常使用的词典中定义的那些)应该被解释为具有与它们在相关技术的上下文中的意义一致的意义,并且除非在本文中明确地如此定义,否则将不在理想化的或太正式的意义上被解释。
图2例示了示例性EBS 200,其包括例如形式为可以收集传感器数据202(例如RFID读数)的天线的数个数据分发装置(DDS)114,以及网络中可以运行相同的事件处理中间件220的数个节点210-1、210-2。中间件220可以每事件检测器210创建再排序缓冲器222。根据实施方式这个再排序缓冲器222分别可以由推测单元224包围。同时再排序缓冲器222和推测单元224分别形成推测事件缓冲器/排序单元226,其还可以被视为根据实施方式的用于对无序事件流204的事件进行排序的设备。
如可以从图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因此可以是通用的且封装的。
为得到实施方式的以下更详细描述,将使用以下术语:事件类型、事件实例和事件时间戳。
·事件类型定义有趣发生或感兴趣的事的发生并且可以由唯一事件类型ID标识。
·事件实例是事件类型在一时间点的瞬时发生。例如,它可以是简单(传感器)事件或复合事件。
·一个事件可以具有三个时间戳:发生时间、检测时间和到达时间。根据我们的时间模型所有时间戳可以在相同的离散时域中。事件可以在它的发生时间戳ts或缩写为仅时间戳处出现。可以在它的检测时间戳dts处检测到它。在到达时间戳ats处,事件可以由特定EBS节点接收。发生时间戳和检测时间戳在任何接收节点处对于事件可以是固定的,然而到达时间戳可以在网络中的不同节点处变化。
考虑事件流e1、…、en。预定义类型ID的事件可以被用来设定与事件检测器相关联的本地时钟。然后,如果不存在具有ei.id=ek.id=ID并且ei.ats≤ej.ats的ei、ek使得ei.ts≤ej.ts≤ek.ts(即,ej.ats在两个连续时钟更新之间不适合),则可以将ej视为无序的。
事件检测器的输入可以是通常为所有事件的子集的潜在无限的事件流。事件流可以针对该特定事件检测器保持至少感兴趣的事件类型,并且也可以包括一些无关事件。
考虑以下示例:为了检测选手击中球,我们可以等待球在选手附近(A)并且然后球被踢(加速度峰值(C))的事件。在这两个事件之间可能不存在球离开选手的事件(不是B),因为在那种情况下球将仅仅已跌到地面。更正式地:如果我们接收到事件A(靠近)并且随后接收到事件C(加速度峰值)而不是中间的B(不靠近),则我们可以生成事件D。在这个上下文中,图3a描绘了针对事件D的有限态自动机300。为了简化,我们省去用于选手标识的发送器ID的区别。
在图3b中描绘了简化的事件流204。流300中的事件(A、B、C、E)是无序的并且事件的自发处理将不导致事件检测器从A4/C5中生成事件D并且将从A2/C1中检测D。这里,符号A4是针对具有发生时间ts=4的事件A的简化符号。类似地,C5是针对具有发生时间ts=5的事件C的缩写词。
为了实现正确的事件检测,EBS 200的缓冲中间件220可以在事件输入流204与事件检测器210之间安装基于K-slack的动态地生成的排序单元。从而,K-slack假定能够使事件ei延迟达至多K个时间单位。因此,对于特定事件检测器210,取得具有潜在无序事件的流并且产生有序事件流的排序单元需要K为所有订阅事件的单位时间中的最大延迟以及用于事件排序的K大小的缓冲器。因此,我们可以从事件流中提取本地时钟clk并且使晚期事件和早期事件这二者延迟尽可能长以避免无序事件处理。
在这个上下文中,图4示出了用于检测高级别“封锁射门”事件472的示例性事件处理层次400。如可以看到的,级别7“封锁射门”事件472可以基于多个较低级别事件412至462。从而各个较低级别事件412至462可以使专用事件检测器与其相关联。这个事件处理层次400中的各个事件检测器可以具有它自己的动态地参数化的排序单元,并且被配置为检测具有低等待时间的事件。例如,“选手击中球”事件检测器(级别5)可以实现与图3b的模式类似的模式。其排序单元引入多达1秒的等待时间以保证到检测器的有序事件输入。这使“射门”事件(级别6)的检测延迟达至少一秒并且可以使“封锁射门”事件472延迟甚至更长。
即使跨越层次400对于所有事件检测器412至472使用了最小K值,结果得到的组合或累积等时间也可能未必高并且推测处理可能是较好选项。
假定图3b的示例需要最小KD=3。这使上部处理层次中的任何事件的检测延迟了至少三个时间单位,因为仅能够在三个时间单位延迟情况下检测到事件D。然而,假定类型B的事件是罕见的。然后不使事件D的检测延迟直到我们阻碍事件B的发生为止、但是当事件B实际上发生时在罕见情况下撤销D的假检测可能是有利的。对于图3b所描绘的事件流我们因此可以在将clk设定为8(由于KD=3)之前从A4/C5中检测事件D。如果存在用于稍后取消事件D的检测的事件B则我们可以撤销D。因此,被用来检测事件D的事件检测器可以生成能够被用来以较低等待时间在更高级别上触发事件检测器的初步事件。因此,实施方式的一个关键构思在于组合两个技术并且在于让推测单元224包围(wrap)K-slack缓冲器222以过早地处理事件的一部分。
如果根本不存在无序事件则附加的推测可能导致改进的检测等待时间,因为不曾更深一层从检测器层次撤销事件检测器发出的东西。然而,在事件流中存在无序事件越多并且检测层次越深,撤销工作可能越复杂,因为可能需要更多存储器来存储检测器状态并且因为可能需要更多CPU时间来执行撤销。因此,在自发推测方法中清除假推测的效果的成本可能容易地比它的有益效果重要并且可能容易地增加等待时间超过纯非推测缓冲将具有成本的。因此,实施方式提出限制推测的量,使得可以在一侧以全容量使用CPU和存储器但是而不在另一侧得以耗尽。能够在运行时推导出系统参数,并且推测排序单元226能够连续地适于当前系统和事件负荷。
图5例示了根据本发明的实施方式的用于对无序事件流204进行排序的方法500。
由事件流204包括的事件各自使单独的事件发生时间ei.ts以及多达K个时间单位的最大传播延迟的单独的事件传播延迟与其相关联。方法500包括向推测缓冲单元226提供从传入事件流204接收到的事件的步骤502。此外,方法500包括根据它们相应的发生时间(时间上)对推测事件缓冲单元226中接收到的事件进行排序以便获得如已经关于图3b描述的有序事件的步骤。在另一步骤506中,具有事件发生时间ei.ts的有序事件ei在最早时刻clk被从推测事件缓冲器(排序单元)226推测地转发到它关联的事件检测器210,使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量。在事件检测器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个时间单位之前转发事件。
根据实施方式的推测事件处理技术扩展常规的K-slack缓冲方法。它可以按时间顺序放置输入事件204的大多数,但是它不根据需要缓冲它们以得到完全正确的时间顺序。不是缓冲事件ei达K个时间单位,而是实施方式仅缓冲ei和具有新推测量α的下式一样长:
ei.ts+α*K≤clk α∈]0;1[, (1)。从而推测量α可以被用来调整推测分量。α越大,可以推测地发出事件越少。也就是说,如果它是α=1或α接近于1,则实施方式在没有推测的情况下基本上朝向K-slack收敛。用于推测量α的较小值在推测时切换。也就是说,如果α为0或接近于0,则根本没有或几乎没有缓冲/排序,因为不等式(1)在大多数情况下基本上成立(除了如果不同的事件类型被用来在推测排序单元226处设定本地时钟clk则可能发生的具有负延迟的事件)。一般而言:0<α<1。然而,在一些实施方式中:0.1≤α≤0.9。
例如,具有K=5和α=1的常规事件排序单元将发出具有ts=20的事件,其是不在clk至少为25之前在clk=22处接收到的。仅然后ei.ts+K=20+5≤25=clk。纯缓冲中间件将不仅仅发出事件而是它们还将从缓冲器中清除它们。在具有K=5但是具有α=0.6的示例中,推测缓冲器226可能已经在clk=23(20+0.6*5=23)处即较早地推测地发出具有ts=20的事件。在推测量α≤0.4情况下发出甚至立即在clk=22处。根据实施方式,如果总是基于相同的事件类型设定clk,则在时刻clk被从推测事件缓冲器226推测地转发到事件检测其210的具有事件发生时间ei.ts的事件ei满足ei.ts+K>clk。
在附加推测(即,0<α<1)情况下,事件可以被推测地发出给事件检测器210但是可能不再立即被从缓冲器中清除或删除,因为它们稍后可能是事件重放所需要的。根据一些实施方式,至少如果一直总是基于相同的事件类型得到时钟信号clk,则可以在所述时刻clk从事件缓冲器中删除具有满足ei.ts+K≤clk的事件发生时间ei.ts的事件ei。因此,根据实施方式,可以利用已经发出指针(AEP)增强推测事件缓冲器226,所述AEP可以被认为是对已经被推测地发出的推测缓冲器226中的最后事件或元素的引用。也就是说,推测地转发事件的步骤506可以包括使最后推测地转发的事件的指针(AEP)保持在事件缓冲器226中。
来自输入流204的新近到达事件ei可以根据它的发生时间戳ei.ts被插入到推测事件缓冲器226中。例如,在图6a和图6b中可以在已经缓冲的事件A2(具有ts=2的A)与B4(具有ts=4的B)之间插入晚到达事件A3(具有ts=3的A)。从缓冲器的首部到已经发出指针(AEP)的事件A0、事件C1和事件A2(示出为阴影)已经被转发到所关联的事件检测器。取决于α、clk、K和AEP,存在两个可能的情况:
·ei.ts>eAEP.ts:如果最新到达事件ei的时间戳大于AEP的时间戳(图6a的示例中的A2),则尚未发生假推测并且因此不必撤销或重放事件。在图6a中已经过早地或推测地发出事件A0至事件A2,并且事件A3在已经被转发到事件检测器的输出事件流中未遗漏。
·ei.ts≤eAEP.ts:如果新近到达事件(这里:A3)的时间戳小于已经发出指针(AEP)的时间戳(图6b的示例中的A4),则可以借助于将在续篇中描述的构思撤销错误地发出的事件。可以将已经发出指针(AEP)设定为新近到达事件ei并且从缓冲器的首部直到新的已经发出指针(AEP)的事件可以被重放,即,重新发送到所关联的事件检测器。在图6b的示例中,可以撤销事件B4,使得能够在重放B4之前过早地发出无序事件A3。
每当例如基于特定事件类型更新了在推测缓冲器226处的本地时钟信号clk时,推测缓冲器226可以发出满足不等式(1)的所有事件。如果常规非推测K-slack缓冲器还将清除或删除它们则仅可以清除事件,这意味着可以在时刻clk从事件缓冲器226中删除具有满足ei.ts+K≤clk的事件发生时间ei.ts的事件ei。
图7示例性地例示了来自图3a的事件检测器210的推测缓冲器226如何在推测量α=1/3和初始K=0情况下工作。推测缓冲器226的定向现在是垂直的,即,它的首部在顶上。示例性地,类型A的事件可以被用来设定内部时钟clkA并且可以借助于动态K-slack调整K(参见图7中的黑体值)。可以在相应时刻从缓冲器226中清除由虚线指示的事件。过早地或推测地发出的事件由阴影框指示。尽管在图7中未显式地视觉化,但是已经发出指针(AEP)可以指向最低阴影事件。撤销由否定事件和指向在图7底部的输出流720的箭头来指示。输出流720中的重放事件被描绘为下划线。
在未排序的输入事件流204开始,我们没有事件延迟的测量结果,所以可以在步骤701和步骤702处推测地发出事件A0和事件A2。当在步骤或时刻703处在缓冲器的输入端处接收到事件C1时,可以认识到之前已经不正确地发出了事件A2。因此,可以通过替换正确地排序的子流(即,事件C1)撤销错误地推测地转发的事件A2(参见在步骤703处的A2),并且再次可以再次发出A2。也就是说,将撤销消息从推测缓冲器226转发到所关联的事件检测器210可以包括转发新近接收到的事件C1并且再次将先前推测地转发的事件A2转发到事件检测器210。
在步骤704中事件A3一到达缓冲器的输入端就可以将最大事件延迟K设定为2。A3仍然未被发出,因为ei.ts+α*K=3+1/3*2=3.67>3=clk。在步骤704中能够清除事件C1,因为K=2告诉我们不可能存在具有ts<3–K=1的无序事件。在步骤705中可以将新近到达事件B4插入到缓冲器中。随着事件A6在步骤706处到达,存在另一个本地clk更新并且可以评估当前缓冲的事件。然后,可以发出事件A3(3.67≤6=clkA)和事件B4(4.67≤6=clkA),并且可以通过(借助于纯K-slack的规则)擦除满足ei.ts+K≤clk的各个事件(即,现在安全的事件A2、事件A3和事件A4)来清除推测缓冲器226。尽管可能不在步骤707中在接收到事件C5时更新本地时钟clk,但是我们能够推测地发出C5,因为它满足ei.ts+α*K=5+1/3*2=5.67≤6=clk,并且因为之前尚未处理事件A6,所以我们不必重放。事件B8和事件C7可能皆被排队直到在步骤710中接收到事件A11为止。我们然后处理A6、C7,并且清除C5。在接收到事件A12情况下,可以过早地发出事件B10,因为满足ei.ts+α*K=10+1/3*6=12≤12=clk。在步骤713中,可以在已经发出指针(AEP)(指向B10)前面插入新近接收到的事件C9,进而可以检测到假推测。因此,可以再定位已经发出指针(AEP)并且可以将撤销消息(参见-B10)转发到所关联的事件检测器以用于通过转发或重放事件C9和事件B10针对所述事件检测器和/或布置在所述事件检测器下游的更高级别事件检测器启动事件撤销过程。
图8所描绘的算法1呈现了用于插入无序事件和可能必要的AEP再定位的示例性伪代码,然而图10的示例性算法2给出了针对推测发出(即,事件的重放)的伪代码。下面将进一步描述两个算法的细节。
如果推测一直太仓促,则推测排序单元226可以再定位已经发出指针(AEP)并且重放事件流。也就是说,如果新近接收到的事件的事件发生时间小于最后推测地转发的事件的事件发生时间,则方法500还可以包括将撤销消息从缓冲器226转发到事件检测器210以用于针对所述事件检测器和/或被布置在所述事件检测器210下游的更高级别事件检测器启动事件撤销过程。然而,尽管推测排序单元226可以借助于将在下面进一步更详细地描述的撤销方法来修订不正确的事件,但是处理所发出的事件的事件检测器可能由于这些不准确的过早地发出的事件而仍然是错误状态。因此,为了重放可以将事件检测器210的内部变量回复到它们在事件检测器210处理第一不正确的过早事件之前具有的状态。换句话说,转发撤销消息可能产生将事件检测器210的推测内部状态回复或恢复到在事件检测器已处理最后推测地转发的事件之前的状态。
这样的状态恢复因为三个原因而可能是困难的。首先,因为排序中间件220可以透明地处理无序事件流,所以事件检测器210甚至不知道排序单元226存在。其次,即使事件检测器210知道存在推测排序单元226,并且它处理撤销事件以回复它的状态,它然而也没有关于推测量α和最大事件延迟K的线索,并且因此知道它需要保持多少状态。第三,在许多情况下,能够中断并且较快地恢复作为有限推测为什么有利的核心原因的撤销级联。这仅可能从排序中间件内是可能的。
实施方式提出让中间件220触发事件检测器状态备份和恢复这二者。一经要求,事件检测器210也许能提供有必要稍后被复原到这个快照的所有数据。一个构思在于每当过早事件ei将要从推测缓冲器226发出时为其内部状态的快照而询问事件检测器210并且在于直接在过早地发出的事件ei前面将这个快照作为具有es.ts=ei.ts的异常事件es插入到排序缓冲器226中。快照状态es然后可以表示在过早事件ei被过早地或推测地发出之前已经处于适当的位置的事件检测器状态。因此,回复到事件检测器210的推测状态可以基于事件检测器210的响应于最后推测地转发的事件先前已被提供给推测事件缓冲器226的存储的快照状态。从而,可以将事件检测器210的快照状态插入到事件缓冲器226中作为具有与最后推测地转发的事件ei相同的发生时间的异常事件es。
每当从推测缓冲器226向关联的事件检测器210重放事件时,检测器210一接收到封装事件检测器210的较早内部状态的这样的异常事件es它就可以切换回到较早状态。根据一些实施方式,可以在重放(即,最顶部快照)中发出仅首先缓冲的快照事件,可以跳过剩余的快照。在重放期间,还可以为快照而询问事件检测器,并且排序缓冲器226中的现有快照可以用新的快照代替。如之前已经描述的,可以像任何其它事件一样从推测缓冲器226中清除快照事件es。
图9例示了具有附加快照处理的图7的排序单元。在各个发出的阴影事件之上在缓冲器中存在特殊快照事件(由s表示)。相对于晚到达事件C1考虑步骤903的重放情形。当已经推测地发出事件A2时在步骤902中已经取得的快照事件s2仍然在缓冲器中。为了重放,首先发出这个快照事件s2,后面是步骤903中的事件C1和事件A2。当无序事件C9在步骤913中到达时过程是类似的。
如果同一事件检测器210的后续快照不同,则实施方式可以仅仅存储对在先快照的引用。然而,推测需要额外的存储。所需空间随着推测的程度而增长并且取决于事件检测器的状态空间的复杂性。
图8的算法1和图10的算法2例示了推测如何可以工作。可以使用在排序单元226之上迭代并且由事件检测器用于事件处理的工作线程(算法2)。在这样的工作线程可能忙于处理事件的同时,可以接收新的事件,并且可以在接收时调用算法1。因为这个事件可能是无序的,所以算法1可以获取对排序单元的缓冲器的锁定,即视需要,可以停止事件检测器处理,将(无序)事件插入在它正确的位置处,重新初始化事件检测器,并且再定位AEP。随着其终止它可以触发工作线程继续进行。工作线程还可以通过clk更新来触发,并且还可以被用来从缓冲器中清除过时事件。因此,可以在接收到新的事件时调用算法1。其任务在于如果适当则更新K、在于贪婪获取对缓冲器的锁定、在于将无序事件插入在它正确的位置处、在于重新初始化事件检测器并且在于再定位已经发出指针(AEP)。随着其终止算法1可以触发像算法2所描述的那样执行的工作线程。工作线程是通过事件插入和clk更新这二者触发的。它们还可以通过K-slack约束来清除缓冲器。
如果在推测地发出的事件流(输出流)中错过某个事件,则实施方式可以复原订阅事件检测器210的快照状态并且重放事件流。什么保持开放是这个事件检测器210它本身已经可能基于过早且不完整的输出事件流生成了更高级别事件。可以从由检测器在更高层次级别上订阅的事件流中撤销/消除这些生成的事件。因为这可能导致重度撤销级联,所以实施方式目的在于限制推测的程度。
考虑图3a的示例事件检测器和图11a所例示的推测缓冲器。当具有发生时间戳ts=4的无序输入事件B到达缓冲器的输入端时,所关联的事件检测器可能已经推测地处理了阴影事件A3至事件A8并且可能已经基于输出事件A3/C5生成了输出事件Di3并且基于输入事件A6/C7生成了输出事件Di+16。对于这个示例,我们假定事件检测器给所生成的输出事件D编号,例如,Di3表示在clk=3处生成的第i个事件。因此,订阅事件检测器它本身已经不正确地生成了Di3。因此,我们可以不仅复原事件检测器的状态并且重放C5至B8,而且从更高级别检测器(即,已订阅事件D的事件检测器)的流中撤销或消除输出事件Di3。而且,输出事件Di+16因为两个原因而也可能是错误的。首先,因为未示出的一些内容状态变量,事件检测器在存在输入事件B4情况下可能尚未达到Di+16状态。其次,然后代替Di+16它应该已产生Di6,i表示最后发出的事件D的序列号。因此,除能够重放事件流之外中间件220还可能准备好使已经基于过早地发出的事件生成的事件无效。根据实施方式,可以通过发送标识已被不正确地生成的事件的撤销事件或消息来复原在更高级别事件检测器H处的正确状态,使得H的排序单元可以使该事件流固定并且重放事件流。以下两个技术被呈现来跨越检测层次处理事件撤销:完全撤销和按需撤销。
完全撤销的一个构思在于已经发出指针(AEP)一被再定位就立即撤销可能已经被不正确地生成的所有事件。出于这个目的,事件检测器的推测排序缓冲器226可以不仅存储过早地发出的事件和所关联的事件检测器210的快照状态而且概念上保持事件检测器210已经从过早地发出的事件(即,上述示例中的Di3和Di+16)生成的事件的列表。方法500因此可以包括保持事件检测器210已经基于至少一个推测地转发的事件生成的至少一个事件的列表。
当无序事件被插入或输入到推测缓冲器226中时,我们可以首先收集可能已经被不正确地生成的所有事件,并且向各个订阅更高级别事件检测器H的排序单元发送针对它们中的每一个的(概念上)撤销消息。当这个排序单元接收到这样的撤销消息时它可以从其缓冲器中清除这个事件并且执行它自己的撤销和重放。因此,撤销消息或撤销事件可能必需与无序事件做的相同的重复和快照恢复。例如,在图11a中可以在A3与C5之间插入新近到达事件B4。立即,可以发送针对–Di3和–Di+16的撤销消息以告诉所关联的事件检测器复原适当的快照并且启动重放。
尽管每个单个不正确地生成的事件D的撤销将工作,但是可能存在用于实现相同效果的更高效方式。一个构思在于像已经由事件检测器之前完成的那样利用推测排序单元226可以附接到事件检测器的状态的事件计数器i。不是发送数个撤销消息(该示例中的-Di3和–Di+16),而是可能足以向上层检测器发送事件计数器D:i-1。这个事件检测器然后可以从它的缓冲器中清除具有较大计数器的所有D事件。事件计数器可以不仅帮助减小需要被发送到更高级别检测器的撤销事件的数量。利用与检测器状态存储在一起或存储在检测器状态中的计数器,不再需要保持所生成的事件的列表(在上述示例中,对于列表C5-->Di3和C7-->Di+16不存在需要)。
完全撤销的一个优点是更高级别事件检测器的排序单元可以从它们的缓冲器中清除撤销的事件并且立即重放它们的事件流。如果事件检测器的状态改变和/或过早地生成的事件不同,则完全撤销可以尽可能高效地工作。
利用完全撤销及其生成事件的消除,事件检测器必须再次执行它们的检测工作。这消耗CPU周期。但是考虑将再次确切地生成经消除的事件的无状态检测器。显然,对于那些检测器来说撤销工作的大多数被浪费了。以上描述的完全撤销的效率强烈地取决于事件检测器的内部结构及其生成的事件。它可能引入不必要的CPU开销并且因此可能未必打破推测的可实现程度。
前述按需撤销的一个构思在于不在AEP再定位时立即发送撤销事件。替代地,如果快照状态改变和/或如果在重放期间未再次生成检测器输出事件,则可以重放事件系统并且可以仅撤销事件。更详细地,每当在重放期间发出事件时,可以验证以下两个特性是否成立:
(1)快照是相等的。如果重放了事件流并且快照不同,则可以中止重放过程。因为在重放中的即将到来的过早事件引起相同的快照并且因此生成相同的事件,所以快照和先前生成的过早事件这二者保持有效。也就是说,撤销可以包括在处理新近接收到的事件时验证所存储的快照状态是否等于事件检测器的新的内部状态,并且,如果验证是肯定的,则对于更高级别事件检测器中止事件重放过程。
(2)生成的事件是相等的。在重放期间再次生成的事件(即,事件类型和计数器)可以被标记为更新,并且更高级别事件检测器H的排序单元可以验证先前生成的过早事件是否等于最近生成的过早事件。如果是,则H的排序单元可能不重新插入新的事件,可能不再定位AEP,并且因此可能不触发不必要的撤销级联。换句话说,撤销过程还可以包括验证由事件检测器在处理撤销消息时生成的输出事件是否等于已经响应于最后推测地转发的事件而生成的先前生成的输出事件,并且如果验证是肯定的,则对于更高级别事件检测器中止事件重放过程。
图11b针对上述示例示例性地例示了按需事件撤销。当新近到达事件B4被插入到缓冲器中时,可以重置所关联的事件检测器以使用快照s4=s5并且对所重放的事件起作用。所关联的事件检测器然后将在推测地处理B4之后达到某种状态s5’(图11b中未示出)。如果s5’=s5(=s4),即,如果所关联的事件检测器的状态不受晚到达事件B4影响,则可以中止重放和撤销,因为后续快照和过早地生成的事件将保持不变。
然而,如果所关联的事件检测器的状态受影响,则可以重放事件流并且每当生成了事件时,可以在向更高级别事件检测器H的排序单元发送更新标志之前设定它。H的排序单元然后可以在平等基础上检查经更新的事件,并且如果它是,则可以丢弃事件。
如果事件检测器是无状态的或者引起重放的事件不改变许多输出,则按需撤销可以大大减小将由完全撤销跨越事件检测器层次引入的撤销工作。
根据实施方式推测可能要求附加的系统资源来减小事件检测等待时间。剩余问题是如何设定控制推测的程度的衰减或推测因子α。推测量α的理想值导致最好的等待时间但是还避免耗尽可用的系统资源并且因此避免系统故障。一些实施方式提出了可以实现这个目标的运行时α自适应。因为当运行时测量不可用时或当发生临界情形(例如CPU负荷高于某个阈值)时它是安全的,可以将α(重新)设定为其初始值,例如α0=1,以便防止系统故障。例如,另一初始值还可以是α0=0.99或α0=0.9。而且,α自适应可能仅具有本地效果,因为α仅影响单个推测排序单元226(及其关联的事件检测器210)的重放和撤销。运行其它检测器的机器上的CPU负荷可能几乎不受影响,因为上层事件检测器的推测缓冲器可能仅插入和/或撤销事件但是不启动一般而言可能取决于它自己的推测因子α的重放。
实施方式的一个构思在于将控制循环用于与拥塞控制机制类似的α自适应。所述拥塞控制设法通过在各个时间单位处使数据速率(即,保持许多要确认分组的拥塞窗口大小)加倍来使吞吐量最大化。当数据速率变得对于链路来说太高时,数据分组可能因为分组在网络中丢失而超时并且可以将数据速率(即,窗口大小)减小至1。可以保存最大窗口大小并且新的迭代开始。可以再次使窗口大小加倍直到它达到前一次迭代的窗口大小一半为止。此后,可以递增窗口大小直到再次分组丢失并且下一次迭代重新开始为止。
为了适配该构思,可以与拥塞窗口大小类似地使用推测因子α,并且CPU工作负荷作为负荷指示器。每当评估CPU负荷时,可以调整α的值。为了准确地测量CPU负荷,中间件220可以重复地(例如在各个时间区间tspan之后)总计事件检测器为了事件处理需要的时间(即,tbusy),并且与其中中间件线程中的每一个空闲的时间tidle的和有关。可以根据下式确定结果得到的忙因子bc:
bc=1–tidle/tbusy (2)
例如,在累积空闲时间tidle=0.1秒并且累积忙时间tbusy=0.89秒情况下,结果得到的忙因子bc=1-(0.1s/0.89s)=0.888。这意味着可用资源的88.8%被使用并且系统资源的大约12%仍然是可用的(假定其它过程不干扰EBS)。忙因子随着α的渐减值而增长。为了调整α,可以针对bc为下目标值(bl)和上目标值(bu)指定区间[bl;bu]。如果忙因子bc降到bl以下,则根据一些实施方式,CPU时间是可用的并且可以减少推测量α。如果忙因子高于bu,则CPU时间是临界的并且可以将α增加或设定为其初始值α0。也就是说,可以基于执行方法500的至少一个计算节点的负荷来调整推测量α,使得可以随着计算节点的渐减负荷而减少推测量α,并且反之亦然。可以再次减少推测量α直到它的值将被设定为小于(1-_αbest)/2为止。从那时起α可能不再迅速地减少以便慢慢地接近目标区间。也就是说,从初始值开始,可以按照第一速度减少推测量α以达到预定阈值。在已达到所述阈值之后,可以按照低于第一速度的第二速度进一步减少推测量α,直到达到了负荷的目标区间位置。
例如,在实施方式中区间[bl=0.8;bu=0.9]工作相当好。然而,忙因子bc不仅受α的选择影响。在突发情形下或当事件检测器达到其状态空间的罕见区域或慢区域时,tbusy可以达到高峰。在这样的情况下,运行时α自适应可以通过将推测量α重置为其初始值α0并且因此通过向事件检测器提供更多计算资源来适当地起反应。
对于实施方式的评估,已经分析了来自安装在德国纽伦堡的主英式足球体育场中的实时定位系统(RTLS)的位置数据流。这个RTLS以针对球的每秒2.000个采样点以及针对选手和裁判员的每秒200个采样点同时跟踪144个发送器。各个选手已装配有四个发送器,各个发送器在他的肢体中的每一个处。传感器数据包括毫米绝对位置、速率、加速度和对于任何定位的定位质量(QoL)。英式足球需要这些采样速率。在针对球的每秒2.000个采样点以及多达150km/h的速率情况下两个相继位置可以间隔开超过2cm。诸如传球、二过一或射门的英式足球事件在零点几秒内发生。低等待时间是要求的,使得事件检测器的层次能够帮助人类观察者(例如,报告者)或应该平滑地跟随感兴趣事件的相机系统立即对系统的实况输出有效(例如,参见图1)。呈现了根据实施方式对来自体育场的位置数据流应用事件处理系统和算法的结果。所使用的计算平台包括通过1 Gbit全交换网络进行通信的各自装配有2.80GHz的IntelXeon E5560四核CPU和64GB的主存储器的数个64位Linux机器。为了测试已经组织了两个业余联赛足球俱乐部之间的测试比赛。已经根据实施方式通过EBS处理了来自发送器的传入位置流。
图12描绘了例示忙因子bc与时间的关系(参见曲线1202)并且例示(1-α)与时间的关系(参见曲线1202)的图。如可以看到的,EBS可以从在可改进的负荷区域中导致忙因子(bc≈0.6)的初始推测量α=1开始。将α从1减少至大约0.15将忙因子bc置于高效负荷区域中直到它在大约15秒处达到临界情形(bc≈0.9)。这个临界负荷情形导致α到α0=1的重置,从而将忙因子bc从大约0.9减少至0.6。再次,α值被从1减少至大约0.15,从而连续地改进负荷情形直到它再次达到其高效区域为止。
为了获得基准我们已经在分布式计算集群中重放了位置流数据。甚至处理中间件的实施方式(即,用于推测处理、发布/订阅管理等的方法)占大约9,000行C++代码。在那之上已经利用被用来检测超过1,500个不同的事件类型的超过15,000行C++代码实现了超过100个事件检测器。事件检测层次有15个级别,并且重放了来自英式足球比赛的事件流的片段。测试事件流的持续时间是100秒并且包括由事件检测器生成的875,000个位置事件加上25,000个更高级别事件(不包括过早事件或反应性事件)。数据流还并入一些突发情形。经处理的数据流的平均数据速率是2.27M字节/秒。
推测被添加来减小缓冲中间件的等待时间。为了评估我们使用来自记录测试比赛的位置数据流并且分析来自“传球”事件检测器的输入事件延迟。这个检测器订阅6个不同的事件类型并且检测(不成功的)传球事件。我们重放位置和事件数据流两次,参见图13。
纯动态K-slack缓冲(α=1,附图标记1302)在对错误进行排序时更新K并且最后在流重放结尾以526ms的检测等待时间结束。它针对100秒的平均等待时间是504ms。相比之下,动态α自适应的实施方式达到小得多的检测等待时间(附图标记1304)。起初,α从α0=1开始,并且在第一调整之后它导致大约300ms的等待时间。在重放期间它随着α自适应算法测量系统负荷而减小。当检测等待时间为64ms时α达到其最小值。在28(以及48和78)秒之后事件流突发,并且忙因子以及因此α这二者增加,导致检测等待时间的增加。此后,α再次降低使得等待时间接近其最小值。动态推测的受测试实施方式的平均等待时间是105ms。
这些结果表明推测缓冲技术的实施方式可以在运行时强烈地减小事件的检测等待时间。贯穿整个100秒CPU负荷是相当好的,并且在临界情形下由于α自适应已经避免了系统故障。因此,能够比在纯缓冲技术情况下早得多地(即,在给定示例中小于100ms而不是超过500ms)触发相机移动和聚焦。在这个测试中平均等待时间已减小了超过400ms,其是纯缓冲将引发的等待时间的5倍以上。其它事件检测器的等待时间表现类似。
在前一个测试中我们使用了包括动态α自适应的实施方式来达到最小检测等待时间。但是一直存在α由于高系统负荷而一直增加的罕见点。为了详细地讨论α自适应的性能,我们放大来自处理事件流的前35秒的结果,参见图14。
对于测试我们已将忙因子目标区间设定为bc=[0.8;0.9],并且α(线1402)从α0=1开始。每tspan=3秒α减半,并且结果忙因子bc(线1404)增加。在9秒之后bc在它位于bl=80%与bh=90%之间的目标区间中,并且α不再被调整并停留在α=0.125处。因此,在实施方式中0.1<α<1。
从那时起,忙因子bc和CPU负荷这二者在80%与90%之间摇摆。在附加14秒之后(在运行时的23秒之后)bc达到0.92(在那时的CPU负荷1406是在91%),并且α被立即设定为其初始值α0。结果bc 1404和CPU负荷1406这二者立即减少。从时间24开始α再次减半直到时间27为止。接下来,α将被设定为小于(1.0-0.125)/2=0.43(二等分线)并且从现在起每tspan仅减少了0.05。bc 1404和CPU负荷1406这二者再次增加到它们的在80%与90%之间的目标区间。
这些结果表明,利用α自适应算法的实施方式不仅减少α以高效地使用可用的CPU能力而且像例如在突发情形下一样,如果系统几乎过负荷则迅速地增加α(例如,将α适配为1)。因此,推测缓冲器可以避免系统故障并且能够迅速地吸收负荷突发。而且,bc和CPU负荷表现类似。因此,bc是用于通过中间件推导出CPU消耗的足够良好的指示器。
为了测量资源消耗已经重放了来自英式足球比赛的事件流片段四次。图15示出了结果得到的CPU负荷。我们记录了针对纯K-slack缓冲(α=1)的CPU负荷1502、具有静态α=0.5的半推测缓冲(线1504)、动态α自适应(线1506)和全推测处理(α=0,线1508)。纯缓冲1502展示了在整个100秒内低于45%的懒惰CPU负荷。这是因为事件被缓冲达足够长的时间并且事件检测器既不接收撤销事件,它们也未被询问以得到快照或得以复原。相比之下,全推测1508引起在整个100秒内高于90%的高CPU消耗。在基准中CPU消耗达到100%几次,并且随着事件缓冲器增加无序事件被处理,事件检测器限于无效状态,并且有时稍后同样缓冲器可能过运行。输入事件流太高并且仍然需要被处理的事件的数量稳定地增加。静态α=0.5达到好得多的性能(参见附图标记1504)。CPU负荷对于纯缓冲方法1502来说较高但是不和全推测缓冲器1508的CPU负荷一样临界并且被用来减小事件检测器的检测等待时间。但是最好的结果是通过动态推测1506(即变化α)的实施方式实现的。CPU负荷从不是临界的而是在流重放的整个100秒期间被高效地使用。因此,可用资源被高效地用来通过自适应地增加推测的程度而减小检测等待时间。实施方式还可以降低推测的程度以避免系统故障并且因此总是最佳地使推测适于任何情形。
对于两个撤销技术的评估,我们重放来自英式足球比赛的真实事件流并且记录在整个比赛(即,90分钟)期间过早地生成和撤销的事件的数量。
我们记录了来自被用来检测选手击中球的事件检测器的撤销事件的数量,并且重放事件流两次并在两个撤销技术之间切换。我们还使用动态α自适应。全撤销撤销5,623个球击中事件,然而按需撤销仅撤销735个事件。总共,全撤销的引入撤销级联跨越检测器层次撤销了总共117,600个事件,然而按需撤销仅撤销了12,300个事件。
而且,尽管计算时间通过比较快照和过早地生成的事件对于按需撤销来说增加,但是全撤销的α值(0.56)比按需撤销的α值(0.49)高13%,这意味着按需撤销可以对于给定检测器产生更好的性能。
但是还存在如果使用了全撤销则执行更好的罕见事件检测器。例如,被用来检测传球的检测器几乎针对它接收到的任何事件改变它的状态。按需撤销然后未必花费时间来比较快照和生成的事件。该时间可能一直被用于全撤销的撤销级联的处理。对于该检测器必须无论如何完成撤销工作的大部分。这里,全撤销撤销819个事件然而按需撤销撤销792个事件。这个最小改进不补偿被用于撤销中止的所引入的CPU消耗。
存储器消耗还在三个不同的操作模式之间不同。在纯缓冲α=1情况下,我们仅需要缓冲事件而不缓冲快照。缓冲器的平均存储器消耗在事件流处理的25秒期间仅为1,420千字节。半推测α=0.5和动态推测处理(可变α)这二者还需要存储事件检测器在过早地发出事件时的快照。事件检测器的状态具有152个字节的平均大小。半推测处理的平均缓冲器大小是7,220千字节并且动态推测处理缓冲器的平均大小是13,350千字节。
实施方式甚至在无序事件为主下也可以实现高数据速率传感器流的可靠的低等待时间分布式事件处理。可以测量事件延迟,中间件可以在运行时适配它本身并且使事件推迟仅可能长,针对任何应用特定事件检测器按顺序放置传入事件流。事件延迟的先验知识是不需要的。例如,实施方式在英式足球应用中在RTLS上很好地工作。在等待时间减小方面的性能受clk信号的推导限制。如果时钟更新是不常发生的,则事件的检测等待时间增加。
本描述和图仅仅例示了本发明的原理。因此应当了解,本领域技术人员将能够设计各种布置,所述各种布置尽管在本文中未明确地描述或示出,但是具体实现本发明的原理并且被包括在其精神和范围内。此外,本文所记载的所有示例原理上旨在明确地为仅用于教学目的以帮助读者理解本发明的原理和由发明人贡献来促进本领域的构思,并且将被解释为不限于这样具体地记载的示例和条件。而且,本文中记载本发明的原理、方面和实施方式及其特定示例的所有声明旨在包含其等同物。
表示为“用于...的手段”的功能块(执行特定功能)应该被理解为包括分别被适配、配置或可操作用于执行特定功能的电路的功能块。从而,“用于某事的手段”也可以被理解为“被适配、配置或可操作来做某事的手段”。被适配用于执行特定功能的手段因此不暗示这样的手段必定在执行所述功能(在给定时刻)。
包括任何功能块、图所示的各种元素的功能可以通过利用专用硬件(例如处理器)以及能够与适当的软件相关联地执行软件的硬件来提供。当由处理器提供时,功能可以由单个专用处理器、由单个共享处理器或者由多个单独的处理器(其中的一些可以被共享)来提供。而且,术语“处理器”或“控制器”的显式使用不应该被解释为排他地指代能够执行软件的硬件,并且可以隐式地包括但不限于数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储装置。还可以包括其它硬件(常规的和/或定制的)。
本领域技术人员应该了解,本文的任何框图表示具体实现本发明的原理的例示性电路的概念图。类似地,应当了解,任何流程图、流图、状态转变图、伪代码等表示可以基本上用计算机可读介质表示并且由计算机或处理器如此执行的各种过程,而无论是否显式地示出了这样的计算机或处理器。
此外,随附权利要求从而被并入详细描述,其中各个权利要求都可以要求独立作为单独的实施方式。虽然各个权利要求可以要求独立作为单独的实施方式,但是应当注意-尽管从属权利要求可以在权利要求中指代与一个或更多个其它权利要求的特定组合-其它实施方式还可以包括从属权利要求与各个其它从属权利要求的主题的组合。除非陈述了特定组合不是有意的,否则在本文中提出这样的组合。此外,即使未直接使得这个权利要求与独立权利要求无关,也旨在还包括任何其它独立权利要求的权利要求的特征。
还应当注意,在本说明书中或在权利要求中公开的方法可以由具有用于执行这些方法的相应步骤中的每一个的手段的装置来实现。
此外,应当理解,本说明书或权利要求中所公开的多个步骤或功能的公开可能不被解释为在特定顺序内。因此,除非这样的步骤或功能由于技术原因而是不可互换的,否则多个步骤或功能的公开将不将这些限制于特定顺序。
此外,在一些实施方式中,单个步骤可以包括或者可以被分解为多个子步骤。除非显式地排除,否则这样的子步骤可以被包括并且是这单个步骤的公开的一部分。
Claims (15)
1.一种用于针对事件检测器(210)对包括无序事件的事件流(204)的事件进行排序的方法(500),其中,所述事件使单独的事件发生时间(ei.ts)以及多达K个时间单位的最大延迟的单独的事件传播延迟与所述事件相关联,该方法包括以下步骤:
向事件缓冲器(222;226)提供(502)从所述事件流接收到的事件;
根据所述事件缓冲器(222;226)中接收到的事件的相应的发生时间对所述事件缓冲器(222;226)中接收到的事件进行排序(504)以获得有序事件;
在最早时刻clk将具有事件发生时间ei.ts的有序事件(ei)从所述事件缓冲器(222;226)推测地转发(506)到所述事件检测器(210),使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量;以及
在所述事件检测器(210)处,检测事件并且基于至少一个推测地转发的事件而设定所检测到的事件的事件发生时间。
2.根据权利要求1所述的方法(500),其中,基于执行所述方法的计算节点的负荷调整所述推测量α,使得α随着所述计算节点的负荷减小而增加,并且反之亦然。
3.根据前述权利要求中的一项所述的方法(500),其中,推测地转发(506)有序事件包括将到最后推测地转发的事件的指针(AEP)保持在所述事件缓冲器(222;226)中。
4.根据前述权利要求中的一项所述的方法(500),该方法包括以下步骤:
如果新近接收到的事件的事件发生时间小于所述最后推测地转发的事件的事件发生时间,则将撤销消息转发到所述事件检测器(210)以用于对于所述事件检测器和/或布置在所述事件检测器(210)下游的更高级别事件检测器启动事件撤销过程。
5.根据权利要求4所述的方法(500),其中,转发所述撤销消息的步骤包括以下步骤:将所述新近接收到的事件转发到所述事件检测器(210)并且再次将先前推测地转发的事件转发到所述事件检测器(210)。
6.根据权利要求4或5所述的方法(500),其中,转发所述撤销消息导致将所述事件检测器(210)的推测内部状态回复到在所述事件检测器(210)已处理所述最后推测地转发的事件之前的状态。
7.根据权利要求6所述的方法(500),其中,回复所述事件检测器(210)的所述推测状态是基于所述事件检测器(210)的响应于所述最后推测地转发的事件先前已被提供给所述事件缓冲器(222;226)的所存储的快照状态的。
8.根据权利要求7所述的方法(500),其中,所述事件检测器(210)的所述快照状态被插入到所述事件缓冲器(222;226)中作为具有与所述最后推测地转发的事件相同的发生时间的异常事件(es)。
9.根据权利要求7所述的方法(500),其中,转发所述撤销消息的步骤包括以下步骤:将所存储的快照状态、所述新近接收到的事件和所述先前推测地转发的事件转发到所述事件检测器。
10.根据权利要求9所述的方法(500),其中,转发所述撤销消息的步骤还包括以下步骤:
在处理所述新近接收到的事件时验证所存储的快照状态是否等于所述事件检测器(210)的新的内部状态;以及
如果所述验证是肯定的,则对于更高级别事件检测器中止事件重放过程。
11.根据权利要求9或10所述的方法(500),其中,转发所述撤销消息的步骤还包括以下步骤:
验证由所述事件检测器在处理所述撤销消息时生成的输出事件是否等于已经响应于所述最后推测地转发的事件而生成的先前生成的输出事件;以及
如果所述验证是肯定的,则对于更高级别事件检测器中止事件重放过程。
12.根据前述权利要求中的一项所述的方法(500),其中,在时刻clk从所述事件缓冲器(222;226)中删除具有满足ei.ts+K≤clk的事件发生时间ei.ts的事件ei。
13.根据前述权利要求中的一项所述的方法(500),其中,事件是直接基于地理定位系统的传感器数据的简单事件或基于简单事件或复合事件的复合事件。
14.一种计算机程序,该计算机程序具有用于当在计算机或处理器上执行所述计算机程序时执行根据前述权利要求中的一项所述的方法(500)的程序代码。
15.一种用于针对事件检测器(210)对包括无序事件的事件流(204)的事件进行排序的设备(226),其中,所述事件使单独的事件发生时间以及多达K个时间单位的最大延迟的单独的事件传播延迟与所述事件相关联,该设备(226)包括:
输入端,该输入端被配置为向事件缓冲器(222)提供从所述事件流(204)接收到的事件;
排序器,该排序器被配置为根据所述事件缓冲器(222)中接收到的事件的相应的发生时间对所述事件缓冲器(222)中接收到的事件进行排序以获得有序事件;以及
输出端,该输出端被配置为在最早时刻clk将具有事件发生时间ei.ts的有序事件ei从所述事件缓冲器(222)推测地转发到所述事件检测器(210),使得ei.ts+α*K≤clk,其中,α表示其中0<α<1的推测量,并且
所述事件检测器(210)被配置为检测事件并且基于至少一个推测地转发的事件而设定所检测到的事件的事件发生时间。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13153525.4 | 2013-01-31 | ||
EP13153525.4A EP2763041A1 (en) | 2013-01-31 | 2013-01-31 | Apparatus, method and computer program for processing out-of-order events |
PCT/EP2014/051538 WO2014118132A1 (en) | 2013-01-31 | 2014-01-27 | Apparatus, method and computer program for processing out-of-order events |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104956333A true CN104956333A (zh) | 2015-09-30 |
CN104956333B CN104956333B (zh) | 2018-10-12 |
Family
ID=47683593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480006997.XA Expired - Fee Related CN104956333B (zh) | 2013-01-31 | 2014-01-27 | 处理无序事件的设备、方法和计算机程序 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9678811B2 (zh) |
EP (2) | EP2763041A1 (zh) |
JP (1) | JP6116707B2 (zh) |
CN (1) | CN104956333B (zh) |
AU (1) | AU2014211579B2 (zh) |
CA (1) | CA2896853C (zh) |
WO (1) | WO2014118132A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599005A (zh) * | 2015-10-20 | 2017-04-26 | 阿里巴巴集团控股有限公司 | 一种数据归档方法及装置 |
CN108353020A (zh) * | 2015-10-16 | 2018-07-31 | 萨托里环球有限责任公司 | 用于传送消息数据的系统和方法 |
CN108475219A (zh) * | 2016-01-06 | 2018-08-31 | 谷歌有限责任公司 | 分层定位事件分派 |
CN110062922A (zh) * | 2017-09-21 | 2019-07-26 | 华为技术有限公司 | 流处理系统和方法 |
CN110998541A (zh) * | 2017-08-03 | 2020-04-10 | 微软技术许可有限责任公司 | 调试器中的代码的试验性执行 |
CN111050060A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种应用于终端设备的对焦方法、装置和终端设备 |
CN111149082A (zh) * | 2017-11-01 | 2020-05-12 | 西部数据技术公司 | 用于为移动装置自动备份数据和充电的存储器站点 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423468B2 (en) | 2015-02-10 | 2019-09-24 | Red Hat, Inc. | Complex event processing using pseudo-clock |
US9891966B2 (en) | 2015-02-10 | 2018-02-13 | Red Hat, Inc. | Idempotent mode of executing commands triggered by complex event processing |
US10311061B2 (en) * | 2015-11-06 | 2019-06-04 | Sap Se | Quality-driven processing of out-of-order data streams |
US10334011B2 (en) * | 2016-06-13 | 2019-06-25 | Microsoft Technology Licensing, Llc | Efficient sorting for a stream processing engine |
US10530823B2 (en) | 2016-08-10 | 2020-01-07 | At&T Intellectual Property I, L.P. | Network stream processing to ensuring a guarantee that each record is accounted for exactly once |
US20180052858A1 (en) * | 2016-08-16 | 2018-02-22 | Netscout Systems Texas, Llc | Methods and procedures for timestamp-based indexing of items in real-time storage |
US10389764B2 (en) * | 2016-10-18 | 2019-08-20 | At&T Intellectual Property I, L.P. | Network data source time management for data streaming processing system |
US10628240B2 (en) * | 2016-12-15 | 2020-04-21 | Ab Initio Technology Llc | Heterogeneous event queue |
US11016824B1 (en) * | 2017-06-12 | 2021-05-25 | Pure Storage, Inc. | Event identification with out-of-order reporting in a cloud-based environment |
CN110019398B (zh) * | 2017-12-14 | 2022-12-02 | 北京京东尚科信息技术有限公司 | 用于输出数据的方法和装置 |
US11113270B2 (en) | 2019-01-24 | 2021-09-07 | EMC IP Holding Company LLC | Storing a non-ordered associative array of pairs using an append-only storage medium |
CN110297716B (zh) * | 2019-05-29 | 2021-10-01 | 联动优势电子商务有限公司 | 一种网络交易方法及装置 |
US11599546B2 (en) | 2020-05-01 | 2023-03-07 | EMC IP Holding Company LLC | Stream browser for data streams |
US11604759B2 (en) | 2020-05-01 | 2023-03-14 | EMC IP Holding Company LLC | Retention management for data streams |
US11340834B2 (en) | 2020-05-22 | 2022-05-24 | EMC IP Holding Company LLC | Scaling of an ordered event stream |
US11163484B1 (en) | 2020-05-27 | 2021-11-02 | EMC IP Holding Company LLC | Reporting time progress on events written to a stream storage system |
US11360992B2 (en) | 2020-06-29 | 2022-06-14 | EMC IP Holding Company LLC | Watermarking of events of an ordered event stream |
US11599420B2 (en) | 2020-07-30 | 2023-03-07 | EMC IP Holding Company LLC | Ordered event stream event retention |
US11340792B2 (en) | 2020-07-30 | 2022-05-24 | EMC IP Holding Company LLC | Ordered event stream merging |
US11513871B2 (en) | 2020-09-30 | 2022-11-29 | EMC IP Holding Company LLC | Employing triggered retention in an ordered event stream storage system |
US11354444B2 (en) | 2020-09-30 | 2022-06-07 | EMC IP Holding Company LLC | Access control for an ordered event stream storage system |
US11755555B2 (en) | 2020-10-06 | 2023-09-12 | EMC IP Holding Company LLC | Storing an ordered associative array of pairs using an append-only storage medium |
US11323497B2 (en) | 2020-10-07 | 2022-05-03 | EMC IP Holding Company LLC | Expiration of data streams for application programs in a streaming data storage platform |
US11599293B2 (en) | 2020-10-14 | 2023-03-07 | EMC IP Holding Company LLC | Consistent data stream replication and reconstruction in a streaming data storage platform |
US11354054B2 (en) | 2020-10-28 | 2022-06-07 | EMC IP Holding Company LLC | Compaction via an event reference in an ordered event stream storage system |
US11347568B1 (en) | 2020-12-18 | 2022-05-31 | EMC IP Holding Company LLC | Conditional appends in an ordered event stream storage system |
US11816065B2 (en) | 2021-01-11 | 2023-11-14 | EMC IP Holding Company LLC | Event level retention management for data streams |
US11526297B2 (en) | 2021-01-19 | 2022-12-13 | EMC IP Holding Company LLC | Framed event access in an ordered event stream storage system |
US11194638B1 (en) * | 2021-03-12 | 2021-12-07 | EMC IP Holding Company LLC | Deferred scaling of an ordered event stream |
US11740828B2 (en) | 2021-04-06 | 2023-08-29 | EMC IP Holding Company LLC | Data expiration for stream storages |
US11513714B2 (en) | 2021-04-22 | 2022-11-29 | EMC IP Holding Company LLC | Migration of legacy data into an ordered event stream |
US11954537B2 (en) | 2021-04-22 | 2024-04-09 | EMC IP Holding Company LLC | Information-unit based scaling of an ordered event stream |
US11681460B2 (en) | 2021-06-03 | 2023-06-20 | EMC IP Holding Company LLC | Scaling of an ordered event stream based on a writer group characteristic |
US11735282B2 (en) | 2021-07-22 | 2023-08-22 | EMC IP Holding Company LLC | Test data verification for an ordered event stream storage system |
US11971850B2 (en) | 2021-10-15 | 2024-04-30 | EMC IP Holding Company LLC | Demoted data retention via a tiered ordered event stream data storage system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273772A1 (en) * | 1999-12-21 | 2005-12-08 | Nicholas Matsakis | Method and apparatus of streaming data transformation using code generator and translator |
CN1882915A (zh) * | 2003-12-05 | 2006-12-20 | 飞思卡尔半导体公司 | 在具有多个时间域的系统中对事件进行时间排序的设备和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8315990B2 (en) * | 2007-11-08 | 2012-11-20 | Microsoft Corporation | Consistency sensitive streaming operators |
US8423516B2 (en) * | 2010-09-15 | 2013-04-16 | International Business Machines Corporation | Speculative execution in a real-time data environment |
AU2011380288B2 (en) * | 2011-10-31 | 2015-09-17 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Apparatus and method for transferring event detector processes |
-
2013
- 2013-01-31 EP EP13153525.4A patent/EP2763041A1/en not_active Withdrawn
-
2014
- 2014-01-27 AU AU2014211579A patent/AU2014211579B2/en not_active Ceased
- 2014-01-27 EP EP14701541.6A patent/EP2951692A1/en not_active Withdrawn
- 2014-01-27 CN CN201480006997.XA patent/CN104956333B/zh not_active Expired - Fee Related
- 2014-01-27 JP JP2015555668A patent/JP6116707B2/ja active Active
- 2014-01-27 WO PCT/EP2014/051538 patent/WO2014118132A1/en active Application Filing
- 2014-01-27 CA CA2896853A patent/CA2896853C/en not_active Expired - Fee Related
- 2014-01-27 US US14/763,685 patent/US9678811B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273772A1 (en) * | 1999-12-21 | 2005-12-08 | Nicholas Matsakis | Method and apparatus of streaming data transformation using code generator and translator |
CN1882915A (zh) * | 2003-12-05 | 2006-12-20 | 飞思卡尔半导体公司 | 在具有多个时间域的系统中对事件进行时间排序的设备和方法 |
Non-Patent Citations (1)
Title |
---|
MO LIU 等: "Sequence pattern query processing over out-of-order event streams", 《IEEE INTERNATIONAL CONFERENCE ON DATA ENGINEERING》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108353020A (zh) * | 2015-10-16 | 2018-07-31 | 萨托里环球有限责任公司 | 用于传送消息数据的系统和方法 |
CN106599005A (zh) * | 2015-10-20 | 2017-04-26 | 阿里巴巴集团控股有限公司 | 一种数据归档方法及装置 |
CN108475219A (zh) * | 2016-01-06 | 2018-08-31 | 谷歌有限责任公司 | 分层定位事件分派 |
CN110998541A (zh) * | 2017-08-03 | 2020-04-10 | 微软技术许可有限责任公司 | 调试器中的代码的试验性执行 |
CN110998541B (zh) * | 2017-08-03 | 2023-11-17 | 微软技术许可有限责任公司 | 调试器中的代码的试验性执行 |
CN110062922A (zh) * | 2017-09-21 | 2019-07-26 | 华为技术有限公司 | 流处理系统和方法 |
CN110062922B (zh) * | 2017-09-21 | 2021-12-14 | 华为技术有限公司 | 流处理系统和方法 |
US11487764B2 (en) | 2017-09-21 | 2022-11-01 | Huawei Cloud Computing Technologies Co., Ltd. | System and method for stream processing |
CN111149082A (zh) * | 2017-11-01 | 2020-05-12 | 西部数据技术公司 | 用于为移动装置自动备份数据和充电的存储器站点 |
CN111050060A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种应用于终端设备的对焦方法、装置和终端设备 |
CN111050060B (zh) * | 2018-10-12 | 2021-08-31 | 华为技术有限公司 | 一种应用于终端设备的对焦方法、装置和终端设备 |
US11363187B2 (en) | 2018-10-12 | 2022-06-14 | Huawei Technologies Co., Ltd. | Focusing method and apparatus applied to terminal device, and terminal device |
Also Published As
Publication number | Publication date |
---|---|
JP6116707B2 (ja) | 2017-04-19 |
WO2014118132A1 (en) | 2014-08-07 |
JP2016509730A (ja) | 2016-03-31 |
EP2763041A1 (en) | 2014-08-06 |
US9678811B2 (en) | 2017-06-13 |
CA2896853C (en) | 2018-03-20 |
AU2014211579B2 (en) | 2016-07-07 |
CA2896853A1 (en) | 2014-08-07 |
EP2951692A1 (en) | 2015-12-09 |
CN104956333B (zh) | 2018-10-12 |
US20150363245A1 (en) | 2015-12-17 |
AU2014211579A1 (en) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104956333A (zh) | 处理无序事件的设备、方法和计算机程序 | |
EP2732600B1 (en) | Apparatus and method for synchronizing events | |
Mutschler et al. | Distributed low-latency out-of-order event processing for high data rate sensor streams | |
US9954932B2 (en) | Apparatus and method for transferring event detector processes | |
US9059935B2 (en) | Dynamic adaptations for network delays during complex event processing | |
US11544321B2 (en) | Scalable architectures for reference signature matching and updating | |
Mutschler et al. | Reliable speculative processing of out-of-order event streams in generic publish/subscribe middlewares | |
Mutschler et al. | Adaptive speculative processing of out-of-order event streams | |
US9645224B2 (en) | Processing of geo-spatial athletics sensor data | |
CN108964822B (zh) | 一种多方案并行获取网络时间的方法及系统 | |
CN112954413A (zh) | 一种直播列表更新方法、装置、服务器及存储介质 | |
CN110309141B (zh) | 一种直播间数据量统计方法、存储介质、设备及系统 | |
US20230060199A1 (en) | Feature identification method for training of ai model | |
CN115695254A (zh) | 一种网络遥测方法、系统、存储介质及电子设备 | |
Rajendran | Complex event processing over out-of-order event streams | |
Karjee et al. | Spatio-Temporal Data Correlation with Adaptive Strategies in Wireless Sensor Networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Munich, Germany Applicant after: FRAUNHOFER-GESELLSCHAFT ZUR FORDERUNG DER ANGEWANDTEN FORSCHUNG E. V. Address before: Munich, Germany Applicant before: Franhofer transportation Application Research Co.,Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181012 Termination date: 20220127 |