CN112805978A - 针对事件流处理的增强型锚协议 - Google Patents

针对事件流处理的增强型锚协议 Download PDF

Info

Publication number
CN112805978A
CN112805978A CN201980063775.4A CN201980063775A CN112805978A CN 112805978 A CN112805978 A CN 112805978A CN 201980063775 A CN201980063775 A CN 201980063775A CN 112805978 A CN112805978 A CN 112805978A
Authority
CN
China
Prior art keywords
anchor
request
node
data
requests
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
Application number
CN201980063775.4A
Other languages
English (en)
Other versions
CN112805978B (zh
Inventor
A·阿尔佩罗维克
B·舒尔曼
陈忠
L·诺维克
K·佐赖恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN112805978A publication Critical patent/CN112805978A/zh
Application granted granted Critical
Publication of CN112805978B publication Critical patent/CN112805978B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本文中描述了用于针对流处理的启动和/或恢复的系统和方法。在启动阶段期间:各自标识特定时间的(多个)启动锚请求被累积,直到来自下游节点的(多个)请求未决。所累积的(多个)启动锚请求的最小时间被确定。如果处理系统是输入节点,则与所确定的最小时间相关联的锚被生成。否则,标识所确定的最小时间的启动锚请求被提供给上游节点。一旦与所确定的最小时间相关联的锚被接收到(或生成),锚就响应于来自下游节点的、针对所确定的最小值的所轮询的启动锚请求锚而被提供。在恢复阶段期间,针对由两个特定锚界定的成批数据的异步请求根据被存储在有序锚集合中的信息而被执行。

Description

针对事件流处理的增强型锚协议
背景技术
流处理允许来自多个源的多个数据流被实时处理。“流传输”或流处理是指接收数据流,由多个处理器处理数据,并且将处理后的数据作为单个流向回流传输。
发明内容
本文中描述了一种用于使用锚的流处理的系统,该系统包括:包括处理器和其上存储有计算机可执行指令的存储器的处理系统,该计算机可执行指令在由处理器执行时,使得处理系统在启动阶段期间:在处理系统处,累积一个或多个启动锚请求,直到来自被耦合到处理系统的下游节点的请求未决,其中每个启动锚请求标识特定时间;确定所累积的一个或多个启动锚请求的最小时间;如果处理系统是输入节点,则生成与所确定的最小时间相关联的锚;如果处理系统不是输入节点,则:向上游节点提供标识所确定的最小时间的启动锚请求;接收与所确定的最小时间相关联的锚;以及响应于来自下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。
在一些实施例中,重复地执行该计算机可执行指令,直到不再有未决的启动锚请求并且数据请求已经从被耦合到处理系统的下游节点被接收到,该数据请求指示启动阶段的完成。在一些实施例中,在启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与有序锚集合对应的数据的请求已经被完成。
提供本发明内容以便以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1是示出了用于使用锚的流处理的系统的功能框图。
图2是使用锚的流处理的一种方法的流程图。
图3是使用锚的流处理的另一方法的流程图。
图4是示出示例性计算系统的功能框图。
具体实施方式
现在参考附图描述与使用锚的流处理的启动和/或恢复有关的各种技术,其中贯穿全文,相同的附图标记用于指代相同的元素。在下面的描述中,出于解释的目的,阐述了很多具体细节以便提供对一个或多个方面的透彻理解。然而,很清楚的是,可以在没有这些具体细节的情况中实践这样的(多个)方面。在其他情况中,公知的结构和设备以框图形式示出,以便于描述一个或多个方面。此外,应当理解,被描述为由某些系统组件执行的功能可以由多个组件执行。类似地,例如,一个组件可以被配置为执行被描述为由多个组件执行的功能。
本公开支持执行或被配置为执行与用于使用锚的流处理的启动和/或恢复有关的各种动作的各种产品和过程。以下是一个或多个示例性系统和方法。
本公开的各方面涉及用于使用锚的流处理的启动和/或恢复的技术问题。与解决该问题相关联的技术特征涉及:在启动阶段期间,累积(多个)启动锚请求,直到来自被耦合到处理系统的(多个)下游节点的(多个)请求未决,每个启动锚请求标识特定时间。确定所累积的(多个)启动锚请求的最小时间。如果处理系统是输入节点,则生成与确定的最小时间相关联的锚。如果处理系统不是输入节点,则向上游节点提供标识所确定的最小时间的启动锚请求,并且接收与所确定的最小时间相关联的锚。响应于来自下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。可以重复地执行启动阶段动作,直到不再有未决的启动锚请求并且数据请求已经从被耦合到处理系统的下游节点被接收到,该数据请求指示启动阶段的完成。在任何启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与有序锚集合对应的数据的请求已经被完成。因此,这些技术特征的各方面表现出以下技术效果:更高效且更有效地启动和/或恢复流处理系统的计算节点,例如,减少网络带宽和/或(多个)计算节点处理资源的消耗。
此外,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚得知,否则短语“X使用A或B”旨在表示任何自然的包括性排列。也就是说,以下任何一种情况都满足短语“X使用A或B”:X使用A;X使用B;X或X同时使用A和B。此外,除非另有说明或从上下文中清楚得知指向单数形式,否则本申请和所附权利要求书中使用的冠词“一个(a)”和“一个(an)”通常应当被解释为表示“一个或多个”。
如本文中使用的,术语“组件”和“系统”及其各种形式(例如,多个组件、多个系统、多个子系统等)旨在指代计算机相关实体,其是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在执行中的进程和/或线程中,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,如本文中使用的,术语“示例性”旨在表示用作某物的说明或示例,而并非旨在指示偏好。
在一些实施例中,本文中公开的技术与采用基于锚的技术的基于拉取的流处理结合使用,该基于锚的技术促进由(多个)输出节点进行一次且仅一次的处理。“锚”由输入节点生成(例如,与输出流的数据一起),并且描述输入节点的输出流中的一点,因此输出流中的(多个)其他数据单元位于任何给定锚之前或之后。为了讨论的目的,数据从输入节点的下游通过任何(多个)中间计算节点“流”到输出节点。数据请求从输出节点的上游通过任何(多个)中间计算节点发送到输入节点。流处理中的锚的用户在Zhong Chen等人的于2016年12月8日提交的名称为“Using Anchors for Reliable Stream Processing”的共同未决的美国专利申请14/732,416中有更完整的说明。
在正常操作期间,下游节点接收锚以及一批数据。由生成该批数据的输入节点生成的锚是输出流中反映该批数据中包括的最后一部分数据的指针。一旦下游节点(例如,输出节点)已经接收并且处理了该批数据,则下游节点可以从上一次接收/处理的成批数据的锚开始请求另一批数据(例如,指示下游节点已经处理数据直到锚)。
本文中描述了用于使用锚定的流处理的启动和/或恢复的系统和方法。每个处理节点(例如,(多个)输入节点、(多个)计算节点和/或(多个)输出节点)可以基于从(多个)下游节点(如果有)接收的(多个)未决请求来确定当前阶段(例如,启动、恢复、正常)。
在启动阶段期间,在特定计算节点处,累积(多个)启动锚请求,直到来自被耦合到特定计算节点的所有下游节点(例如,被直接连接到特定计算节点的所有(多个)下游节点)的启动锚请求未决。每个启动锚请求包括相关联的启动时间。此后,确定特定计算节点处的所累积的未决的启动锚请求的最小时间。如果出于特定计算节点上的处理目的而需要,则特定计算节点可以进一步修改所确定的最小时间(例如,基于用于促进特定计算节点的处理的时间窗口)。
如果特定计算节点是输入节点,则生成所确定的最小时间的锚。如果特定计算节点不是输入节点,则特定计算节点向下一上游计算节点提供启动锚请求。作为响应,特定计算节点接收所确定的最小时间的锚。
在针对所确定的最小时间生成锚或接收到锚之后,特定计算节点响应于所确定的最小时间的所轮询的启动锚请求而将锚提供给下游节点。在一些实施例中,特定节点可以重复该过程,直到不再有未决的启动锚请求。在一些实施例中,计算节点可以将锚和相关联的信息存储在有序锚集合(例如,日志)中,以在恢复阶段使用。
在恢复阶段,(多个)启动锚请求(如果有)已经得到满足。特定计算节点可以针对由所接收的有序锚集合(例如,日志)中的两个特定锚界定的一批数据执行(多个)异步请求,直到针对所接收的有序锚集合中的数据的(多个)请求已经被完成(例如,使用(多个)GetBatchUpto请求,如下所述)。
在一些实施例中,仅附上有序锚集合(例如,日志),从而使得不能在日志的两个条目之间添加条目(例如,(多个)锚)。在恢复阶段,日志记录的锚允许生成各批次,因为这些批次是先前生成的,例如,在特定节点进入恢复阶段之前,直到恢复阶段已经完成并且新的一批(成批)数据被生成。
在一些实施例中,针对每个节点,以严格增长顺序生成锚。因此,由特定节点生成的新锚大于(例如,表示流中的后一点)由特定输入节点先前生成的任何锚。这可以允许系统将锚存储在日志中,并且在恢复期间按照日志中的出现顺序重播锚。以这种方式,每个节点(例如,输入节点、计算节点和/或输出节点)可以独立于(多个)其他节点进行恢复,而不会在(多个)上游节点中产生级联故障。
参考图1,示出了用于使用锚100的流处理的系统。在一些实施例中,系统100可以用于流处理的启动和/或恢复。系统100包括计算节点110和输出节点120。出于说明而非限制的目的,系统100被描述为具有被耦合到一个输出节点120的一个计算节点110。然而,在一些实施例中,系统100可以包括多个计算节点110,每个计算节点110被耦合到一个或多个输出节点120。在一些实施例中,特定输出节点120可以被耦合到多个计算节点110。
计算节点110和输出节点120利用描述输出流中的特定点的锚,从而使得输出流中的其他数据单元在任何特定锚之前或之后。锚由被称为输入节点的特定类型的计算节点110生成。锚是输出流中由输入节点产生的指针,并且反映伴随锚的一批数据(例如,流)中包括的最后一部分数据。在一些实施例中,锚可以是锚的列表。在一些实施例中,锚可以是任何嵌套级别的锚列表的列表。
在一些实施例中,非输入节点(例如,除了输入节点和输出节点120以外的计算节点110)不需要了解锚或锚如何由输入节点生成。非输入节点负责能够确定锚的可比性。即,特定锚是否指示输出流中的事件或点发生在另一锚之前,特定锚是否等于另一锚,或者特定锚是否指示输出流中的事件或点发生在另一锚之后。
下游节点可以使用上游节点的锚来拉取数据。如果上游节点不可用(例如,上游节点发生故障等),则由下游节点在重启之后提供的锚将向上游节点准确地告知下游节点尚未处理的数据。同样,如果下游节点不可用,则下游节点仅需要在恢复时读取其自身状态,并且使用其最后使用的锚继续从上游节点拉取数据。
计算节点110包括启动阶段组件130、恢复阶段组件140和正常阶段组件150。在正常操作期间,非输入计算节点110的正常阶段组件150可以将特定锚定的获取批次请求(getbatch request)转发给(多个)上游处理器,接收锚定批次,并且将所接收的锚定批次提供给请求节点。
针对作为输入节点的计算节点110,正常阶段组件150还可以包括锚生成组件160和流处理组件170。流处理组件160处理从(多个)数据流接收的数据(例如,(多个)数据源(未示出)的数据)以产生输出流。在一些实施例中,数据可以是实时接收的实时数据或所记录的实时数据。在一些实施例中,(多个)数据流中的每个数据单元可以与时间相关联。在一些实施例中,与数据相关联的时间可以是生成数据的时间。在一些实施例中,与数据相关联的时间可以是接收到数据的时间。在一些实施例中,与数据相关联的时间可以是发送数据的时间。锚生成组件160可以生成描述输入节点的输出流中的一点的锚,从而使得输出流中的(多个)其他数据单元(例如,批次)在任何给定锚之前或之后。
输出节点120包括数据处理组件180和锚存储库190。输出节点120接收(多个)锚(多个)和数据流,经由数据处理组件180处理(多个)数据流。输出节点120还将与最近接收的数据流相关联(例如,与其一起接收)的锚存储在锚存储库190中,并且将它们存储。流处理可以基于时间,其中时间表示与诸如但不限于事件等数据单元相关联的在逻辑上有意义的时间值。时间可以用于发起处理以返回所请求的结果。例如,当数据流包括事件流时,可以使用锚将数据流划分为两个部分:位于锚之前的事件和位于锚之后的事件。
在正常操作(例如,正常阶段),输出节点120可以将当前锚(所接收的最后的锚)存储在锚存储库190中,从而使得当接收到继续请求时,输出节点120可以使用到输出流中(例如,被存储在锚存储库190中)的当前锚来访问输出数据流中未发送的结果,而不是重新发送一些数据。这实现了在流中使用锚的一次且仅一次方面。因此,输出节点120使用锚来控制向其发送什么数据。
在一些实施例中,锚可以涉及输入数据流的物理方面,诸如但不限于文件中的偏移。文件中的偏移可以指示已经读取和/或处理了文件的多少个字节。尽管这些信息在逻辑上不是有意义的信息,但可以使得输入节点能够轻松地从中断的确切位置开始恢复流处理。
锚可以用于基于时间(例如,用户指定时间)从数据流读取数据。该时间可以用于发起操作和/或生成所请求(例如,由用户)的结果。枚举数据单元(诸如但不限于给定锚(startAnchor)时数据流中的事件)的一种方法是使用诸如以下指令:GetBatch(AnchorstartAnchor、out Batch data、out Anchor newAnchor)。执行这样的指令可以从指定起始锚(startAnchor)返回一批事件(Batch data)。该操作还可以返回新锚(newAnchor),该新锚可以允许继续进行结果枚举(Batch data)。当执行该指令时,可以返回数据流中的所有事件E,从而使得startAnchor<E<newAnchor。如果事件E不在数据流中,但是事件E>startAnchor,则事件E>newAnchor。
启动阶段
在启动阶段期间,计算节点110的启动阶段组件130累积从(多个)下游节点接收的(多个)启动锚请求,直到来自被耦合到特定计算节点110的所有下游节点(例如,来自被直接连接到计算节点110的所有(多个)下游节点)的启动锚请求未决。每个启动锚请求包括相关联的启动时间。此后,确定计算节点110处的所累积的未决的启动锚请求的最小时间。在一些实施例中,如果出于计算节点110上的加窗目的而需要,则启动阶段组件130可以进一步根据计算节点110处的加窗所需要的时间来修改所确定的最小时间。
如果计算节点110是输入节点,则生成所确定的最小时间的锚。如果计算节点110不是输入节点,则计算节点110向下一上游计算节点提供启动锚请求。作为响应,计算节点110异步地接收所确定的最小时间的锚。
在针对所确定的最小时间生成锚或接收到锚之后,计算节点110响应于所确定的最小时间的所轮询的启动锚请求而将锚提供给下游节点。在一些实施例中,计算节点110可以重复该启动阶段过程,直到不再有未决的启动锚请求并且预期没有未决的启动锚请求(例如,已经从紧接在下游的所有节点接收到(多个)获取批次请求)。
在一些实施例中,启动阶段组件130可以存储关于所请求的锚的信息,包括启动时间(例如,在启动锚请求中提供)、与特定启动时间对应的锚和请求存储在日志(journal)194中的有序集合(例如,按时间顺序排列的表)中的特定锚的节点。在一些实施例中,日志194可以由恢复阶段组件140使用。
恢复阶段
在恢复阶段开始之前,(多个)启动锚请求(如果有)已经得到满足。非输入计算节点110可以对由所接收的有序锚序列(例如,被存储在日志194中)中的两个特定锚界定的一批(成批)数据执行(多个)异步请求,直到针对所接收的有序锚序列中的数据的(多个)请求已经被完成(例如,使用(多个)GetBatchUpto请求)。例如,使用在日志194中组织的信息,恢复阶段组件140可以确定第一批数据对应于第一锚与第二锚之间的事件/时间。计算节点110可以向上游节点生成针对以第一锚开始并且以第二锚结束的数据的请求(GetBatchUpto(第一锚,第二锚))。上游节点可以响应于请求利用新锚返回数据,其中新锚小于或等于第二锚。计算节点110可以响应于针对以第一锚开始的数据的所轮询的请求而提供从上游节点接收的数据、和新锚。
计算节点110可以利用日志194对上游节点执行类似的请求,以顺序地取回相关的数据批次,直到耗尽日志中的条目,这表明恢复阶段被完成。
图2和图3示出了与用于使用锚的流处理的启动阶段和恢复阶段有关的示例性方法。虽然将方法示出和描述为按顺序执行的一系列动作,但是应当理解和了解,方法不受顺序的限制。例如,某些动作可以按照与本文中描述的顺序不同的顺序发生。另外,一个动作可以与另一动作同时发生。此外,在一些情况中,实现本文中描述的方法可能不需要所有动作。
此外,本文中描述的动作可以是可以由一个或多个处理器实现和/或被存储在一个或多个计算机可读介质上的计算机可执行指令。计算机可执行指令可以包括例程、子例程、程序、执行线程等。更进一步,方法的动作的结果可以被存储在计算机可读介质中,显示在显示设备上,等等。
参考图2,示出了使用锚200的流处理的方法。在一些实施例中,方法200由系统100在启动阶段期间执行。
在210处,在计算节点处,累积(多个)启动锚请求,直到从所连接的下游节点(例如,被连接到计算节点的所有(多个)下游节点)接收到请求。每个启动锚请求标识特定时间。在220处,确定所累积的(多个)锚请求的最小时间。
在230处,确定计算节点是否是输入节点。如果230处的确定为“是”,则在240处,生成与所确定的最小时间相关联的锚,并且处理在250处继续。如果230处的确定为“否”,则在260处,向上游节点提供标识所确定的最小时间的启动锚请求。在270处,接收与所确定的最小时间相关联的锚(例如,从上游节点)。
在250处,响应于来自特定下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。在280处,确定启动阶段是否完成。如果280处的确定为“否”,则处理在210处继续。如果280处的确定为“是”,则不进行进一步处理。
转到图3,示出了使用锚300的流处理的方法。在一些实施例中,方法300由系统100在恢复阶段执行。
在310处,使用以有序集合被组织的信息来标识与第一锚与第二锚之间的事件/时间对应的一批数据。在320处,生成以第一锚开始并且最多以第二锚结束的数据请求,并且将其提供给上游节点。
在330处,响应于该请求而接收数据和新锚(例如,从上游节点),该新锚小于或等于第二锚。在340处,响应于针对以第一锚开始的数据的所轮询的请求,提供从上游节点接收的数据、和新锚。在350处,确定恢复阶段是否完成。如果350处的确定为“否”,则处理在310处继续。如果350处的确定为“是”,则不进行进一步处理。
本文中描述了一种用于使用锚的流处理的系统,该系统包括:处理系统,包括处理器和其上存储有计算机可执行指令的存储器,该计算机可执行指令在由处理器执行时,处理系统:在启动阶段期间:在处理系统处,累积一个或多个启动锚请求,直到来自被耦合到处理系统的一个或多个下游节点的请求未决,其中每个启动锚请求标识特定时间;确定所累积的一个或多个启动锚请求的最小时间;如果处理系统是输入节点,则生成与所确定的最小时间相关联的锚;如果处理系统不是输入节点,则:向上游节点提供标识所确定的最小时间的启动锚请求;接收与所确定的最小时间相关联的锚;以及响应于来自下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。
该系统还可以包括其中该计算机可执行指令被重复地执行,直到不再有未决的启动锚请求并且数据请求已经从被耦合到处理系统的下游节点被接收到,该数据请求指示启动阶段的完成。该系统还可以包括其中在启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与有序锚集合对应的数据的请求已经被完成。
该系统还可以包括其中与成批数据中的一批或多批数据对应的数据被持久地存储在处理系统处并且响应于针对一批特定数据和特定锚的请求而被提供。该系统还可以包括其中针对数据的请求由特定节点在恢复阶段中以其他方式独立于处理系统生成。该系统还可以包括其中在启动阶段的完成之后,响应于针对一批特定数据和特定锚的请求,从被持久地存储在处理系统处的数据提供该一批特定数据和另一锚。
该系统还可以包括其中处理系统根据与由处理系统执行的处理相关联的时间窗口来修改所确定的最小时间。该系统还可以包括其中处理系统不是输入节点,并且处理系统被配置为确定另一锚是否描述输出流中在该锚之前、之后或等于该锚的一点。
本文中描述了一种使用锚的流处理的方法,该方法包括:在计算节点处,累积启动锚请求,直到从所连接的下游节点接收到请求,其中每个启动锚请求标识特定时间;确定所累积的锚请求的最小时间;如果计算节点是输入节点,则生成与所确定的最小时间相关联的锚;如果处理系统不是输入节点,则:向上游节点提供标识所确定的最小时间的启动锚请求;接收与所确定的最小时间相关联的锚;以及响应于来自特定下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。
该方法还可以包括重复地执行,直到不再有未决的启动锚请求并且数据请求已经从被连接到计算节点的下游节点被接收到,该数据请求指示启动阶段的完成。该方法还可以包括在启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与有序锚集合对应的数据的请求已经被完成。
该方法还可以包括其中与成批数据中的一个或多个数据对应的数据被持久地存储在处理系统处并且响应于针对一批特定数据和特定锚的请求而被提供。该方法还可以包括:在启动阶段的完成之后,响应于针对一批特定数据和特定锚的请求,从被持久地存储在计算节点处的数据提供该一批特定数据和另一锚。该方法还可以包括根据与由计算节点执行的处理相关联的时间窗口来修改所确定的最小时间。
该方法还可以包括:其中锚以严格增长顺序针对特定节点而被生成。该方法还可以包括其中计算节点不是输入节点,并且该方法还包括确定另一锚是否描述输出流中在该锚之前、之后或等于该锚的一点。
本文中描述的是一种存储计算机可读指令的计算机存储介质,该计算机可读指令在被执行时,使得计算设备:在启动阶段期间:累积一个或多个启动锚请求,直到来自被耦合到计算设备的下游节点的请求未决,其中每个启动锚请求标识特定时间;确定所累积的一个或多个启动锚请求的最小时间;如果计算设备是输入节点,则生成与所确定的最小时间相关联的锚;如果计算设备不是输入节点,则:向上游节点提供标识所确定的最小时间的;接收与所确定的最小时间相关联的锚;以及响应于来自下游节点的、针对所确定的最小值的所轮询的启动锚请求锚,提供锚。
该计算机存储介质可以存储另外的计算机可读指令,另外的计算机可读指令在被执行时,使得计算设备:重复地执行该指令,直到不再有未决的启动锚请求并且数据请求已经从被耦合到计算设备的下游节点接收到,该数据请求指示启动阶段的完成。
该计算机存储介质可以存储另外的计算机可读指令,另外的计算机可读指令在被执行时,使得计算设备:在启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与有序锚集合对应的数据的请求已经被完成。该计算机存储介质可以存储另外的计算机可读指令,另外的计算机可读指令在被执行时,使得计算设备:根据与由计算设备执行的处理相关联的时间窗口来修改所确定的最小时间。
参考图4,示出了示例通用处理系统、计算机或计算设备402(例如,移动电话、台式机、膝上型计算机、平板计算机、手表、服务器、手持式设备、可编程消费类电子产品或工业电子产品、机顶盒、游戏系统、计算节点等)。例如,计算设备402可以在用于使用锚100的流处理的系统(例如,计算节点110)中使用。
计算机402包括一个或多个处理器420、存储器430、系统总线440、(多个)大容量存储设备450和一个或多个接口组件470。系统总线440通信地耦合至少上述系统组成。然而,应当理解,计算机402以其最简单形式可以包括被耦合到存储器430的、执行被存储在存储器430中的各种计算机可执行动作、指令和/或组件的一个或多个处理器420。指令可以是例如用于实现被描述为由上述一个或多个组件执行的功能的指令或用于实现上述一种或多种方法的指令。
(多个)处理器420可以利用旨在执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现。通用处理器可以是微处理器,但可替代地,处理器可以是任何处理器、控制器、微控制器或状态机。(多个)处理器420还可以被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、与DSP核相结合的一个或多个微处理器、或者任何其他这样的配置。在一个实施例中,(多个)处理器420可以是图形处理器。
计算机402可以包括各种计算机可读介质或以其他方式与之交互,以便于控制计算机402以实现所要求保护的主题的一个或多个方面。计算机可读介质可以是可以由计算机402访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。计算机可读介质可以包括两种不同且互斥的类型,即,计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性的可移除和不可移除介质。计算机存储介质包括存储设备,诸如存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等)、磁存储设备(例如,硬盘、软盘、盒式磁带、磁带等)、光盘(例如,光碟(CD)、数字多功能磁盘(DVD)等)和固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、钥匙驱动器等)、或任何其他类似的介质,该存储设备存储(而不是传输或传送)计算机402可访问的期望信息。因此,计算机存储介质不包括调制数据信号、以及关于通信介质而描述的内容。
通信介质在诸如载波或其他传输机制等调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指具有以将信息编码为信号的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外和其他无线介质等无线介质。
存储器430和(多个)大容量存储设备450是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器430可以是易失性的(例如,RAM)、非易失性的(例如,ROM、闪存等)或这两者的某种组合。举例来说,基本输入/输出系统(BIOS)(包括诸如在启动期间在计算机402内的元件之间传递信息的基本例程)可以被存储在非易失性存储器中,而易失性存储器可以充当外部高速缓冲存储器以促进(多个)处理器420的处理等。
(多个)大容量存储设备450包括相对于存储器430而言用于存储大量数据的可移除/不可移除的易失性/非易失性计算机存储介质。例如,(多个)大容量存储设备450包括但不限于诸如磁盘或光盘驱动器、软盘驱动器、闪存、固态驱动器或记忆棒等一个或多个设备。
存储器430和(多个)大容量存储设备450可以包括或其中可以已经存储有操作系统460、一个或多个应用462、一个或多个程序模块464以及数据466。操作系统460用于控制和分配计算机402的资源。应用462包括系统和应用软件中的一者或两者,并且可以利用操作系统460通过被存储在存储器430和/或(多个)大容量存储设备450中的程序模块464和数据466而进行的对资源的管理来执行一个或多个动作。因此,应用462可以根据由此提供的逻辑将通用计算机402变成专用机器。
所要求保护的主题的全部或部分可以使用标准编程和/或工程技术产生软件、固件、硬件或其任何组合以控制计算机实现所公开的功能来实现。作为示例而非限制,系统100或其部分可以是应用462或形成应用462的一部分,并且包括被存储在存储器和/或(多个)大容量存储设备450中的在由一个或多个处理器420执行时可以实现其功能的一个或多个模块464和数据466。
根据一个特定实施例,(多个)处理器420可以对应于片上系统(SOC)或类似架构,将硬件和软件两者包括或换句话说集成在单个集成电路基板上。在此,(多个)处理器420可以包括一个或多个处理器以及至少类似于(多个)处理器420和存储器430的存储器等。常规处理器包括最少数量的硬件和软件,并且广泛依赖于外部硬件和软件。相比之下,处理器的SOC实现更为强大,因为它在其中嵌入了硬件和软件,从而可以在最小或不依赖于外部硬件和软件的情况中实现特定功能。例如,系统100和/或相关联的功能在SOC架构中可以被嵌入在硬件内。
计算机402还包括被通信地耦合到系统总线440并且促进与计算机402的交互的一个或多个接口组件470。作为示例,接口组件470可以是端口(例如,串行、并行、PCMCIA、USB、FireWire等)或接口卡(例如,声音、视频等)等。在一个示例实现中,接口组件470可以体现为使得用户能够例如通过一个或多个手势或语音输入通过一个或多个输入设备(例如,指示设备,诸如鼠标、轨迹球、手写笔、触摸板、键盘、麦克风、操纵杆、游戏板、碟形卫星天线、扫描仪、相机、其他计算机等)向计算机402中输入命令和信息的用户输入/输出接口。在另一示例实现中,接口组件470可以体现为将输出提供给显示器(例如,LCD、LED、等离子等)、扬声器、打印机和/或其他计算机等的输出外围接口。更进一步,接口组件470可以体现为使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信的网络接口。
上面已经描述的内容包括所要求保护的主题的各方面的示例。当然,不可能为了描述所要求保护的主题的目的而描述组件或方法的每种可能的组合,但是本领域的普通技术人员可以认识到,所公开的主题的很多其他组合和置换是可能的。因此,所公开的主题旨在涵盖落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。此外,如果在具体实施方式或权利要求中使用术语“包括”,则该术语旨在是包括性的,其方式类似于术语“包括”在权利要求中作为过渡词使用时所解释的。

