操作者状态检查点的制作方法

文档序号:6495454阅读:457来源:国知局
操作者状态检查点的制作方法
【专利摘要】可以在第一操作者处接收检查点标记。该第一操作者可通过将该检查点标记发送到第二操作者并将表示该第一操作者的状态的状态检查点信息发送到检查点写入者来处理该检查点标记。该检查点信息可被用来还原一个或多个操作者的状态。例如,在系统故障、关闭等之后,可以在第一操作者的检查点信息输入队列处从读取者单元接收检查点信息。可使用该检查点信息来还原第一操作者的状态。对第一操作者的数据输入队列中的信息的处理可以在使用该检查点信息来还原该第一操作者的状态时被挂起。具有第一操作者的系统中的其它操作者可以按与第一操作者相同的方式设置检查点和还原。
【专利说明】操作者状态检查点
[0001]背景
[0002]许多数据流系统具有将其状态保存在易失性存储器中的各个处理单元(操作者),该易失性存储器在故障或计划关闭时可能丢失信息。操作者可以是能够在系统中彼此传递数据项的各种不同种类的操作者中的任一种(例如,程序、程序组件、虚拟机、物理机等)。数据项是将由操作者处理的数据单元,但数据项可以是各种不同形式中的任一种。例如,此处讨论的数据项可以是事件。一个或多个输入模块或组件可以向数据流系统提供输入,并且一个或多个输出模块或组件(宿)可以从数据流系统接收输出。一些数据流系统处理连续查询。在这类查询的情况下,状态可表示已经在长时间段内处理的数据项的结果。
[0003]概述
[0004]一些数据流系统中的操作者状态丢失可具有严重后果,尤其是在该状态表示在延长的时间段内收集到并处理的信息的情况下。以下描述的工具和技术涉及保存检查点信息并使用这类检查点信息来还原操作者状态。如此处所使用的,关于操作者的检查点信息表不该操作者在某一时刻的状态。然而,检查点信息可以按各种不同的方式中的任一种来表示状态。例如,检查点信息可包括来自操作者的数据结构和/或将由操作者处理和/或已经由操作者处理的数据项的表示。这些表示能够以各种方式做出,诸如数据项和/或数据结构的副本、对数据项和/或数据结构的已存储版本的引用、当前数据项和/或数据结构和过去数据项和/或数据结构之间的差别(增量)等。检查点信息可被保存到持久(非易失性)存储或以某种其它方式进行保存,以保持检查点信息安全。例如,检查点信息可被保存到与从其获取检查点信息的系统分开的系统上的易失性存储器。
[0005]在一个实施例中,各种工具和技术可包括在第一操作者处接收检查点标记。检查点标记是请求操作者向检查点写入者发送状态检查点信息的数据单元。检查点标记可以是各种不同的形式中的任一种。第一操作者可通过将检查点标记发送到第二操作者并将表示该第一操作者的状态的状态检查点信息发送到检查点写入者来处理该检查点标记。
[0006]在各种工具和技术的另一实施例中,可以在操作者的检查点信息输入队列处从读取者接收检查点信息。可使用该检查点信息来还原操作者的状态。对操作者的数据输入队列中的信息的处理可以在使用检查点信息来还原操作者的状态时被挂起,这可将操作者状态带回到从该操作者获取该检查点信息时的操作者状态。
[0007]提供本概述是为了以简化的形式介绍一些概念。这些概念将在以下详细描述中进一步描述。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在背景、详细描述、或附图中讨论的专用技术、工具、环境、缺点、或优点的实现。
[0008]附图简述
[0009]图1是其中可实现所描述的各实施例中的一个或多个实施例的合适的计算环境的框图。
[0010]图2是操作者状态检查点环境的示意图。
[0011]图3是操作者状态检查点技术的流程图。[0012]图4是另一种操作者状态检查点技术的流程图。
[0013]图5是又一种操作者状态检查点技术的流程图。
[0014]详细描述
[0015]本文描述的各实施例涉及用于改进操作者状态的维护和恢复的技术和工具。这样的改进可源于分开或组合地使用各种技术和工具。
[0016]这样的技术和工具可包括数据流系统中的用于请求各个操作者为其当前主(易失性)存储器状态设置检查点的协议。该协议可被设计成使得操作者能够彼此同时为其状态设置检查点。这些工具和技术还可包括用于在系统故障后从最后的完整检查点还原操作者状态的协议。这可将操作者的状态带回到为其状态设置检查点时的状态。
[0017]因此,此处讨论的工具和技术可限制系统故障或故意的系统关闭时的状态信息的丢失。这可以用减少对系统的常规处理的影响的技术来完成。例如,彼此并行地在不同的操作者中执行检查点操作可减少为整个数据流系统完成检查点的时间并减少设置检查点对常规处理的影响。所附权利要求中定义的主题不必限于本文描述的益处。本发明的专用实现可提供本文描述的益处的全部、一些、或未提供本文描述的益处。尽管本文出于呈现的目的以专用的顺序次序描述了用于各种技术的操作,但应理解除非要求专用的排序,否则这种描述方式涵盖了操作顺序上的重新安排。例如,在某些情况下,可以重新安排或并发执行顺序地描述的操作。此外,为了简单起见,流程图可能未示出可结合其他技术来使用专用技术的各种方式。
[0018]在此描述的技术可被用于在此描述的一个或多个系统和/或用于一个或多个其他系统。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。例如,诸如应用专用集成线路、可编程逻辑阵列以及其它硬件设备之类的专用硬件实现可被构造来实现在此描述的一个或多个技术中的至少一部分。可包括各种实施例的装置和系统的应用可广泛地包括各种电子和计算机系统。可使用两个或更多互连接的专用硬件模块或具有可在模块之间并通过模块传递的相关控制和数据信号的设备、或作为应用指定集成线路的部分的设备来实现各技术。此外,在此描述的技术可通过由计算机系统执行的软件程序来实现。作为一个示例,实现可包括分布的处理、组件/对象分布的处理、以及平行处理。此外,可构造虚拟计算机系统处理来实现在此描述的技术或功能中的一个或多个。
[0019]示例性计算环境
[0020]图1示出其中可实现所描述的各实施例中的一个或多个实施例的合适的计算环境(100 )的一般化示例。例如,一个或多个这样的计算环境可被用作操作者、检查点存储或包括多个操作者的整个数据流系统。一般而言,可使用各种不同的通用或专用计算系统配置。适用于此处所描述的工具和技术的公知计算系统配置的示例包括,但不限于,服务器场和服务器群集、个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。
[0021]计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可以在完全不同的通用或专用计算环境中实现。
[0022]参考图1,计算环境(100)包括至少一个处理单元(I 10)和至少一个存储器(120)。在图1中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。至少一个存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPR0M、闪存)、或两者的某种组合。该至少一个存储器(120)存储实现操作者状态检查点的软件(180)。
[0023]尽管为了清楚起见用线条示出了图1的各框,但是,实际上,描绘各组件并不是那样清楚,并且用比喻方法,图1以及下文讨论的其他附图的线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等呈现组件认为是I/o组件。而且,处理器具有存储器。发明人关于此点认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内的并且被称为“计算机”、“计算环境”、或“计算设备”。
[0024]计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的各组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并协调计算环境(100)的各组件的活动。
[0025]存储(140)可以是可移动或不可移动的,并可包括诸如磁盘、磁带或磁带盒、CD-ROM、CD-RW、DVD之类的计算机可读存储介质,或者可用于储存信息并可在计算环境(100)内访问的任何其它介质。存储(140)存储用于软件(180)的指令。
[0026]输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备;语音输入设备;扫描设备;网络适配器KD/DVD读取者;或可向计算环境(100)提供输入的另一设备。输出设备(160)可以是显示器、打印机、扬声器、⑶/DVD刻录机、网络适配器、或从计算环境(100)提供输出的另一设备。
[0027]通信连接(170)允许通过通信介质与另一计算实体进行通信。因此,计算环境
(100)可使用通往诸如个人计算机、服务器、路由器、网络PC、对等设备或另一常见网络节点等一个或多个远程计算设备的逻辑连接而工作在联网环境中。通信介质以已调制数据信号的形式传达诸如数据或计算机可执行指令或请求等信息。已调制数据信号是其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非局限,通信介质包括以电、光、RF、红外、声学或其他载波实现的有线或无线技术。
[0028]可在可以是存储介质或通信介质的计算机可读介质的一般上下文中描述这些工具和技术。计算机可读存储介质是能在计算环境内被访问的任何可用存储介质,但是术语计算机可读存储介质并不指传播的信号本身。作为示例而非限制,结合计算环境(100),计算机可读存储介质包括存储器(120 )、存储(140 )、和以上的组合。
[0029]这些工具和技术可在诸如程序模块中所包括的、在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行专用任务或实现专用抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可以如各实施例中所需的组合或在程序模块之间分离。用于程序模块的计算机可执行指令可以在本地或分布式计算环境中执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。[0030]出于演示的目的,详细描述使用了如“确定”、“选择”、“调整”和“操作”等术语来描述计算环境中的计算机操作。这些以及其他类似术语是对计算机执行的操作的高层抽象,并且不应混淆于人类执行的动作,除非明确指出人类(诸如“用户”)的动作执行。对应于这些术语的实际的计算机操作取决于实现而不同。
[0031]操作者状态检查点系统和环境
[0032]以下讨论参考图2,图2是结合其可实现所描述的各实施例中的一个或多个实施例的操作者状态检查点环境(200)的示意图。
[0033]A.数据流系统
[0034]操作者检查点环境(200)可包括包含操作者(220)的数据流系统(210)。数据从源
(230)流动到数据流系统(210)。数据流系统(210)可包括多个操作者(220)。为了方便数据流动通过数据流系统(210),每一个操作者(220)都可包括至少一个数据输入队列(222)并且还可包括至少一个数据输出队列(未示出)。这些队列可以按各种方式中的任一种来实现,诸如用作对于一个操作者的输入队列和对于另一操作者的输出队列的操作者之间的单个队列。操作者(220)各自可以对在其输入队列(222)处接收到的数据项(232)执行一个或多个操作,并且可以将数据项输出到一个或多个其它操作者(220 )和/或宿(240 )。来自整个数据流系统(210)的输出可以从最终操作者(220)(或者在更复杂的配置中从多个最终操作者)发送到宿(240)。
[0035]数据流系统(210)可以比图2所示的更复杂。例如,操作者(220)可包括从多个操作者(220)接收输入的多个输入队列(222)和/或向多个操作者(220)提供输出的多个输出队列。另外,数据流系统(210)可以从多个源(230)接收输入和/或向多个宿(240)提供输出。
[0036]B.检查点生成
[0037]当通过其数据输入队列(222)接收到某一数据时,每一个操作者(220)都可更新其内部状态并且可生成可用作对下游的下一操作者(220)的输入的输出。检查点标记(250)可以在用于数据流系统(210)的数据流的源(230)处入队,以使得该检查点标记能够以类似于数据项(232)通过数据流系统(210)的流动的方式流动通过操作者(220)。例如,检查点标记(250)可以响应于用户输入来入队,或者响应于发生某一事件来自动入队(例如,周期性地)。
[0038]当操作者(220)接收到检查点标记(250)时,操作者(220)可使得检查点标记(250)入队到其输出队列中,并且然后将表示该操作者自己的状态的检查点信息(260)入队到单独队列。对于操作者(220)的这些单独队列的消费者可以是检查点写入者(270)。检查点写入者(270)可以是数据流系统(210)中的操作者。当检查点写入者(270)在其输入队列之一上接收到检查点信息(260)时,检查点写入者可将该数据写入到检查点存储(280)。例如,检查点存储(280)可包括用于数据流系统(210)的检查点的日志文件,并且可根据先进先出技术或某一其它技术来将数据写入到日志。
[0039]由于数据流系统(210)的体系结构,不同的操作者(220)可以并行地处理检查点标记(250)。例如,第一操作者(220)可接收到检查点标记(250),将该检查点标记(250)输出到第二操作者,并且然后继续汇编其检查点信息(260)并将该检查点信息发送到写入者(270)。检查点写入者(270)可将检查点信息(260)存储在检查点存储中。当第一操作者(220)仍然正在汇编其检查点信息(260)时,第二操作者(220)可能已经开始汇编其自己的检查点信息(260)。另外,当一个操作者(220)完成处理检查点标记(250)时,它能够继续处理数据项(232),而不与其它操作者(220)或检查点写入者(270)同步。因此,即使其它操作者(220)尚未完成处理检查点标记(250),并且即使检查点写入者(270)尚未将检查点信息(260)写入到检查点存储(280),操作者(220)也能够继续处理数据项(232)。因此,操作者(220)能够彼此并行地或异步地且与检查点写入者(270)对检查点信息(260)的写入并行地或异步地处理检查点标记(250)。
[0040]当宿(240)接收到检查点标记(250)时,宿(240)可发送通知检查点写入者该检查点已完成的通知(285)。检查点写入者(270)可将该完成通知(285)存储在检查点存储(280)中,作为指示该检查点已完成的最后数据片段。然而,在某些情况下,宿(240)可以在操作者(220)已经发送所有检查点信息(260)之前发送完成通知(285)。因此,用于整个数据流系统(210)的检查点可被认为是不完整的,直到所有操作者(包括常规操作者(220)和宿(240))已声明完成。
[0041]以下讨论实现为操作者状态设置检查点的一些不同方面。这些方面包括为正在设置检查点的查询划分检查点日志、用于具有多个数据项输入队列的操作者的检查点以及包括数据项和/或操作者结构的检查点信息。
[0042]1.对于查询的日志划分
[0043]在一个实现中,数据流系统(210)可以同时运行诸如多个连续查询等多个查询。可以在不同时间为这些不同查询中的每一个的状态单独设置检查点。例如,每一个查询可根据不同的周期节律来设置检查点(一个查询可以每十分钟设置检查点,另一查询可以每小时设置检查点,等等)。查询的检查点可通过与将该查询的数据输入到数据流系统(210)相类似地将检查点标记(250)输入到数据流系统(210)中来启动。因此,各查询可以在任意且可能相对于彼此重叠的时间设置检查点。
[0044]如上所述,检查点存储(280)可包括检查点信息(260)的日志。一个日志可用于存储关于多个查询的检查点信息(260)。当在重叠时间期间在检查点写入者(270)处接收到关于多个查询的检查点信息(260)时,关于不同查询的检查点信息(260)可以在日志中交错。由此,日志的范围可包括在数据流系统(210)中运行的查询的检查点,但这些检查点可以在不同的地方开始和结束,以使得关于不同查询的检查点信息(260)交错且重叠。
[0045]除了日志之外,检查点存储还可包括关于数据流系统(210)的管理者的元数据。该管理者元数据可指示日志中的可找到在数据流系统(210)中运行的每一个查询的最近检查点的位置。
[0046]日志本身可被划分成各部分。日志部分可以在第一查询检查点开始的地方开始,并且可以在完成检查点的每一点处进一步划分。考虑其中两个查询Ql和Q2的检查点是重叠的示例。Ql的检查点可以在Q2的检查点之前开始,并且Ql的检查点可以在Q2的检查点之后结束。对应于Ql的日志单元可以在Ql开始的地方开始并且可以在Ql结束的地方结束(如由Ql的所存储的完成通知(285)所指示的),而对应于Q2的日志单元可以在Ql开始的地方开始(因为在Q2开始的地方没有划分)并且可以在Q2结束的地方结束(如由Q2的所存储的完成通知(285)所指示的)。管理者元数据可指示在日志中Ql的检查点在哪里开始,Q2的检查点在哪里结束以及Ql的检查点在哪里结束。例如,如果Ql在位置I开始,Q2在位置2结束且Ql在位置3结束,则这些位置中的每一个都可由管理者元数据指示。因此,管理者元数据可指示Ql的最近检查点可以在位置I和位置3之间找到。管理者元数据还可指示Q2的最近检查点可以在位置I和位置2之间找到。或者,该日志能够以对应于各查询的某种其它方式划分,诸如在每一查询的检查点的开头和末尾。
[0047]每一个日志条目都可包括首部,该首部指示诸如日志条目对应于哪一个查询以及条目中的检查点信息(260)来自哪一个操作者(220)等信息。因此,日志文件的划分可允许为不同查询的检查点标识日志区域。这可允许恢复关于单个查询的检查点信息(260),而不同样恢复关于其它查询的检查点信息(260)。然而,检查点写入者(270)仍然能够以诸如先进先出方式等顺序方式将检查点信息(260 )写入到日志。
[0048]2.用于具有多个数据项输入队列的操作者的检查点
[0049]如上所述,操作者(220)可包括多个输入队列,这些队列各自可接收将对其进行操作的不同数据项。当这一操作者(220)在一个输入队列处接收到检查点标记(250)时,该操作者(220)可停止处理在该输入队列处接收到的数据项。然而,该操作者(220)可以诸如通过在缓冲区中保存接收到的其它数据项(232)来保持跟踪这些数据项(232)。操作者(220)可以对每一个输入队列这样做,其中接收检查点标记(250)直到每一个数据项输入队列都已经接收到检查点标记(250)。操作者(220)然后可以为该状态设置检查点,将数据项
(232)的内容包括在缓冲区中。操作者(220)可以就像缓冲区是对应的输入队列的延伸那样处理每一个缓冲区中的这些数据项。操作者(220)可以等待处理缓冲区中的数据项(232)直到已经处理检查点标记(250)并且已经在操作者(220)中继续数据项处理之后。
[0050]如果使用检查点信息(260)来还原这一操作者(220)(以下更多地讨论),则来自缓冲区的数据项(232)可变成输入队列的头部,并且数据项处理可继续。
[0051]注意在某些情况下,可使用不同的过程。例如,在某些情况下(诸如在哪一个输入队列接下来要处理数据项是无关紧要的情况下),对数据项的处理可继续直到所有数据项输入队列都已经接收到检查点标记(250)。
[0052]3.包括数据项和/或操作者结构的检查点信息
[0053]对于某些操作者(220 ),检查点信息(260 )可包括由该操作者(220 )维护的数据结构的表示。在其它情况下,检查点信息(260)或者可被保存为正在操作者(220)中进行处理的一组数据项(232)的表示。例如,如果操作者(220)比较数据项(232),则检查点信息(260)可包括正在操作者(220)中进行比较的一组数据项(232)的表示。作为又一替换方案,检查点信息(260)可包括数据项(232)的一个或多个表示以及由操作者(220)维护的数据结构的一个或多个表示。当正在还原时(参见下文对还原的更详细的讨论),如果检查点信息(260)包括数据结构的表示,则这些数据结构可被还原至它们的所指示的状态以便将操作者(220)带到该操作者在开始数据项处理之前的设置检查点的状态。如果检查点信息
(260)包括一个或多个数据项(232),则这些数据项可由操作者(220)处理以便将该操作者
(220)带到它在处理其它数据项(232)之前的设置检查点的状态。
[0054]从检查点还原
[0055]仍旧参考图2,将讨论从检查点还原。这可以是在数据流系统(210)的故障之后或甚至在数据流系统(210)故意关闭之后完成。每一个操作者都可具有至少一个数据项输入队列(222)以及至少一个还原输入队列(290)。可使用还原输入队列(290)来还原操作者(220)的状态。数据项输入队列(222)可以是用于数据处理(例如,对数据项(232)和检查点标记(250)的处理)的常规队列,如上所述。
[0056]检查点读取者(295)可以诸如通过使用日志文件的首部和分区来从检查点存储(280)读取最后的完整检查点。检查点读取者(295)可将适当的检查点信息(260)发送到每一个操作者(220)。每一个操作者(220)都可通过为其输入队列(222和290)确定优先顺序来进行响应。操作者可放弃处理来自数据项输入队列(222)的数据直到操作者(220)已经处理还原输入队列(290)中的所有数据。该优先顺序可导致操作者(220)的状态在操作者(220)继续常规处理之前在存储器中重新建立(还原)。
[0057]数据流系统(210)中的总数据流可立即继续。每一个操作者(220)都可延迟常规处理直到该操作者(220 )的状态使用来自检查点读取者(295 )的检查点信息(260 )来还原。因此,数据流系统(210)的某些部分可以在其它部分仍旧在还原状态的同时继续处理。这可以在不在操作者(220)之间进行同步的情况下完成。每一个操作者(220)能够自由地在该操作者(220)已经处理了它的还原输入队列(290)中的数据时继续数据项处理。
[0058]使用该还原技术,数据流系统(210)可回复到检查点存储(280)中的最新的完整检查点。因此,数据丢失可被限于在最后的完整检查点与系统被关闭或发生故障之间接收到的数据。在某些情况下,甚至可避免该数据丢失。例如,数据流系统(210)可告知源(230)它可被要求在最新检查点的时间之后重放数据(例如,将数据项(232)重新输入到数据流系统(210)中)。数据流系统(210)还可告知宿(240)该宿(240)可能需要在重放检查点之后处理数据。在这种数据重放的情况下,甚至可避免在最新检查点的时间之后接收到的数据的丢失。
[0059]II1.操作者状态检查点技术
[0060]现在将讨论若干种操作者状态检查点技术。可以在计算环境中执行这些技术中的每一个。例如,每种技术可在包括至少一个处理器和至少一个存储器的计算机系统中执行,该至少一个存储器包括存储于其上的、在由该至少一个处理器执行时使该至少一个处理器执行该技术的指令(一个或多个存储器存储指令(例如,对象代码),并且当处理器执行这些指令时,处理器执行该技术)。类似地,一个或多个计算机可读存储介质可具有收录于其上的计算机可执行指令,该些指令在由至少一个处理器执行时使该至少一个处理器执行该技术。
[0061]参考图3,将描述操作者状态检查点技术。该技术可包括在第一操作者处接收(310)检查点标记。响应于接收到(310)检查点标记,第一操作者可处理(320)检查点标记。该处理(320)可包括将检查点标记发送到第二操作者,请求该第二操作者将状态检查点信息发送到检查点写入者。另外,第一操作者可将状态检查点信息从第一操作者发送(324)到检查点写入者。该状态检查点信息可表示该第一操作者的状态。
[0062]检查点信息可包括第一操作者接收到的正在进行处理的一个或多个数据项的一个或多个表示和/或由该第一操作者维护的一个或多个数据结构的一个或多个表示。
[0063]该第一操作者可包括被配置成接收检查点标记的多个输入队列。该技术还可包括在以下两个时间之间的时间段期间执行各步骤:在一个输入队列处接收到并处理第一检查点标记时以及在所有输入队列处已经接收到并处理检查点标记时。这些步骤可包括停止处理所有输入队列的数据项。对于尚未接收到检查点标记的每一个输入队列,这些步骤还可包括维护在该输入队列处接收到的数据项的缓冲区,直到在该输入队列处接收到检查点标记。关于第一操作者的检查点信息可包括缓冲区中的一个或多个数据项的一个或多个表
/Jn ο
[0064]该技术还可包括第二操作者响应于从第一操作者接收到检查点标记来处理该检查点标记。第二操作者可通过将表示该第二操作者的状态的状态检查点信息从该第二操作者发送到检查点写入者来执行该处理。第一和第二操作者可以彼此并行地处理检查点标记。同样,检查点写入者可将检查点信息写入到持久存储。检查点写入者可以与由第一操作者执行的输入处理异步地写入检查点信息。
[0065]第一和第二操作者可以在使用也用于在操作者之间发送其它数据的通信信道来在操作者之间发送检查点标记的数据流系统中。例如,数据流系统可以对检查点标记使用与正在流动通过该数据流系统的其它数据相同的输入/输出队列。检查点写入者可以是这一数据流系统中的另一操作者。
[0066]该技术还可包括在启动检查点标记后输入组件维护从该输入组件提供到数据流系统的输入的记录。该技术还可包括在启动检查点标记后输出组件准备从数据流系统接收输出的副本。数据流系统可告知输入组件和/或输出组件何时已经保存检查点,以允许输入/输出组件做出这样的准备。
[0067]检查点写入者可将关于多个查询的检查点信息写入到日志。关于多个查询的检查点信息可以在日志中交错,并且查询可以是连续运行的查询。日志可包括描绘日志中的不同的查询检查点单元的一个或多个标记。如上所述,例如这些标记可将日志分成各个查询单元(例如,其中标记被插入在日志中的关于查询检查点的信息是完整的位置)。检查点信息的交错还可包括交错关于同一查询的不同的检查点信息片段。这些片段可包括来自同一操作者且关于同一查询的多个片段。例如,在操作者具有大量检查点信息的情况下,将该操作者的状态分成各个片段可以是有用的。操作者的状态可能已经在该操作者中被自然地分成各个片段。在其中这些片段被认为是不可变的一个实现中(如可以是流传输系统中的情况),这些片段可被传递至检查点写入者并进行引用计数。检查点写入者可将来自可能不同的操作者的片段组合成较大的块以便高效地将检查点信息写入到检查点存储中的日志。因此,图3的技术可包括将表示第一操作者的状态的检查点信息分成多个片段并在日志中将该多个片段与来自除了第一操作者之外的操作者的检查点信息交错。
[0068]图3的技术还可包括在第一操作者的检查点信息输入队列处从读取者单元接收检查点信息。检查点信息可用于还原第一操作者的先前设置检查点的状态。另外,对第一操作者的数据输入队列中的信息的处理可以在使用检查点信息来建立该操作者的状态时被挂起。
[0069]现在参考图4,将讨论另一种操作者状态检查点技术。该技术可包括在操作者的检查点信息输入队列处从读取者单元接收(410)检查点信息。可使用该检查点信息来还原(420)该操作者的状态。例如,该还原可包括还原数据结构和/或处理检查点信息中所表示的数据项。在使用检查点信息来还原(420)操作者的状态时,可挂起(430)对该操作者的数据输入队列中的信息的处理。还原(420)操作者的状态可以与一个或多个其它操作者使用来自读取者的检查点信息来还原状态并行地执行。还原(420)可包括将操作者的状态还原至该操作者在从该操作者获取表示该操作者的状态的检查点信息时(例如,在该操作者汇编检查点信息并将其发送到检查点写入者时)的状态。
[0070]操作者可被称为第一操作者,并且图4的技术还可包括在第一操作者处接收检查点标记。响应于接收到检查点标记,第一操作者可处理检查点标记。该处理可包括将检查点标记发送到第二操作者,请求该第二操作者将关于该第二操作者的状态检查点信息发送到检查点写入者。该处理还可包括将表示第一操作者的状态的状态检查点信息从第一操作者发送到检查点写入者。例如,第一操作者可以在将状态检查点信息发送到检查点写入者之前和/或在汇编状态检查点信息以便发送到检查点写入者之前将检查点标记发送到第二操作者。
[0071]现在参考图5,将讨论又一种操作者状态检查点技术。该技术可包括在数据流系统中的多个操作者中的每一个处接收(510)检查点标记。响应于每一个操作者接收到(510)检查点标记,该操作者可以与一个或多个其它操作者并行地处理(520)检查点标记。该处理可包括将检查点标记从该操作者发送(522)到另一操作者并请求该另一操作者将状态检查点信息发送到检查点写入者。该处理还可包括将状态检查点信息从该操作者发送(524)到检查点写入者。状态检查点信息可表示该操作者的状态。
[0072]检查点写入者可写入(530)表示每一个操作者的状态的检查点信息。该写入(530)可以与由各操作者执行的输入处理异步地完成。
[0073]对于每一个操作者,可以在检查点信息输入队列处从读取者单元接收(540)检查点信息。同样对于每一个操作者,可以在挂起(550)对数据输入队列中的信息的处理时建立操作者状态。每一个操作者的所建立的操作者状态可以与从该操作者获取检查点信息时的状态相同。对于不同的操作者,操作者状态的建立可以并行地完成。
[0074]尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
【权利要求】
1.一种计算机实现的方法,包括: 在第一操作者处接收检查点标记;以及 响应于在所述第一操作者处接收到所述检查点标记,所述第一操作者通过执行以下动作来处理所述检查点标记: 将所述检查点标记发送到第二操作者,请求所述第二操作者将状态检查点信息发送到检查点写入者;以及 将表示所述第一操作者的状态的状态检查点信息从所述第一操作者发送到所述检查点写入者。
2.如权利要求1所述的方法,其特征在于,所述检查点信息包括由所述第一操作者接收到的正在进行处理的一个或多个数据项的一个或多个表示。
3.如权利要求1所述的方法,其特征在于,所述第一操作者包括被配置成接收检查点标记的多个输入队列,并且其中所述方法还包括在在所述输入队列之一处接收到第一检查点标记的时间与在所有输入队列处接收到并处理检查点标记的时间之间的时间段期间执行以下动作: 停止处理对于所述所有输入队列的数据项;以及 对于尚未接收到检查点标记的每一个输入队列,维护在该输入队列处接收到的数据项的缓冲区直到在该输入队列处接收到所述检查点标记。
4.如权利要求1所述的方法,其特征在于,所述第一操作者和所述第二操作者彼此并行地处理所述检查点标记。·
5.如权利要求1所述的方法,其特征在于,还包括所述检查点写入者写入表示所述第一操作者的状态的检查点信息,所述写入与由所述第一操作者执行的输入处理异步地完成。
6.如权利要求1所述的方法,其特征在于,所述第一和第二操作者在使用也用于在操作者之间发送其它数据的通信信道来在操作者之间发送检查点标记的数据流系统中,并且其中所述方法还包括: 在启动所述检查点标记后输入组件维护从该输入组件提供到所述数据流系统的输入的记录;以及 在启动所述检查点标记后输出组件准备从所述数据流系统接收输出的副本。
7.如权利要求1所述的方法,其特征在于,还包括: 所述检查点写入者将关于多个查询的检查点信息写入到日志,所述关于多个查询的检查点信息在所述日志中交错;以及 将表示所述第一操作者的状态的检查点信息分成多个片段并在所述日志中将所述多个片段与来自除了所述第一操作者之外的操作者的检查点信息交错。
8.一种计算机系统,包括: 至少一个处理器;以及 包括存储于其上的指令的至少一个存储器,所述指令在由所述至少一个处理器执行时致使所述至少一个处理器执行以下动作: 在所述操作者的检查点信息输入队列处从读取者单元接收检查点信息; 使用所述检查点信息来还原所述操作者的状态;以及在使用所述检查点信息来还原所述操作者的状态时,挂起对所述操作者的数据输入队列中的信息的处理。
9.如权利要求8所述的计算机系统,其特征在于,还原所述操作者的状态与一个或多个其它操作者使用来自所述读取者的检查点信息来还原状态并行地执行。
10.一种或多种其上包含计算机可执行指令的计算机可读存储介质,所述指令在由至少一个处理器执行时使所述至少一个处理器执行以下动作: 在数据流系统中的多个操作者中的每一个处接收检查点标记;以及响应于每一个操作者接收到所述检查点标记,所述操作者通过执行以下动作来彼此并行地处理所述检查点标记: 将所述检查点标记从所述操作者发送到另一操作者,请求该另一操作者将状态检查点信息发送到检查点写入者;以及 将状态检查点信息从该操作者发送到所述检查点写入者,所述状态检查点信息,发自该操作者的状态检查点信息表示该操作者的状态; 所述检查点写入者写入表示每一个操作者的状态的检查点信息,所述写入与各操作者执行的输入处理异步地完成; 对于所述操作者中的每一个,在检查点信息输入队列处从读取者单元接收检查点信息;以及 对于所述操作者中的每一个,在挂起对数据输入队列中的信息的处理时使用所述检查点信息来还原操作者状态,所述操作者中的每一个的所建立的操作者状态与获取所述检查点信息时的状态相同,并且对于不同操作者,建立所述操作者状态是并行地完成的。
【文档编号】G06F9/06GK103582868SQ201280027132
【公开日】2014年2月12日 申请日期:2012年5月18日 优先权日:2011年5月27日
【发明者】J·D·戈德斯汀, P·A·扎巴克, B·钱德拉穆里 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1