【发明授权】流式计算系统中计算节点的故障处理_北京百度网讯科技有限公司_201710035881.4 

申请/专利权人:北京百度网讯科技有限公司

申请日:2017-01-17

发明/设计人:石然;程怡;张建伟;高伟康

公开(公告)日:2020-06-23

代理机构:北京同立钧成知识产权代理有限公司

公开(公告)号:CN106874133B

代理人:杨泽;刘芳

主分类号:G06F11/07(20060101)

地址:100085 北京市海淀区上地十街10号百度大厦2层

分类号:G06F11/07(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.06.23#授权;2017.07.14#实质审查的生效;2017.06.20#公开

摘要:本发明的目的是提供一种用于流式计算系统中的故障处理的方法、装置、计算节点和计算机程序产品。其中,在一个计算节点,记录来自上游计算节点的各原始数据的到达顺序;将所述各原始数据按照预定的周期进行持久化操作;当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。与现有技术相比,本发明提供了一种在框架层实现的流式计算输出结果不重不丢的容错机制,可应对各种软硬件故障,保证输出结果的高准确性。

主权项:1.一种用于流式计算系统中的故障处理方法,其中,在一个计算节点,该方法包括以下步骤:-记录来自上游计算节点的各原始数据的到达顺序;-将所述各原始数据按照预定的周期进行持久化操作;-当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;-将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点;其中,所述按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,包括:首先获取上一持久化操作周期的原始数据,并比较所获取的原始数据的到达顺序与所记录的所述各原始数据的到达顺序,以确定是否尚有丢失数据,如是,从所述丢失数据所来自的上游计算节点获取所述丢失数据,从而恢复故障前内存中的待计算数据。

全文数据:流式计算系统中计算节点的故障处理技术领域[0001]本发明涉及流式计算技术领域,尤其涉及一种用于流式计算系统中的故障处理技术。背景技术[0002]目如而5,常见流式计算系统提供计算结果到传输系统三种可选语义:[0003]1至多一次atm〇stonce:保证计算结果在计算过程中遇到节点故障后,计算恢复前后结算结果至多发送到传输系统一次。[0004t2至少一次atleastonce:保证计算结果在计算过程中遇到节点故障后,计算恢見削后结算结果至少发送到传输系统一次。例如Strom。^0005]3受限的严格一次exactlyonce:依赖计算结果发布的存储支持update幂等功能,且^pdate依据的key—般由业务方指定,实现计算结果直接记入存储,不再支持结果继会头进行流式计算。例如FIink使用Cassandra作为存储。[0006]至多一次atmostonce或者至少一次atleastonce只是严格一次(exactlyonce某一个方面的实现保证。用户使用中,只能选择不重或者不丢来折中业务计算需求。又限的严格一次exactlyonce语义支持计算结果发布update幂等存储,但是不支持后续计算结果继续流式计算分析等复杂aJ5p级联等业务场景。[0007]而在很多领域,例如金融、计费、反作弊、广告等,业务场景天然需求数据计算至传^都保证不重不丢,以满足精准的数据完整性需求,同时有复杂的业务计算场景,计算结果简单存入update幂等存储不能满足需求。为此,用户需要在业务层增加额外复杂的数据重放及校验去重逻辑来保证计算数据结果的不重不丢,但是此方案对用户要求很高,极易出现数据不一致等问题,增大了用户的开发成本。而且,此种方案用户间无法复用,无法形成流式计算框架层通用逻辑。发明内容[0008]本发明的目的是提供一种用于流式计算系统中的故障处理的方法、装置、计算节点和计算机程序产品。[0009]根据本发明的一个方面,提供了一种用于流式计算系统中的故障处理方法,其中,在一个计算节点,该方法包括以下步骤:[0010]—记录来自上游计算节点的各原始数据的到达顺序;[0011]-将所述各原始数据按照预定的周期进行持久化操作;[0012]当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;[0013]_将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。[0014]根据本发明的一个方面,还提供了一种用于流式计算系统中的故障处理装置,其中,故障处理装置被布置于所述流式计算系统中的一个计算节点中,该故障处理装置包括.[0015]用于记录来自上游计算节点的各原始数据的到达顺序的装置;.[0016]用于将所述各原始数据按照预定的周期进行持久化操作的装置;[0017]用于当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按昭其之前的到达顺序进行重放和计算的装置;M'[0018]用于将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点的装置。[0019]根据本发明的一个方面,还提供了一种流式计算系统中的计算节点,其中,该计算节点包括上述如根据本发明的一个方面所提供的一种用于流式计算系统中的故障处理装置。[0020]根据本发明的一个方面,还提供了一种流式计算系统中的计算节点,其中,该计算节点包括存储器和处理器,其中,所述存储器中存储有计算机程序指令,当所述处理器运行所述计算机程序指令时,上述如根据本发明的一个方面所提供的一种用于流式计算系统中的故障处理方法被执行。[0021]根据本发明的一个方面,还提供了一种计算机程序产品,所述计算机程序产品可以在流式计算系统中的计算节点中运行,当所述计算机程序产品被运行时,上述如根据本发明的一个方面所提供的一种用于流式计算系统中的故障处理方法被执行。[0022]与现有技术相比,本发明提供了一种在框架层实现的流式计算输出结果不重不丢的容错机制,通过流式计算系统的定期checkpoint机制、下游节点按发布偏移量去重以及“数据有序重放”机制,可应对各种软硬件故障,保证输出结果的高准确性。本发明可广泛应用于对流式计算有严格不重不丢语义的领域,例如广告、金融、反作弊等。[0023]在流式计算框架完成的实现,对用户透明,S卩用户通过使用本发明,无需额外开发或操作即可保证计算结果的高准确性。'[0024]本发明无需用户在业务层代码增加额外复杂数据重放或校验逻辑即可保证计算数据结果的exactlyonce语义,降低了用户程序开发的复杂度,提高数据的准确性,拓宽了流式计算的应用场景。附图说明[0025]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0026]图1示出根据本发明一个实施例的一种用于流式计算系统的故障处理方法的流程图;[0027]图2示出根据本发明一个实施例的一种用于流式计算系统的故障处理装置的示意图。[0028]附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式[0029]在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。[0030]在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的程序指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑PC、笔记本电脑、平板电脑、智能手机等。[0031]所述计算机设备例如包括用户设备与网络设备。其中,所述用户设备包括但不限于个人电脑PC、笔记本电脑、移动终端等,所述移动终端包括但不限于智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算CloudComputing的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。[0032]需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。[0033]本文后面所讨论的方法其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个处理器可以实施必要的任务。[0034]这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。[0035]应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和或”包括其中一个或更多所列出的相关联项目的任意和所有组合。[0036]应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与…直接邻近”等等)。[0037]这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项,,还意图包括复数。还应当理解的是,这里所使用的术语“包括,,和或“包含”规定所陈述的特征、整数、步骤、操作、单元和或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和或其组合。[0038]__还应当提到的是,在一些替换实现方式中,所提到的功能动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。[0039]本发明适用于流式计算系统。流式计算系统是一种分布式计算系统,其中包括多级计算节点,每一级也可以有多个计算节点。每个计算节点按照其所分配的计算任务对来自上游节点的原始数据进行计算,并将计算所获得的结果数据发送至下游节点。[0040]典型地,流式计算系统向下游传输系统输出结果数据。因此,对于流式计算系统中的最后一级计算节点而言,其下游节点即为传输系统。[0041]具体地,本发明主要通过流式计算系统的定期checkpoint机制、下游节点按结果数据的发布偏^量去重以及对恢复数据的“数据有序重放”机制,提供了一种在流式计算中数据计算结果高准确性保证。根据本发明的方案,用户可保证数据结果的exactlyonce语义,不再需要在业务层增加额外复杂数据重放或校验逻辑来保证计算数据结果的不重不丢。[0042]下面结合附图对本发明作进一步详细描述。[0043]图1示出根据本发明的一个实施例,其中具体示出一种用于流式计算系统的故障处理方法的流程图。[0044]该故障处理方法可以用于流式计算系统中的任一个计算节点。典型地,该故障处理方法可以用于流式计算系统中的最后一级计算节点。[0045]如图1所示,在步骤S1中,计算节点记录来自上游计算节点的各原始数据的到达顺序;在步骤S2中,计算节点将所接收的各原始数据按照预定的周期进行持久化操作;在步骤S3中,当发生故障而重启后,计算节点按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;在步骤S4中,计算节点将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。[0046]具体地,在步骤S1中,计算节点记录来自上游计算节点的各原始数据的到达顺序。[0047]在此,本发明为了实现“严格一次exactlyonce”的语义,需要计算节点记录每条原始数据的到达顺序,以当该计算节点发生故障而重启后,可以按照每条原始数据的到达顺序来恢复和严格重放replay。[0048]据此,本发明为计算节点定义了一项新的功能,g卩:记录来自上游计算节点的各原始数据的到达顺序。[0049]并且,为了在故障恢复时,计算节点能够获得各原始数据的到达顺序,计算节点不仅在本地记录上游计算节点的各原始数据的到达顺序,并在从上游获取到原始数据后即同步地将原始数据的到达顺序记录至外部存储系统中,如存入Checkpoint机制中的外部分布式存储系统HBase,以避免部分顺序数据缺失。[0050]随后,在步骤S2中,计算节点将所接收的各原始数据按照预定的周期进行持久化操作。[0051]优选地,计算节点对原始数据的持久化操作通过checkpoint机制来按照预定的周期执行。[0052]计算节点将所接收到的各原始数据定期checkpoint到外部的分布式存储系统,如HBase,从而实现对原始数据的持久化操作。[0053]此外,由于计算节点的内存中也缓存有这些原始数据,以用于实时计算,从而checkpoint仅作为故障恢复的保障,以当计算节点发生故障重启后可以从checkpoint的原始数据中恢复相关原始数据。这在保证节点故障前后内存中待计算数据不会丢失的同时,也显著减少了对HBase的读操作,提高了系统的处理效率。[0054]接着,在步骤S3中,当发生故障而重启后,计算节点按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算。[0055]在此,本发明为了实现结果数据的“不重不丢”,当计算节点发生故障而重启后,该故障节点例如从checkpoint点恢复上一周期的原始数据,并将所恢复的原始数据的到达顺序与故障节点在各原始数据到达时所记录的顺序进行比较,以确定是否尚有丢失数据:如果是,则确定丢失数据的到达顺序及其来源的上游计算节点,以从这些上游计算节点重新请求这些丢失数据;如果否,贝!J可从checkpoint恢复之前内存中的所有计算数据。在另一种更极端的情形下,从checkpoint恢复的原始数据中可能并无任何故障前的内存计算数据。也即,在上一次checkpoint周期之后,计算节点即发生故障,内存中的所有计算数据均未做checkpoint。对于此种情形,内存中的所有丢失数据同样可以通过向来源的上游计算节点重新请求而获得。根据前述的这些方式,故障节点可以恢复故障前内存中的所有计算数据,以对这些数据按照之前到达该故障节点的顺序进行严格重放和计算,否则会带来计算数据的错乱引发数据的丢失或重复。[0056]由于当故障发生时,计算节点内存中的原始数据并非是全部未处理的,而是已处理了一部分,但仍有一部分未处理,为了保证数据处理的准确性,故障节点从checkpoint恢复上一周期的全部原始数据,并从上游计算节点重新请求其他丢失数据(即尚未来得及做checkpoint的原始数据),进而对所恢复的这些待计算数据包括从checkp〇int恢复的原始数据和从上游计算节点重新请求的丢失数据)按照其之前的到达顺序进行严格重放和计算,以重新获得相应的结果数据。并且,只有在这些故障恢复数据严格按照故障前顺序重放和计算后,新数据才会到达,保证了故障数据有序重放需求。、[0057]随后,在步骤以中,计算节点将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。[0058]、在此,本发明为了保证每条结果数据的全局唯一和编码一致,会将计算节点重启,重新计算的结果数据按照上一checkpoint周期的编码偏移量进度信息,继续编码。因此,当发生故障而重启后’计算节点可以从checkpoint点恢复上一周期的结果数据的偏移量进度信息。也即,计算节点不仅周期性地将所接收的原始数据,还将相应周期的结果数据的偏移量进度信息也做checkpoint。[0059]、、编码过程中,结合数据严格重放功能,计算节点保证每条计算完毕的结果数据发送到下游T点时携市的偏移量编码严格一致,g卩故障前后编码幂等,保证下游节点的去重_]_,计算节点娜騰社—敎化騰觸上—eheekpQintj^的结果数据的偏移量进度信息,确定重启后第一条计算完毕的结果醜的编码偏移量。陶]在此,当前计算节点的下-节点可以是当前计算节点的下级计算节点。如果当前计算节点是流式计算系统的最后-级计算节点,则将结果麵传递至外部传输系统。_2]訂—节a鸸果麵后,其糖撤難结雜涵编码鮮量与其己接收到的结果数据的编码偏移量进行比较,以对结果数据进行去重。[00^3]、例如,传输系统使用偏移量去重机制,保证在上游计算节点故障重启后,将上游计算节点发補t据巾携細赫量鋪、与传输織肖祀接細賺漏偏移量进行比较,成重夏数据的过滤去除功能,实现了计算结果发布至传输系统的不重特性。对重复数据的过滤去除功能,实现了计算结果发布至传输系统的不重特性。[0064]图2示出根据本发明的一个实施例,其中具体示出一种用于流式计算系统的故障处理装置的示意图。[0065]该故障处理装置可以布置于流式计算系统中的任一个计算节点。典型地,该故障处理装置可以布置于流式计算系统中的最后一级计算节点。[0066]如图2所示,故障处理装置20具体包括顺序记录装置21、数据持久化装置22、数据重放装置23和数据编码装置24。[0067]其中,顺序记录装置21记录来自上游计算节点的各原始数据的到达顺序;随后,数据持久化装置22将所接收的各原始数据按照预定的周期进行持久化操作;接着,当计算节点发生故障而重启后,数据重放装置23按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;随后,数据编码装置24将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。[0068]具体地,顺序记录装置21记录来自上游计算节点的各原始数据的到达顺序。[0069]在此,本发明为了实现“严格一次exactlyonce,,的语义,需要顺序记录装置21记录每条原始数据的到达顺序,以当该计算节点发生故障而重启后,可以按照每条原始数据的到达顺序来恢复和严格重放replay。[0070]据此,本发明为计算节点定义了一项新的功能,g卩:由顺序记录装置2丨记录来自上游计算节点的各原始数据的到达顺序。[0071]并且,为了在故障恢复时,计算节点能够获得各原始数据的到达顺序,计算节点不仅在本地记录上游计算节点的各原始数据的到达顺序,并在从上游获取到原始数据后即同步地将原始数据的到达顺序记录至外部存储系统中,如存入checkpoint机制中的外部分布式存储系统HBase,以避免部分顺序数据缺失。[0072]随后,数据持久化装置22将所接收的各原始数据按照预定的周期进行持久化操作。[0073]优选地,数据持久化装置22对原始数据的持久化操作通过checkpoint机制来按照预定的周期执行。[0074]数据持久化装置22将计算节点所接收到的各原始数据定期checkpoint到外部的分布式存储系统,如HBase,从而实现对原始数据的持久化操作。[0075]此外,由于计算节点的内存中也缓存有这些原始数据,以用于实时计算,从而checkpoint仅作为故障恢复的保障,以当计算节点发生故障重启后,数据重放装置23可以从checkpoint的原始数据中恢复相关原始数据。这在保证节点故障前后内存中待计算数据不会丢失的同时,也显著减少了对HBase的读操作,提高了系统的处理效率。[0076]接着,当计算节点发生故障而重启后,数据重放装置U按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算。[0077]在此,本发明为了实现结果数据的“不重不丢”,当计算节点发生故障而重启后,数据重放装置23例如从checkpoint点恢复上一周期的原始数据,并将所恢复的原始数据的到达顺序与故障节点在各原始数据到达时所记录的顺序进行比较,以确定是否尚有丢失数据:如果是,则确定丢失数据的到达顺序及其来源的上游计算节点,以从这些上游计算节点重新请求这些丢失数据;如果否,贝!J可从checkpoint恢复之前内存中的所有计算数据。在另一种更极端的情形下,从checkpoint恢复的原始数据中可能并无任何故障前的内存计算数据。也即,在上一次checkpoint周期之后,计算节点即发生故障,内存中的所有计算数据均未做checkpoint。对于此种情形,内存中的所有丢失数据同样可以通过向来源的上游计算节点重新请求而获得。根据前述的这些方式,故障节点可以恢复故障前内存中的所有计算数据,以对这些数据按照之前到达该故障节点的顺序进行严格重放和计算,否则会带来计算数据的错乱引发数据的丢失或重复。[0078]由于当故障发生时,计算节点内存中的原始数据并非是全部未处理的,而是已处理了一部分,但仍有一部分未处理,为了保证数据处理的准确性,数据重放装置23从checkpoint恢复上一周期的全部原始数据,并从上游计算节点重新请求其他丢失数据(即尚未来得及做checkpoint的原始数据),进而对所恢复的这些待计算数据(包括从checkpoint恢复的原始数据和从上游计算节点重新请求的丢失数据按照其之前的到达顺序进行严格重放和计算,以重新获得相应的结果数据。并且,只有在这些故障恢复数据严格按照故障前顺序重放和计算后,新数据才会到达,保证了故障数据有序重放需求。[0079]随后,数据编码装置24将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。[0080]在此,本发明为了保证每条结果数据的全局唯一和编码一致,会将计算节点重启后数据重放装置23重新计算的结果数据按照上一checkpoint周期的编码偏移量进度信息,继续编码。因此,当计算节点发生故障而重启后,数据编码装置24可以从checkpoint点恢复上一周期的结果数据的偏移量进度信息。也即,数据持久化装置22不仅周期性地将计算节点所接收的原始数据checkpoint到HBase,还将相应周期的结果数据的偏移量进度信息也做checkpoint〇[0081]编码过程中,结合数据严格重放功能,数据编码装置24保证每条计算完毕的结果数据发送到下游节点时携带的偏移量编码严格一致,即故障前后编码幂等,保证下游节点的去重机制准确生效。[0082]例如,数据编码装置24根据故障前上一持久化操作周期上一checkpoint周期)的结果数据的偏移量进度信息,确定重启后第一条计算完毕的结果数据的编码偏移量。[0083]在此,当前计算节点的下一节点可以是当前计算节点的下级计算节点。如果当前j十算TI点,流式计算系统的最后一级计算节点,则将结果数据传递至外部传输系统。0〇84]@下—节点接收到结果数据后,其将所接收到的结果数据的编码偏賴与其已接收到的结果数据的编码偏移量进行比较,以对结果数据进行去重。[OOf]、例如,传输系统使用偏移量去重机制,保证在上游计算节点故障重启后,将上游计^节点发布数据中携带的偏移量信息与传输系统内部已接收到的数据的偏移量进行比较,完成重复数据的过滤去除功能,实现了计算结果发布至传输系统的不重特性。对重复数据的过滤去除功能,实现了计算结果发布至传输系统的不重特性。[0086]需要注芒的是,本发明可在软件和或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路ASIC或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序包括相关的数据结构可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。[0087]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此夕卜,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