Claims (15)

1.一种用于使用锚的流处理的系统,包括:
处理系统,包括处理器和其上存储有计算机可执行指令的存储器,所述计算机可执行指令在由所述处理器执行时,使得所述处理系统:
在启动阶段期间:
在所述处理系统处,累积一个或多个启动锚请求,直到来自被耦合到所述处理系统的一个或多个下游节点的请求未决,其中每个启动锚请求标识特定时间;
确定所累积的所述一个或多个启动锚请求的最小时间;
如果所述处理系统是输入节点,则生成与所确定的所述最小时间相关联的锚;
如果所述处理系统不是输入节点,则:
向上游节点提供标识所确定的所述最小时间的启动锚请求;
接收与所确定的所述最小时间相关联的所述锚;以及
响应于来自下游节点的、针对所确定的所述最小值的所轮询的启动锚请求锚,提供所述锚。
2.根据权利要求1所述的系统,其中所述计算机可执行指令被重复地执行,直到不再有未决的启动锚请求并且数据请求已经从被耦合到所述处理系统的所述下游节点被接收到,所述数据请求指示所述启动阶段的完成。
3.根据权利要求2所述的系统,其中在所述启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与所述有序锚集合对应的数据的请求已经被完成。
4.根据权利要求3所述的系统,其中与所述成批数据中的一批或多批数据对应的数据被持久地存储在所述处理系统处并且响应于针对一批特定数据和特定锚的请求而被提供。
5.根据权利要求3所述的系统,其中针对数据的所述请求由特定节点在恢复阶段中以其他方式独立于所述处理系统生成。
6.根据权利要求2所述的系统,其中在所述启动阶段的完成之后,响应于针对一批特定数据和特定锚的请求,从被持久地存储在所述处理系统处的数据提供所述一批特定数据和另一锚。
7.根据权利要求1所述的系统,其中所述处理系统根据与由所述处理系统执行的处理相关联的时间窗口来修改所确定的所述最小时间。
8.一种使用锚的流处理的方法,包括:
在计算节点处,累积启动锚请求,直到请求已经从所连接的下游节点被接收到,其中每个启动锚请求标识特定时间;
确定所累积的所述锚请求的最小时间;
如果所述计算节点是输入节点,则生成与所确定的所述最小时间相关联的锚;
如果所述处理系统不是输入节点,则:
向上游节点提供标识所确定的所述最小时间的启动锚请求;
接收与所确定的所述最小时间相关联的所述锚;以及
响应于来自特定下游节点的、针对所确定的所述最小值的所轮询的启动锚请求锚,提供所述锚。
9.根据权利要求8所述的方法,被重复地执行,直到不再有未决的启动锚请求并且数据请求已经从被连接到所述计算节点的所述下游节点被接收到,所述数据请求指示所述启动阶段的完成。
10.根据权利要求9所述的方法,在所述启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与所述有序锚集合对应的数据的请求已经被完成。
11.根据权利要求8所述的方法,其中锚以严格增长顺序针对特定节点而被生成。
12.一种存储计算机可读指令的计算机存储介质,所述计算机可读指令在被执行时,使得计算设备:
在启动阶段期间:
累积一个或多个启动锚请求,直到来自被耦合到所述计算设备的下游节点的请求未决,其中每个启动锚请求标识特定时间;
确定所累积的所述一个或多个启动锚请求的最小时间;
如果所述计算设备是输入节点,则生成与所确定的所述最小时间相关联的锚;
如果所述计算设备不是输入节点,则:
向上游节点提供标识所确定的所述最小时间的启动锚请求;
接收与所确定的所述最小时间相关联的所述锚;以及
响应于来自下游节点的、针对所确定的所述最小值的所轮询的启动锚请求锚,提供所述锚。
13.根据权利要求12所述的计算机存储介质,存储另外的计算机可读指令,所述另外的计算机可读指令在被执行时,使得所述计算设备:重复地执行所述指令,直到不再有未决的启动锚请求并且数据请求已经从被耦合到所述计算设备的所述下游节点被接收到,所述数据请求指示所述启动阶段的完成。
14.根据权利要求13所述的计算机存储介质,存储另外的计算机可读指令,所述另外的计算机可读指令在被执行时,使得所述计算设备:在所述启动阶段的完成之后,根据被存储在有序锚集合中的信息来针对由两个特定锚界定的成批数据执行异步请求,直到针对与所述有序锚集合对应的数据的请求已经被完成。
15.根据权利要求12所述的计算机存储介质,存储另外的计算机可读指令,所述另外的计算机可读指令在被执行时,使得所述计算设备:根据与由所述计算设备执行的处理相关联的时间窗口来修改所确定的所述最小时间。
CN201980063775.4A 2018-09-28 2019-06-26 针对事件流处理的增强型锚协议 Active CN112805978B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/145,456 2018-09-28
US16/145,456 US11044291B2 (en) 2018-09-28 2018-09-28 Enhanced anchor protocol for event stream processing
PCT/US2019/039108 WO2020068210A1 (en) 2018-09-28 2019-06-26 Enhanced anchor protocol for event stream processing

Publications (2)

Publication Number Publication Date
CN112805978A true CN112805978A (zh) 2021-05-14
CN112805978B CN112805978B (zh) 2023-05-26

Family

ID=67515074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980063775.4A Active CN112805978B (zh) 2018-09-28 2019-06-26 针对事件流处理的增强型锚协议

Country Status (4)

Country Link
US (1) US11044291B2 (zh)
EP (1) EP3857840A1 (zh)
CN (1) CN112805978B (zh)
WO (1) WO2020068210A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11226966B2 (en) 2019-10-02 2022-01-18 Microsoft Technology Licensing, Llc Journaling of streaming anchor resource(s)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042224A1 (en) * 1999-12-06 2001-11-15 Stanfill Craig W. Continuous flow compute point based data processing
US20070061704A1 (en) * 2005-09-14 2007-03-15 Microsoft Corporation Dynamic anchoring of annotations to editable content
CN101211365A (zh) * 2006-12-28 2008-07-02 国际商业机器公司 用于建立搜索索引的方法和系统
CN103262585A (zh) * 2010-12-15 2013-08-21 瑞典爱立信有限公司 用于无归属mpls微移动性的方法和网络单元
US20140064249A1 (en) * 2012-09-05 2014-03-06 Samsung Electronics Co., Ltd. Method and apparatus for supporting handover over internet
US20160359940A1 (en) * 2015-06-05 2016-12-08 Microsoft Technology Licensing, Llc Using anchors for reliable stream processing
US20170075721A1 (en) * 2015-09-16 2017-03-16 Salesforce.Com, Inc. Providing strong ordering in multi-stage streaming processing
CN106716378A (zh) * 2014-08-07 2017-05-24 微软技术许可有限责任公司 存储故障之后的安全数据访问
WO2018080722A1 (en) * 2016-10-31 2018-05-03 Google Inc. Anchors for live streams
CN108139958A (zh) * 2015-10-22 2018-06-08 甲骨文国际公司 连续查询处理中的事件批量处理、输出排序和基于日志的状态存储
US9998788B1 (en) * 2015-07-01 2018-06-12 Comcast Cable Communications, Llc Methods and systems for content storage
WO2018121477A1 (zh) * 2016-12-28 2018-07-05 腾讯科技(深圳)有限公司 信息处理方法、终端及系统、计算机存储介质
US20180262408A1 (en) * 2015-06-05 2018-09-13 Microsoft Technology Licensing, Llc Anchor shortening across streaming nodes

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009506627A (ja) * 2005-08-26 2009-02-12 トムソン ライセンシング ダイナミックブロードキャストスケジューリングを使用したオンデマンドシステム及び方法
CN102461196B (zh) * 2009-04-28 2015-08-19 福拜特斯印度私人有限公司 用于多个流的协调拼接的方法和设备
US20120282951A1 (en) * 2011-01-10 2012-11-08 Samsung Electronics Co., Ltd. Anchoring and sharing locations and enjoyment experience information on a presentation timeline for multimedia content streamed over a network

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042224A1 (en) * 1999-12-06 2001-11-15 Stanfill Craig W. Continuous flow compute point based data processing
US20070061704A1 (en) * 2005-09-14 2007-03-15 Microsoft Corporation Dynamic anchoring of annotations to editable content
CN101211365A (zh) * 2006-12-28 2008-07-02 国际商业机器公司 用于建立搜索索引的方法和系统
CN103262585A (zh) * 2010-12-15 2013-08-21 瑞典爱立信有限公司 用于无归属mpls微移动性的方法和网络单元
US20140064249A1 (en) * 2012-09-05 2014-03-06 Samsung Electronics Co., Ltd. Method and apparatus for supporting handover over internet
CN106716378A (zh) * 2014-08-07 2017-05-24 微软技术许可有限责任公司 存储故障之后的安全数据访问
US20160359940A1 (en) * 2015-06-05 2016-12-08 Microsoft Technology Licensing, Llc Using anchors for reliable stream processing
US20180262408A1 (en) * 2015-06-05 2018-09-13 Microsoft Technology Licensing, Llc Anchor shortening across streaming nodes
US9998788B1 (en) * 2015-07-01 2018-06-12 Comcast Cable Communications, Llc Methods and systems for content storage
US20170075721A1 (en) * 2015-09-16 2017-03-16 Salesforce.Com, Inc. Providing strong ordering in multi-stage streaming processing
CN108139958A (zh) * 2015-10-22 2018-06-08 甲骨文国际公司 连续查询处理中的事件批量处理、输出排序和基于日志的状态存储
WO2018080722A1 (en) * 2016-10-31 2018-05-03 Google Inc. Anchors for live streams
WO2018121477A1 (zh) * 2016-12-28 2018-07-05 腾讯科技(深圳)有限公司 信息处理方法、终端及系统、计算机存储介质