权利要求:1.一种用于流式计算系统中的故障处理方法,其中,在一个计算节点,该方法包括以下步骤:-记录来自上游计算节点的各原始数据的到达顺序;-将所述各原始数据按照预定的周期进行持久化操作;-当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算;-将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点。2.根据权利要求1所述的方法,其中,当发生故障而重启后,首先获取上一持久化操作周期的原始数据,并比较所获取的原始数据的到达顺序与所记录的所述各原始数据的到达顺序,以确定是否尚有丢失数据,如是,从所述丢失数据所来自的上游计算节点获取所述丢失数据,从而恢复故障前内存中的待计算数据。3.根据权利要求1所述的方法,其中,根据故障前上一持久化操作周期的结果数据的偏移量进度信息,确定重启后第一条计算完毕的结果数据的编码偏移量。4.根据权利要求1至3中任一项所述的方法,其中,所述各原始数据的持久化操作通过checkpoint机制来按照预定的周期执行。5.根据权利要求4所述的方法,其中,所述各原始数据通过checkpoint机制被存储于外部的分布式存储系统,从而实现持久化操作。6.根据权利要求4所述的方法,其中,当发生故障而重启后,首先从checkpoint点恢复上一周期的原始数据,并比较所获取的原始数据的到达顺序与所记录的所述各原始数据的到达顺序,以确定是否尚有丢失数据,如是,从所述丢失数据所来自的上游计算节点获取所述丢失数据,从而恢复故障前内存中的待计算数据。7.根据权利要求4所述的方法,其中,当发生故障而重启后,从checkpoint点恢复上一周期的结果数据的偏移量进度信息。8.根据权利要求1所述的方法,其中,所述下一节点包括当前计算节点的下级计算节点或外部传输系统。9.一种用于流式计算系统中的故障处理装置,其中,故障处理装置被布置于所述流式计算系统中的一个计算节点中,该故障处理装置包括:用于记录来自上游计算节点的各原始数据的到达顺序的装置;用于将所述各原始数据按照预定的周期进行持久化操作的装置;用于当发生故障而重启后,按照所记录的到达顺序从经持久化操作的原始数据和或所述上游计算节点恢复内存中的待计算数据,并将所恢复的待计算数据按照其之前的到达顺序进行重放和计算的装置;用于将每条计算完毕的结果数据按照故障前上一持久化操作周期的结果数据的偏移量继续编码并发送至下一节点的装置。10.根据权利要求9所述的装置,其中,当发生故障而重启后,首先获取上一持久化操作周期的原始数据,并比较所获取的原始数据的到达顺序与所记录的所述各原始数据的到达顺序,以确定是否尚有丢失数据,如是,从所述丢失数据所来自的上游计算节点获取所述丢失数据,从而恢复故障前内存中的待计算数据。11.根据权利要求9所述的装置,其中,根据故障前上一持久化操作周期的结果数据的偏移量进度信息,确定重启后第一条计算完毕的结果数据的编码偏移量。12.根据权利要求9至11中任一项所述的装置,其中,所述各原始数据的持久化操作通过checkpoint机制来按照预定的周期执行。13.根据权利要求12所述的装置,其中,所述各原始数据通过checkpoint机制被存储于外部的分布式存储系统,从而实现持久化操作。14.根据权利要求I2所述的装置,其中,当发生故障而重启后,首先从checkpoint点恢复上一周期的原始数据,并比较所获取的原始数据的到达顺序与所记录的所述各原始数据的到达顺序,以确定是否尚有丢失数据,如是,从所述丢失数据所来自的上游计算节点获取所述丢失数据,从而恢复故障前内存中的待计算数据。15.根据权利要求12所述的装置,其中,当发生故障而重启后,从checkpoint点恢复上一周期的结果数据的偏移量进度信息。16.根据权利要求9所述的装置,其中,所述下一节点包括当前计算节点的下级计算节点或外部传输系统。17.—种流式计算系统中的计算节点,其中,该计算节点包括如权利要求9至16中任一项所述的故障处理装置。18.—种流式计算系统中的计算节点,其中,该计算节点包括存储器和处理器,其中,所述存储器中存储有计算机程序指令,当所述处理器运行所述计算机程序指令时,如权利要求1至8中任一项所述的故障处理方法被执行。19.一种计算机程序产品,所述计算机程序产品可以在流式计算系统中的计算节点中运行,当所述计算机程序产品被运行时,如权利要求1至8中任一项所述的故障处理方法被执行。

百度查询: 北京百度网讯科技有限公司 流式计算系统中计算节点的故障处理

vip会员权益升级
价格优惠/年费监控/专利管家/定制微网站 关闭