Also Published As

Publication number Publication date
WO2020068210A1 (en) 2020-04-02
US11044291B2 (en) 2021-06-22
US20200106816A1 (en) 2020-04-02
EP3857840A1 (en) 2021-08-04
CN112805978B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
US9875141B2 (en) Managing pools of dynamic resources
WO2012161777A2 (en) Multi-phase resume from hibernate
US20150378782A1 (en) Scheduling of tasks on idle processors without context switching
US11831410B2 (en) Intelligent serverless function scaling
US8769233B2 (en) Adjusting the amount of memory allocated to a call stack
US20200371882A1 (en) Method, Apparatus, Device and Medium for Starting Virtual Machine
US9612907B2 (en) Power efficient distribution and execution of tasks upon hardware fault with multiple processors
CN112805978B (zh) 针对事件流处理的增强型锚协议
WO2021118730A1 (en) Overlap customer planned activity to migrate a virtual machine
CN115858667A (zh) 用于同步数据的方法、装置、设备和存储介质
US20190228103A1 (en) Content-Based Filtering of Elements
US20140181492A1 (en) Method of booting an electronic system and an electronic system applying the same
EP4038505A1 (en) Journaling of streaming anchor resource(s)
US20200104399A1 (en) Static Streaming Job Startup Sequence
US20120005687A1 (en) System activation method in multi-task system
US8762776B2 (en) Recovering from a thread hang
US11095522B2 (en) Dynamic scaling for data processing streaming system
CN109547563B (zh) 消息推送处理方法、装置、存储介质及服务器
US11093401B2 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
CN111190725A (zh) 任务处理方法、装置、存储介质及服务器
WO2019156788A1 (en) Invoke a service in an electronic document using a trigger entry
US11360813B1 (en) Timer object management for a multiprocessor virtual environment
US20240256318A1 (en) System and method for managing pods hosted by virtual machines
US11442522B2 (en) Method of controlling performance boosting of semiconductor device based on at least user input and feedback from previous boosting policies and semiconductor device performing the method
KR101248470B1 (ko) 자원 모니터링 컴퓨팅 장치, 방법 및 그 방법을 실행시키기 위한 프로그램을 기록한 기록매체

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