CN107451012B - 一种数据备份方法及流计算系统 - Google Patents
一种数据备份方法及流计算系统 Download PDFInfo
- Publication number
- CN107451012B CN107451012B CN201710482647.6A CN201710482647A CN107451012B CN 107451012 B CN107451012 B CN 107451012B CN 201710482647 A CN201710482647 A CN 201710482647A CN 107451012 B CN107451012 B CN 107451012B
- Authority
- CN
- China
- Prior art keywords
- tuple
- destination
- checkpoint
- tuples
- backup
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000005540 biological transmission Effects 0.000 claims abstract description 22
- 238000011084 recovery Methods 0.000 claims description 94
- 238000012545 processing Methods 0.000 claims description 80
- 230000015654 memory Effects 0.000 claims description 37
- 238000004140 cleaning Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供一种数据备份方法及流计算系统,该方法包括:目的PE从自身的接收队列中读取第一检查点元组,若判断所述第一检查点元组的批号与当前批号相同,且与所述第一检查点元组具有相同批号的所有元组都已处理完毕,则将自身的状态数据备份至所述流计算系统的分布式存储器中。本发明提供的数据备份方法和流计算系统,采用异步备份的方式,使得数据备份不受PE之间数据传递时延的影响,同时通过设置元组的批次,通过批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,保证了数据备份的一致性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据备份方法以及一种流计算系统。
背景技术
近年来,数据密集型业务已经得到越来越广泛的应用,这些业务的实例包括金融服务、网络监控、电信数据管理、传感检测等等。数据密集型业务产生的数据具有数据量大、快速、时变的特点,流计算系统在接收流数据时就开始对其进行处理,以保证实时性。如图1所示,流计算系统通常包括一个主控节点(Master)和多个工作节点(worker),主控节点主要负责调度和管理各个工作节点,而工作节点是承载实际的数据处理操作的逻辑实体,工作节点具体通过调用若干个执行单元(PE,Process Element)来对数据进行处理,PE是业务逻辑的物理执行单元。
可以看出,流计算系统实质上是一个分布式集群系统,因此系统出现异常的概率较高,流计算系统发生故障可能会导致业务中断或状态数据丢失,为了保证流计算系统的可靠性,现有技术通常采用多节点备份机制,如图2所示,周期性的将每个工作节点中的PE的状态数据以及业务数据备份至其他工作节点的内存,当某个工作节点出现故障,则迁移到备份的工作节点继续进行数据处理。
由于流计算系统是分布式数据处理系统,工作节点中的每个PE可能会处理多条数据流中的数据,同时,同一数据可能会同时被不同的PE处理,流计算系统中数据处理的并发性和无序性,以及PE之间数据传递的时延,会导致采用现有技术这种整体同步备份的方式,数据备份的一致性得不到保证。
发明内容
本发明实施例提供一种数据备份方法及流计算系统,用以保证分布式流计算系统中数据备份的一致性。
第一方面,本发明实施例提供了一种数据备份方法,应用于流计算系统中,所述流计算系统包括多个工作节点,所述多个工作节点通过调用多个执行单元PE来对待处理的元组进行处理,所述多个执行单元包括:源PE和目的PE;所述源PE将自身的发送队列中缓存的元组发送到所述目的PE的接收队列中,所述目的PE读取自身的接收队列中的元组并进行处理;所述源PE的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示PE进行数据备份或数据恢复;所述源PE的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;所述数据备份方法包括:
所述目的PE从自身的接收队列中读取第一检查点元组,所述第一检查点元组用于指示所述目的PE进行状态数据备份;
所述目的PE判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;所述当前批号为所述目的PE当前处理的普通元组的批号;
若所述第一检查点元组的批号与所述当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则所述目的PE将自身的状态数据进行备份;其中,所述目的PE的状态数据包括所述目的PE在处理所述普通元组过程中产生的数据。
在第一方面的第一种可能的实现方式中,所述数据备份方法还包括:
所述目的PE从自身的接收队列中读取第二检查点元组,所述第二检查点元组用于指示所述目的PE进行状态数据恢复;
所述目的PE加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复和数据回放。
结合第一方面,或者第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述目的PE中保存有检查点状态信息,所述检查点状态信息包括:所述当前批号以及元组到齐标记;
所述目的PE判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已到齐,包括:
所述目的PE比较所述第一检查点元组的批号与所述检查点状态信息中包含的当前批号是否相等,以及根据所述检查点状态信息中的元组到齐标记确定与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,还包括:
所述目的PE从自身的接收队列中读取第三检查点元组,所述第三检查点元组用于指示所述目的PE进行状态数据清理;
所述目的PE清理自身备份的状态数据,并清理所述检查点状态信息。
结合第一方面第三种可能的实现方式,在第四种可能的实现方式中,所述清理所述检查点状态信息包括:
将所述检查点状态信息中的当前批号加1,并将元组到齐标记清零。
结合第一方面,或者第一方面第一至第四种任意一种可能的实现方式,在第五种可能的实现方式中,所述流计算系统还包括:分布式存储器;所述目的PE将自身的状态数据进行备份,包括:
所述目的PE通过调用第一接口将当前的状态数据缓存到本地内存;
所述目的PE通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份线程,将所述本地内存中的状态数据备份至所述分布式存储器。
结合第一方面第五种可能的实现方式,在第六种可能的实现方式中,所述目的PE加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复和数据回放,包括:
所述目的PE从所述分布式存储器中加载自身最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复和数据回放。
结合第一方面第二到第六种中任意一种可能的实现方式,在第七种可能的实现方式中,还包括:
目的PE从自身的接收队列中读取普通元组;
将该普通元组的批号与当前批号进行比较,如果该元组的批号等于当前批号,则对该普通元组进行处理。
结合第一方面第七种可能的实现方式,在第八种可能的实现方式中,还包括:
如果该普通元组的批号小于当前批号,则丢弃该普通元组,并从所述接收队列中读取下一个元组。
结合第一方面第七种可能的实现方式以及第八种可能的实现方式中的任意一种可能的实现方式,在第九种可能的实现方式中,还包括:
如果该普通元组的批号大于当前批号,则将所述普通元组加入缓存队列,并更新所述检查点状态信息中的元组到齐标记。
第二方面,本发明实施例提供了一种数据备份方法,应用于流计算系统中,所述流计算系统包括多个工作节点,所述多个工作节点通过调用多个执行单元PE来对待处理的元组进行处理,所述多个执行单元包括:源PE和目的PE;所述源PE将自身的发送队列中缓存的元组发送到所述目的PE的接收队列中,所述目的PE读取自身的接收队列中的元组并进行处理;所述源PE的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示PE进行数据备份或数据恢复;所述源PE的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;所述数据备份方法包括:
源PE接收用于状态数据备份的第一检查点命令;
源PE根据所述第一检查点命令生成第一检查点元组,并将生成的检查点元组加入所述源PE的发送队列;
所述源PE将所述发送队列中缓存的所述第一检查点元组发送至目的PE的接收队列,以使所述目的PE从所述接收队列中读取所述第一检查点元组之后,若判断所述第一检查点元组的批号与当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组均已处理完毕时,将所述目的PE当前的状态数据进行备份;其中,所述目的PE的状态数据包括所述目的PE在处理所述普通元组过程中产生的数据。
在第二方面的第一种可能的实现方式中,所述流计算系统还包括:用于管理所述多个工作节点的主控节点;所述多个工作节点包括检查点PE所处的工作节点;所述源PE接收用于状态数据备份的第一检查点命令,包括:
所述源PE接收所述流计算系统的主控节点或者所述检查点PE发送的第一检查点命令。
第三方面,本发明实施例提供了一种流计算系统中的目的执行单元,所述流计算系统包括源执行单元和所述目的执行单元;所述源执行单元用于将自身的发送队列中缓存的元组发送到所述目的执行单元的接收队列,所述源执行单元的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示执行单元进行数据备份或数据恢复;所述源执行单元的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;
所述目的执行单元包括:业务数据处理模块,用于从所述目的执行单元的接收队列中读取元组并对读取到的元组进行处理;
备份与恢复模块,用于当所述业务数据处理模块读取到的元组为用于指示所述目的执行单元进行状态数据备份的第一检查点元组时,判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;所述当前批号为所述业务数据处理模块当前处理的普通元组的批号;若所述第一检查点元组的批号与所述当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将所述目的执行单元的状态数据进行备份;其中,所述目的执行单元的状态数据包括所述业务数据处理模块在处理元组的过程中产生的数据。
在第三方面的第一种可能的实现方式中,所述备份与恢复模块,还用于当所述业务数据处理模块读取到的元组为用于指示所述目的执行单元进行状态数据恢复的第一检查点元组时,加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复和数据回放。
结合第三方面,或者第三方面第一种可能的实现方式,在第二种可能的实现方式中,所述目的PE中保存有检查点状态信息,所述检查点状态信息包括:所述当前批号以及元组到齐标记;
在判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已到齐的方面,所述备份与恢复模块具体用于:
比较所述第一检查点元组的批号与所述检查点状态信息中包含的当前批号是否相等,以及根据所述检查点状态信息中的元组到齐标记确定与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕。
结合第三方面,或者第三方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,所述流计算系统还包括:分布式存储器;在将所述目的执行单元的状态数据进行备份的方面,所述备份与恢复模块具体用于:
通过调用第一接口将所述目的PE当前的状态数据缓存到本地内存;
启动备份线程,以使所述备份线程将所述本地内存中的状态数据备份至所述分布式存储器。
结合第三方面第三种可能的实现方式,在第四种可能的实现方式中,在加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复和数据回放的方面,所述备份与恢复模块具体用于:
从所述分布式存储器中加载自身最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复和数据回放。
第四方面,本发明实施例提供了一种流计算系统中的源执行单元,所述流计算系统包括所述源执行单元和目的执行单元;所述源执行单元的发送队列中缓存有待发送给所述目的执行单元的元组,且所述待发送的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示执行单元进行数据备份或数据恢复;所述源执行单元的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;所述源执行单元包括:
检查点模块,用于接收用于状态数据备份的第一检查点命令;根据所述第一检查点命令生成第一检查点元组;
发送模块,用于将所述检查点模块生成的检查点元组加入所述源执行单元的发送队列;并将所述发送队列中缓存的元组发送至所述目的执行单元的接收队列,以使所述目的执行单元从所述接收队列中读取所述第一检查点元组之后,若判断所述第一检查点元组的批号与当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组均已处理完毕时,将所述目的执行单元当前的状态数据进行备份;其中,所述目的执行单元的状态数据包括所述目的执行单元在处理元组的过程中产生的数据。
第五方面,本发明实施例提供了一种流计算系统,包括:多个工作节点,所述多个工作节点通过调用多个执行单元(PE)来对元组进行处理,所述多个执行单元包括:源PE和目的PE;其中,所述源PE,用于将自身的发送队列中缓存的元组发送到所述目的PE的接收队列中;所述目的PE,用于读取自身的接收队列中的元组并进行处理;其中,所述源PE的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示PE进行数据备份或数据恢复;所述源PE的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;其中:
所述源PE,还用于接收用于状态数据备份的第一检查点命令,根据所述第一检查点命令生成第一检查点元组,将生成的检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第一检查点元组发送至所述目的PE的接收队列;
所述目的PE,还用于从自身的接收队列中读取所述第一检查点元组,若判断所述第一检查点元组的批号与当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将自身的状态数据进行备份;其中,所述当前批号为所述目的PE当前处理的普通元组的批号;所述目的PE的状态数据包括所述目的PE在处理所述普通元组过程中产生的数据。
在第五方面的第一种可能的实现方式中,
所述源PE还用于,接收用于数据恢复的第二检查点命令,根据所述第二检查点命令生成用于指示所述目的PE进行状态数据恢复的第二检查点元组,将生成的第二检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第二检查点元组发送至所述目的PE的接收队列;
所述目的PE还用于,从自身的接收队列中读取所述第二检查点元组,根据所述第二检查点元组加载自身备份的状态数据,并基于所述状态数据进行状态恢复和数据回放。
结合第五方面,或者第五方面第一种可能的实现方式,在第二种可能的实现方式中,
所述源PE还用于,接收用于状态数据清理的第三检查点命令,根据所述第三检查点命令生成第三检查点元组,将生成的第三检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第三检查点元组通过消息通道发送至所述目的PE的接收队列;
所述目的PE还用于,从自身的接收队列中读取所述第三检查点元组,并根据所述第三检查点元组清理自身备份的状态数据。
结合第五方面,或者第五方面第一至第二种任意一种可能的实现方式,在第三种可能的实现方式中,所述流计算系统还包括:分布式存储器;
在将自身的状态数据进行备份的方面,所述目的PE具体用于,通过调用第一接口将自身当前的状态数据缓存到本地内存;通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份恢复线程,将所述本地内存中的状态数据备份至所述分布式存储器。
结合第五方面第三种可能的实现方式,在第四种可能的实现方式中,在加载自身备份的状态数据的方面,所述目的PE具体用于,从所述分布式存储器中加载自身备份的状态数据。
结合第五方面,或者第五方面第一至第四种任意一种可能的实现方式,在第五种可能的实现方式中,所述流计算系统还包括:主控节点,用于向所述源PE发送所述第一检查点命令、第二检查点命令和第三检查点命令中的至少一个。
结合第五方面,或者第五方面第一至第四种任意一种可能的实现方式,在第六种可能的实现方式中,所述流计算系统还包括:主控节点;所述多个工作节点包括检查点PE所处的工作节点;
所述主控节点,用于向所述检查点PE下发用于数据备份的备份命令、用于数据恢复的恢复命令或者用于状态数据清理的数据清理命令;所述检查点PE用于,在接收到所述主控节点发送的备份命令后,向所述源PE发送所述第一检查点命令;或者,在接收到所述主控节点发送的恢复命令后,向所述源PE发送所述第二检查点命令;或者,在接收到所述主控节点发送的数据清理命令后,向所述源PE发送所述第三检查点命令。
由上述技术方案可知,本发明实施例提供的数据备份方法和流计算系统,通过检查点元组来触发PE进行数据备份,PE从接收队列中读取到检查点元组之后,再执行备份操作,各个PE的备份操作不需要同步,使得数据备份不受PE之间数据传递时延的影响;同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1为本发明提供的流计算系统架构示意图;
图2为现有技术的中流计算系统数据备份方法示意图;
图3为本发明实施例提供的流计算系统逻辑划分示意图;
图4为本发明实施例提供的业务处理逻辑示意图;
图5为本发明实施例提供的数据备份方法的流程图;
图6为本发明实施例提供的数据备份方法的原理示意图;
图7为本发明实施例提供的源PE的工作流程图;
图8为本发明实施例提供的目的PE的工作流程图;
图9为本发明实施例提供的异步备份方法的示意图;
图10为本发明实施例提供的一种流计算系统的示意图;
图11为本发明实施例提供的另一种流计算系统的示意图;
图12为本发明实施例提供的另一种流计算系统的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述。显然,下述的各个实施例都只是本发明一部分的实施例。基于本发明下述的各个实施例,本领域普通技术人员即使没有作出创造性劳动,也可以通过等效变换部分甚至全部的技术特征,而获得能够解决本发明技术问题,实现本发明技术效果的其它实施例,而这些变换而来的各个实施例显然并不脱离本发明所公开的范围。
本发明实施例提供的技术方案可典型地应用于流计算系统中,图3描述了流计算系统的基本结构,包括一个主控节点(Master)和多个工作节点(worker),主控节点主要负责调度和管理各个工作节点,而工作节点是承载实际的数据处理操作的逻辑实体,工作节点具体通过调用若干个执行单元(PE,Process Element)来对待处理的数据进行处理(如图3中的PE1、PE2),PE是业务逻辑的物理执行单元,其具体可以为处理器核、进程、线程或其它具有数据处理能力的功能模块、逻辑器件等;同时,为了快速有序地处理数据,工作节点中还设置有多个数据缓冲队列(如图3中的Q1、Q2、Q3、Q4)。PE1为PE2的上游处理单元,即经过PE1处理的数据,会从PE1发送给PE2做进一步处理,PE1和PE2属于不同的工作节点(在本发明实施例中,也称PE1为源PE,PE1下游的处理单元PE2为目的PE),数据通信层首先从上游接收到数据并缓存在队列Q3中,数据转发层的接收线程从底层通讯层读取数据,并将发往PE1的元组数据路由至PE1对应的处理队列Q1。PE1循环从Q1中读取数据并进行处理,同时将处理过程中产生的中间状态数据缓存在state1中。PE1在处理数据过程中也会发送处理结果数据至发送队列Q2,该数据会被标记为发往PE2。数据转发层的发送线程从Q2中读取数据,并调用通信层的发送接口路由并发送数据,发送的数据首先会被缓存在底层通讯的发送队列Q4之中。数据通讯层会循环发送Q4中的数据至目标PE所属的通讯层模块。
流计算是基于流式数据处理模型进行的,在流计算系统中,业务处理逻辑通常需要转化为无回路有向图(Directed Acyclic Graph,DAG),如图4所示,其中算子(Operator)是业务逻辑载体,是可被流计算系统调度执行的最小单元;stream代表各Operator间的数据传输,PE是承载实际的数据处理操作的物理载体,PE可以动态加载并执行对应的operator所承载的业务逻辑,对业务产生的数据流进行处理;其中,数据流中单个数据段,称为元组,元组可以是结构化或非结构化数据。通常,元组中的数据表示特定时间点某事物的状态,流计算系统中的PE以元组为单位对业务产生的数据流进行处理,也可以认为元组是流计算系统中的数据的最小粒度划分和表示。同理,流处理在DAG处理模型下,数据经过传输处理转发等等一系列流程,所以在流计算系统中存在大量的队列数据和数据处理过程中的状态数据,对于数据处理的可靠性实现,最直接有效的手段就是进行数据的备份与恢复,但对于流计算系统的实际特点,很难实现数据的一致性备份与恢复,而本发明技术方案就是根据这一技术问题提出的。需要说明的是,流计算系统只是本发明技术方案的一个典型应用场景,并不对本发明的应用场景构成限制,其它涉及分布式系统数据一致性备份与恢复的应用场景,本发明实施例的技术方案均适用。
本发明实施例提供一种流计算系统中的数据备份方法,该方法可应用与图3所示的流计算系统中,如图5、图6所示所示,该备份方法主要过程描述如下:
S501:源PE接收元组并缓存在自身的元组发送队列中;
S502:当源PE接收到检查点命令后,生成检查点元组,并将生成的检查点元组加入元组发送队列;其中,元组的格式如图6所示,根据图6,元组中携带有用于指示该元组类型的元组类型标识以及用于表示该元组批次的批号,元组类型标识用于区分一个元组是普通元组还是检查点元组,本发明实施例中,元组类型标识为0表示普通元组,元组类型标识为1表示检查点元组;可以理解的是,还可以用其他标识来区分普通元组和检查点元组,本发明实施例不做特别限定。本发明实施例的普通元组是指承载业务数据的元组,检查点元组是指承载系统控制消息的元组,更具体地,检查点元组主要用于指示PE进行数据备份、数据清理或数据恢复,同时,检查点元组与普通元组格式相同,以便于将其嵌入到数据流中,保证不阻塞PE正常的数据处理,提高效率。同时,基于流计算的特点,一个PE通常同时会接收并处理多个上游PE发送的元组,为保证数据备份及恢复的一致性,本发明实施例在元组中增加了批号标识,具体而言,源PE发送队列中的两个检查点元组之间的数据元组定义为同批次数据,通过在元组中增加批号字段来标识元组的批次,属于同一批次的元组,批号相同,例如图6中的B6-B10,在检查点ckp01和ckp02之间,属于同一批次的元组,故具有相同的批号。另外,检查点元组作为各批次元组的边界,与其相邻的普通元组的批号相同,具体而言,在源PE的发送队列中,检查点元组的批号可以与其前相邻的元组的批号相同,也可以与其后相邻的元组的批号相同,本发明实施例不做特别限定。
S503:源PE将元组发送队列中的元组(包括普通元组和检查点元组)通过消息通道发送至目的PE的元组接收队列;
S504:目的PE接收源PE发送的元组(包括普通元组和检查点元组),并顺序缓存在元组接收队列中;
S505:目的PE根据业务处理逻辑,依次读取元组接收队列中的元组(包括普通元组和检查点元组),对读取到的元组进行处理,并缓存处理过程中的状态数据;其中,PE的状态数据用于表示PE的处理数据状态,其具体包含的内容是本领域技术人员熟知的,例如状态数据可包括:算子状态数据、业务处理逻辑、元组接收队列中的缓存数据、消息通道中的缓存数据、PE在处理自身接收队列中的一个或多个普通元组的过程中产生的数据(比如当前处理的普通元组的处理结果及中间过程数据)中的一种或多种数据。
S506:如果目的PE读取到的元组为检查点元组,且为用于指示所述目的PE进行状态数据备份的第一检查点元组,则判断该第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有元组是否都已到齐,如果第一检查点元组的批号与当前批号相同,且与第一检查点元组具有相同批号的所有元组都已到齐,则目的PE将自身当前的状态数据备份;具体地,目的PE根据读取到的元组的元组类型标识,可以判断出该元组是普通元组还是检查点元组,若读取到的元组为检查点元组,则进一步判断该元组的批号是否满足备份要求(即批号与当前批号相同,且同批次的所有元组都已到齐),若满足,就进行状态数据备份操作。在一个实施例中,目的PE可将自身的状态数据备份至分布式存储中;其中,该分布式存储器是流计算系统中的一个非易失性存储装置,用于流计算系统中各个PE进行状态数据的备份。需要说明的是,分布式存储器不应理解为对本发明实施方式的特别限定,其它类型的具备可靠性的存储装置,均能用于实施本发明方案。另外还需要说明的是,本发明实施例中的“当前批号”用于指示目的PE目前处理到什么批次的元组,具体而言,当前批号为目的PE当前处理的普通元组的批号;需要说明的是,这里的“当前处理的元组”,应当理解为目的PE执行S506之前,最近一次读取并处理的元组,该元组通常为普通元组;“与第一检查点元组具有相同批号的所有元组都已到齐”,具体是指与第一检查点元组同批次(批号相同)的所有普通元组均已被目的PE接收并处理完毕。
本发明提供的流计算系统中的数据备份方法,通过检查点元组来触发PE进行数据备份,PE从接收队列中读取到检查点元组之后,再执行备份操作,各个PE的备份操作不需要同步,使得数据备份不受PE之间数据传递时延的影响;同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。同时,将检查点命令以检查点元组的形式嵌入到待处理的普通元组中,也可以保证数据备份操作不阻塞PE正常的数据处理,提高数据备份的效率。
基于上述实施例,下面分别进一步描述源PE和目的PE详细的处理流程,如图7所示,源PE的具体处理流程如下:
步骤701:判断是否接收到检查点命令,如果是,执行步骤702;如果否,执行步骤705;
步骤702:判断检查点命令的类型,如果是用于数据备份的检查点命令,则执行步骤703;如果是用于数据清理的检查点命令,则执行步骤706;
步骤703:生成第一检查点元组,并将生成的第一检查点元组加入源PE的发送队列;其中,第一检查点元组用于指示下游的目的PE进行状态数据备份;
步骤704:将第一检查点元组发送给目的PE,以使目的PE调用自身的备份与恢复模块对自身的状态数据进行备份;
步骤705:源PE调用算子,以使算子根据业务处理逻辑依次对源PE接收队列中接收的元组进行处理;
步骤706:清理发送队列;
步骤707:发送清理检查点命令给下游的目的PE,以使下游的目的PE调用自身的备份与恢复模块对自身的状态数据进行清理。
相应地,如图8所示,目的PE的具体处理流程如下:
步骤801:目的PE读取自身的元组接收队列(recRB)中的元组数据;
步骤802:判断读取到的元组的类型,若该元组为检查点元组,则执行步骤803;如果该元组为普通元组,则执行步骤807;
需要说明的是,由于元组中携带有用于指示元组类型的元组类型标识,通过该元组类型标识即可区分出一个元组是普通元组还是检查点元组,本发明实施例中,元组类型标识为0表示普通元组,元组类型标识为1表示检查点元组;可以理解的是,还可以用其他标识来区分普通元组和检查点元组,本发明实施例不做特别限定。
步骤803:判断该检查点元组的类型,如果为备份类型的检查点元组,则执行步骤804;如果为恢复类型的检查点元组,则执行步骤805;如果为清理类型的检查点元组,则执行步骤806;其中,备份类型的检查点元组是指用于指示所述目的PE进行状态数据备份的检查点元组,恢复类型的检查点元组是指用于指示所述目的PE进行状态数据恢复的检查点元组,清理类型的检查点元组是指用于指示所述目的PE进行状态数据清理的检查点元组;需要说明的是,在本发明的实施例中,可以通过在检查点元组中设定检查点类型标识来区分不同类型的检查点元组,例如,检查点类型为1表示是备份类型的检查点元组,检查点类型为2表示是恢复类型的检查点元组,检查点类型为3表示是清理类型的检查点元组,本发明实施例不做特别限定。
步骤804:将该元组的批号与当前批号进行比较,如果该元组的批号大于当前批号,执行步骤808;如果该元组的批号小于当前批号,返回步骤801;如果该元组的批号等于当前批号,说明该元组的批号符合备份要求,则设置检查点状态数据中的备份标记,执行步骤809;其中,“当前批号”用于指示目的PE目前处理到什么批次的数据,具体而言,当前批号为目的PE当前处理的元组的批号;需要说明的是,这里的“当前处理的元组”,应当理解为目的PE执行上述步骤之前,最近一次读取并处理的元组,该元组通常为普通元组。在一个较佳的实施例中,目的PE可以维护检查点状态数据,检查点状态数据的格式如图8所示,该检查点状态数据包括:当前批号、备份标记以及元组到齐标记,备份标记用于指示元组的批号是否满足备份要求;元组到齐标记用于指示同一批次(批号相同)的所有元组是否均已被目的PE接收并处理完毕;可以理解的是,在目的PE处理数据的过程中,检查点状态数据是动态更新的,例如,在一个实施例中,如判断与该元组同批次的元组都到齐了,则将元组到齐标记置为1,若未到齐则将元组到齐标记设置为0;若该元组的批号等于当前批号,且与该元组同批次的数据都已被目的PE处理完毕,说明该元组的批号符合备份要求,则将备份标记设置为1。可以理解的是,元组到齐标记和备份标记的设置方法还可以采用其它方式,只要能区分不同的状态即可,本发明不做特别限定。
步骤805:从加载自身备份的状态数据,并基于所述状态数据进行状态恢复和数据回放,返回步骤801;其中,PE基于自身的状态数据进行状态恢复和数据回放属于本领域常规技术手段,此处不再赘述。
步骤806:清理检查点状态数据,返回步骤801;需要说明的是,在本发明实施例中,状态数据备份是由检查点元组触发的,每个检查点元组都对应有的检查点状态信息,在一个较佳的实施例中,如果在新的检查点元组触发下,PE备份状态数据成功,则之前的检查点元组对应的检查点状态信息,以及PE在之前的检查点元组触发下备份的状态数据均可以可删除,这样可以及时释放存储空间。
步骤807:将该元组的批号与当前批号进行比较,如果该元组的批号等于当前批号,则调用算子对该元组进行处理,并将该元组的批号记录为当前批号,返回执行步骤801;如果该元组的批号小于当前批号,则丢弃该元组,返回步骤801;如果该元组的批号如果该元组的批号大于当前批号,执行步骤808;
步骤808:则将该元组加入缓冲队列,以便与当前批号具有相同批号的所有元组均被处理完毕之后,再处理该元组;
步骤809:更新源PE元组到齐标记;
步骤810:若检查点状态信息中的备份标记为1且当前批号所有元组已到齐,则将当前的状态数据进行备份;其中,所述目的PE的状态数据包括所述目的PE在处理所述普通元组过程中产生的数据;例如,在一个优选的实施例中,目的PE可以将状态数据备份至分布式存储中;相应地,在步骤805中,目的PE具体是从所述分布式存储器中加载自身最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复和数据回放;可以理解的是,目的PE可能会在不同的时间点,对自身的状态数据做多次备份,在目的PE读取到恢复类型的检查点元组之后,优选距离读取该检查点元组时刻最近一次备份的状态数据来进行状态恢复和数据回放。
步骤811:清理检查点状态信息;具体地,清理检查点状态信息包括:将检查点状态信息中的当前批号加1,将备份标记置为0,将源PE元组到齐标记清零;
步骤812:向下游PE派发备份类型的检查点元组。
需要说明的是,在另一个较优的实施例中,为了进一步提高流计算系统的运行效率,在步骤810中,目的PE可以采用异步备份的方式来备份状态数据;具体地,如图9所示,Operator提供接口1,目的PE通过调用接口1提取状态数据并存放到本地内存,同时目的PE通过接口2调用备份与恢复模块将本地内存中的状态数据备份至分布式存储;具体地,备份与恢复模块启动备份恢复线程,以使备份恢复线程通过分布式存储接口将本地内存中的状态数据备份至分布式存储。
通过上面的详细描述可以看出,本发明实施例提供的流计算系统中的数据备份方法,通过检查点元组来触发PE进行数据备份,PE从接收队列中读取到检查点元组之后,再执行备份操作,各个PE的备份操作不需要同步,使得数据备份不受PE之间数据传递时延的影响;同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。进一步地,PE通过接口调用,采用异步备份的方式来备份状态数据,可以保证数据备份操作不阻塞PE正常的数据处理,提高流计算系统的运行效率。
基于上述方法实施例,本发明实施例还提供一种流计算系统,用于实施上述方法,如图10所示,该流计算系统,包括:多个工作节点(101-103),工作节点(101-103)通过调用多个执行单元(PE)来对元组进行处理,所述执行单元包括:源PE(如图10中的PE1)和目的PE(如图10中的PE2);其中,所述源PE,用于将自身的发送队列中缓存的元组发送到所述目的PE的接收队列中;所述目的PE,用于依次读取自身的接收队列中的元组并进行处理;其中,所述源PE的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示PE进行数据备份或数据恢复;所述源PE的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;其中:
所述源PE,还用于接收用于状态数据备份的第一检查点命令,根据所述第一检查点命令生成第一检查点元组,将生成的检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第一检查点元组发送至所述目的PE的接收队列;
所述目的PE,还用于从自身的接收队列中读取所述第一检查点元组,判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;所述当前批号为所述目的PE当前处理的普通元组的批号;若所述第一检查点元组的批号与所述当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将自身的状态数据进行备份。本发明实施例提供的流计算系统,通过检查点元组来触发PE进行数据备份,各个PE从接收队列中读取到检查点元组之后,再执行备份操作,各个PE的备份操作不需要同步,使得数据备份不受PE之间数据传递时延的影响;同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。
进一步地,在另一个实施例中,目的PE在进行状态数据备份之后,如果流计算系统发生故障,或者外部触发的情形下,可以基于最近一次备份的状态数据进行数据恢复;具体地,所述源PE接收用于数据恢复的第二检查点命令,根据所述第二检查点命令生成用于指示所述目的PE进行状态数据恢复的第二检查点元组,将生成的第二检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第二检查点元组发送至所述目的PE的接收队列;
所述目的PE从自身的接收队列中读取所述第二检查点元组,根据所述第二检查点元组加载自身备份的状态数据,并基于所述状态数据进行状态恢复和数据回放。
进一步地,在另一个实施例中,目的PE在还可以定期对自身备份的状态数据做清理,以释放存储空间;具体地,所述源PE接收用于状态数据清理的第三检查点命令,根据所述第三检查点命令生成第三检查点元组,将生成的第三检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第三检查点元组通过消息通道发送至所述目的PE的接收队列;
所述目的PE从自身的接收队列中读取所述第三检查点元组,并根据所述第三检查点元组清理自身备份的状态数据。
进一步的,在一个优选的实施例中,上述第一检查点命令、第二检查点命令和第三检查点命令中是由检查点PE(如图10中的PE3)发送的;检查点PE用于负责管理整个流计算系统检查点相关信息的发送和管理。
在一个优选的实施例中,该流计算系统还包括:分布式存储器中104;
在将自身的状态数据进行备份的方面,所述目的PE具体用于,通过调用第一接口将自身当前的状态数据缓存到本地内存;通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份恢复线程,将所述本地内存中的状态数据备份至分布式存储器104。相应地,在加载自身备份的状态数据的方面,所述目的PE具体用于,从分布式存储器中104加载自身备份的状态数据。
可以看到,目的PE通过接口调用,采用异步备份的方式来备份状态数据,可以保证数据备份操作不阻塞PE正常的数据处理,提高流计算系统的运行效率。
基于上述方法及系统实施例,本发明实施例还提供另一种流计算系统,如图11所示,该流计算系统包括:分布式存储器、主控节点(Master)和多个工作节点(worker);其中,工作节点通过调用多个执行单元PE来对元组进行处理,所述执行单元包括:源PE和目的PE;主控节点中保存有检查点信息,所述检查点信息包括:检查点ID,时间戳、开始时间、完成时间,完成标记等,;主控节点主要用于检查点状态信息的管理,以及当系统出现异常时,根据检查点信息进行系统恢复决策;具体地,该主控节点,用于向所述检查点PE下发用于数据备份的备份命令、用于数据恢复的恢复命令或者用于状态数据清理的数据清理命令;所述检查点PE用于,在接收到所述主控节点发送的备份命令后,向所述源PE发送所述第一检查点命令;或者,在接收到所述主控节点发送的恢复命令后,向所述源PE发送所述第二检查点命令;或者,在接收到所述主控节点发送的数据清理命令后,向所述源PE发送所述第三检查点命令。
所述源PE,用于将自身的发送队列中缓存的元组发送到所述目的PE的接收队列中;所述目的PE,用于读取自身的接收队列中的元组并进行处理;所述源PE的发送队列中缓存的元组包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示PE进行数据备份或数据恢复;所述源PE的发送队列中不同的检查点元组具有不同的批号,相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;其中:
所述检查点PE用于,在接收到所述主控节点发送的备份命令后,向所述源PE发送所述第一检查点命令;或者,在接收到所述主控节点发送的恢复命令后,向所述源PE发送所述第二检查点命令;或者,在接收到所述主控节点发送的数据清理命令后,向所述源PE发送所述第三检查点命令。
所述源PE,还用于接收所述第一检查点命令,根据所述第一检查点命令生成第一检查点元组,将生成的检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第一检查点元组通过消息通道发送至所述目的PE的接收队列;
所述目的PE,还用于从自身的接收队列中读取所述第一检查点元组,判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有元组是否都已处理完毕;所述当前批号为所述目的PE当前处理的普通元组的批号;若所述第一检查点元组的批号与所述当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将自身的状态数据备份至所述分布式存储器中。
进一步地,在另一个实施例中,所述源PE还用于,接收所述第二检查点命令,根据所述第二检查点命令生成第二检查点元组,将生成的第二检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第二检查点元组通过消息通道发送至所述目的PE的接收队列;
所述目的PE还用于,从自身的接收队列中读取所述第二检查点元组,并根据所述第二检查点元组从所述分布式存储器中加载自身的状态数据,并基于所述状态数据进行状态恢复和数据回放。
进一步地,在另一个实施例中,所述源PE还用于,接收所述第三检查点命令,根据所述第三检查点命令生成第三检查点元组,将生成的第三检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第三检查点元组通过消息通道发送至所述目的PE的接收队列;
所述目的PE还用于,从自身的接收队列中读取所述第三检查点元组,并根据所述第二检查点元组从所述分布式存储器中清理自身备份的状态数据。
优选地,如图11所示,PE在进行状态数据备份时,可以先通过调用第一接口将当前的状态数据缓存到本地内存;然后通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份恢复线程,将所述本地内存中的状态数据备份至所述分布式存储器。
本发明实施例提供的流计算系统中,通过检查点元组来触发PE进行数据备份,PE从接收队列中读取到检查点元组之后,再执行备份操作,各个PE的备份操作不需要同步,使得数据备份不受PE之间数据传递时延的影响;同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。进一步地,通过采用异步备份的方式,可以避免对PE造成阻塞,提高了流计算系统的运行效率。
本发明实施例还提供另一种流计算系统,用于实现本发明实施例提供的数据备份方法,如图12所示,该流计算系统包括:源执行单元(PE)102、目的执行单元103;其中,源执行单元102和目的执行单元103位于不同的工作节点上,且源执行单元102为目的执行单元103的上游执行单元;源执行单元102用于将自身的发送队列中缓存的元组通过消息通道发送到目的执行单元103的接收队列;其中源执行单元102的发送队列中缓存的元组具体包括普通元组和检查点元组,且每个元组携带有用于表示该元组批次的批号;其中,检查点元组用于指示执行单元进行数据备份或数据恢复;所述源执行单元的发送队列中不同的检查点元组具有不同的批号,处于相邻的两个检查点元组之间的普通元组具有相同的批号,且每个检查点元组的批号与其相邻的一个普通元组的批号相同;其中:
源执行单元102包括:
检查点模块1021,用于接收用于状态数据备份的第一检查点命令;根据所述第一检查点命令生成第一检查点元组;
发送模块1022,用于将所述检查点模块生成的检查点元组加入源执行单元102的发送队列;并将所述发送队列中缓存的元组通过消息通道发送至目的执行单元103的接收队列。
目的执行单元103包括:业务数据处理模块1031,用于从目的执行单元103的接收队列中读取元组(包括普通元组和检查点元组)并对读取到的元组进行处理;
备份与恢复模块1032,用于当业务数据处理模块1031读取到的元组为用于指示目的执行单元103进行状态数据备份的第一检查点元组时,判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;所述当前批号为业务数据处理模块1031当前处理的普通元组的批号;若所述第一检查点元组的批号与所述当前批号相同,且与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将目的执行单元103当前的状态数据进行备份。
进一步地,在另一个实施例中,备份与恢复模块1032,还用于当业务数据处理模块1031读取到的元组为用于指示所述目的执行单元进行状态数据恢复的第一检查点元组时,加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复和数据回放。
进一步地,在另一个实施例中,目的执行单元103还维护有检查点状态信息,所述检查点状态信息包括:所述当前批号以及元组到齐标记;
相应地,在判断所述第一检查点元组的批号与当前批号是否相同,以及与所述第一检查点元组具有相同批号的所有普通元组是否都已到齐的方面,备份与恢复模块1032具体用于:
比较所述第一检查点元组的批号与所述检查点状态信息中包含的当前批号是否相等,以及根据所述检查点状态信息中的元组到齐标记确定与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕。
本发明实施例提供的流计算系统,源执行单元通过检查点元组来触发下游的目的执行单元进行数据备份,同时通过设置元组的批次,以及批号的比较,使得同一批号的所有元组到齐之后再进行状态备份,避免了流计算系统中数据处理的并发性和无序性对数据备份一致性的影响,从而保证了数据备份的一致性。
进一步地,在一个优选的实施例中,所述流计算系统还包括:分布式存储器104;备份与恢复模块1032具体可采用异步备份的方式对目的执行单元103的状态数据进行备份,具体地,备份与恢复模块1032通过调用第一接口将目的执行单元103当前的状态数据缓存到本地内存,然后再启动备份线程,以使所述备份线程将所述本地内存中的状态数据备份至所述分布式存储器,相应地,备份与恢复模块1032可以从所述分布式存储器中加载自身最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复和数据回放。
备份与恢复模块1032具体采用上述异步备份的方式,可以避免对PE造成阻塞,提高了流计算系统的运行效率。需要说明的是,本发明提供的流计算系统用于实施上述方法,其具体实现细节,可以参照上述方法实施例,此处不再赘述。本发明实施例中的执行单元(PE)可以以软件形态存在,例如进程、线程或软件功能模块,也可以以硬件的形态存在,比如处理器核,或具有数据处理能力的逻辑电路等,通过读取存储器中的可执行代码或业务处理逻辑,实现本发明实施例所描述的功能,本发明不做特别限定。
在本申请所提供的几个实施例中,应该理解到,所揭露数据备份和流计算系统可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例提供的网络设备中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (22)
1.一种流计算系统中的数据备份方法,所述流计算系统包括多个执行单元PE,用于对待处理的元组进行处理,所述多个执行单元包括:源PE和目的PE;其特征在于,所述数据备份方法包括:
所述目的PE接收所述源PE从发送队列发送的多个元组,并将所述多个元组缓存至所述目的PE的接收队列,所述多个元组中的每个元组都携带有表示该元组批次的批号;所述多个元组包括多个普通元组和多个检查点元组,不同的检查点元组具有不同的批号,所述发送队列中的两个检查点元组之间间隔有多个具有相同的批号的普通元组,且每个检查点元组的批号与其前相邻或后相邻的普通元组的批号相同;
所述目的PE从所述接收队列中读取第一检查点元组,所述第一检查点元组指示所述目的PE进行状态数据备份;
所述目的PE判断与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;
若与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则所述目的PE将自身的状态数据进行备份。
2.根据权利要求1所述的数据备份方法,其特征在于,还包括:
所述目的PE从所述接收队列中读取第二检查点元组,所述第二检查点元组指示所述目的PE进行状态数据恢复;
所述目的PE加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复。
3.根据权利要求1所述的数据备份方法,其特征在于,所述目的PE中保存有检查点状态信息,所述检查点状态信息包括:当前批号以及元组到齐标记;所述当前批号指示所述目的PE当前处理的元组的批号;
所述目的PE判断与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕包括:
所述目的PE根据所述检查点状态信息中的所述当前批号和所述元组到齐标记确定与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕。
4.根据权利要求1-3任一项所述的数据备份方法,其特征在于,还包括:
所述目的PE从所述接收队列中读取第三检查点元组,所述第三检查点元组指示所述目的PE进行状态数据清理;
所述目的PE清理自身备份的状态数据。
5.根据权利要求3所述的数据备份方法,其特征在于,还包括:所述目的PE清理所述检查点状态信息。
6.根据权利要求5所述的数据备份方法,其特征在于,所述清理所述检查点状态信息包括:
将所述检查点状态信息中的所述当前批号加1,并将所述元组到齐标记清零。
7.根据权利要求2所述的数据备份方法,其特征在于,所述流计算系统还包括:分布式存储器;
所述目的PE将自身的状态数据进行备份包括:
所述目的PE通过调用第一接口将当前的状态数据缓存到本地内存;
所述目的PE通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份线程,将所述本地内存中的状态数据备份至所述分布式存储器。
8.根据权利要求7所述的数据备份方法,其特征在于,所述目的PE加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复包括:
所述目的PE从所述分布式存储器中加载所述目的PE最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复。
9.根据权利要求3、5或6所述的数据备份方法,其特征在于,还包括:
所述目的PE从所述接收队列中读取第一普通元组;
如果所述第一普通元组的批号等于所述当前批号,则对所述第一普通元组进行处理;
如果所述第一普通元组的批号大于所述当前批号,则将所述第一普通元组加入缓存队列,并更新所述检查点状态信息中的元组到齐标记。
10.一种流计算系统中的目的执行单元,所述流计算系统包括源执行单元和所述目的执行单元;其特征在于,所述目的执行单元包括:
接收队列,用于缓存所述源执行单元从发送队列发送的多个元组,所述多个元组中的每个元组都携带有表示该元组批次的批号;所述多个元组包括多个普通元组和多个检查点元组,不同的检查点元组具有不同的批号,所述发送队列中的两个检查点元组之间间隔有多个具有相同的批号的普通元组,且每个检查点元组的批号与其前相邻或后相邻的普通元组的批号相同;
业务数据处理模块,用于从所述接收队列中读取元组并对读取到的元组进行处理;
备份与恢复模块,用于当所述业务数据处理模块读取到的元组为指示所述目的执行单元进行状态数据备份的第一检查点元组时,判断与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕;若与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将所述目的执行单元的状态数据进行备份。
11.根据权利要求10所述的目的执行单元,其特征在于,所述备份与恢复模块,还用于当所述业务数据处理模块读取到的元组为指示所述目的执行单元进行状态数据恢复的第二检查点元组时,加载自身备份的状态数据,并基于所述备份的状态数据进行状态恢复。
12.根据权利要求10所述的目的执行单元,其特征在于,所述目的执行单元中保存有检查点状态信息,所述检查点状态信息包括:当前批号以及元组到齐标记;所述当前批号指示所述业务数据处理模块当前处理的元组的批号;
所述备份与恢复模块具体根据所述检查点状态信息中的所述当前批号和所述元组到齐标记确定与所述第一检查点元组具有相同批号的所有普通元组是否都已处理完毕。
13.根据权利要求10所述的目的执行单元,其特征在于,所述备份与恢复模块还用于,当所述业务数据处理模块读取到用于指示所述目的执行单元进行状态数据清理的第三检查点元组时,清理自身备份的状态数据。
14.根据权利要求10-13任一项所述的目的执行单元,其特征在于,所述备份与恢复模块具体用于:
通过调用第一接口将所述目的执行单元当前的状态数据缓存到本地内存;
启动备份线程,以使所述备份线程将所述本地内存中的状态数据备份至所述流计算系统的分布式存储器。
15.根据权利要求14所述的目的执行单元,其特征在于,所述备份与恢复模块具体用于:
从所述分布式存储器中加载自身最近一次备份的状态数据,并基于所述最近一次备份的状态数据进行状态恢复。
16.根据权利要求12所述的目的执行单元,其特征在于,所述业务数据处理模块具体用于:当从所述接收队列中读取的第一普通元组的批号等于所述当前批号时,则对所述第一普通元组进行处理;当所述第一普通元组的批号大于所述当前批号时,则将所述第一普通元组缓存,并更新所述检查点状态信息中的元组到齐标记。
17.一种流计算系统,其特征在于,包括:多个执行单元PE,用于对待处理的元组进行处理,所述多个执行单元包括:源PE和目的PE;其中,
所述源PE,用于将自身的发送队列中缓存的多个元组发送给所述目的PE;
所述目的PE,用于接收所述源PE发送的所述多个元组并加入自身的接收队列,所述多个元组中的每个元组都携带有表示该元组批次的批号;所述多个元组包括多个普通元组和多个检查点元组,不同的检查点元组具有不同的批号,所述发送队列中的两个检查点元组之间间隔有多个具有相同的批号的普通元组,且每个检查点元组的批号与其前相邻或后相邻的普通元组的批号相同;从所述接收队列中读取第一检查点元组,所述第一检查点元组指示所述目的PE进行状态数据备份;若确定与所述第一检查点元组具有相同批号的所有普通元组都已处理完毕,则将自身的状态数据进行备份。
18.根据权利要求17所述的流计算系统,其特征在于,
所述源PE还用于,接收用于状态数据备份的第一检查点命令,根据所述第一检查点命令生成所述第一检查点元组,将生成的检查点元组加入所述源PE的发送队列。
19.根据权利要求17所述的流计算系统,其特征在于,
所述源PE还用于,接收用于数据恢复的第二检查点命令,根据所述第二检查点命令生成用于指示所述目的PE进行状态数据恢复的第二检查点元组,将生成的第二检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第二检查点元组发送至所述目的PE;
所述目的PE还用于,从所述接收队列中读取所述第二检查点元组,根据所述第二检查点元组加载自身备份的状态数据,并基于所述状态数据进行状态恢复。
20.根据权利要求17所述的流计算系统,其特征在于,
所述源PE还用于,接收用于状态数据清理的第三检查点命令,根据所述第三检查点命令生成第三检查点元组,将生成的第三检查点元组加入所述源PE的发送队列,将所述发送队列中缓存的所述第三检查点元组通过消息通道发送至所述目的PE;
所述目的PE还用于,从所述接收队列中读取所述第三检查点元组,并根据所述第三检查点元组清理自身备份的状态数据。
21.根据权利要求17-20任一项所述的流计算系统,其特征在于,所述流计算系统还包括:分布式存储器;
所述目的PE具体用于,通过调用第一接口将自身当前的状态数据缓存到本地内存;通过第二接口调用备份与恢复模块,以使所述备份与恢复模块启动备份恢复线程,将所述本地内存中的状态数据备份至所述分布式存储器。
22.根据权利要求21所述的流计算系统,其特征在于,所述目的PE具体用于,从所述分布式存储器中加载自身备份的状态数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710482647.6A CN107451012B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710482647.6A CN107451012B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
CN201410317676.3A CN104063293B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410317676.3A Division CN104063293B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451012A CN107451012A (zh) | 2017-12-08 |
CN107451012B true CN107451012B (zh) | 2020-09-25 |
Family
ID=51551015
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410317676.3A Active CN104063293B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
CN201710482647.6A Active CN107451012B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410317676.3A Active CN104063293B (zh) | 2014-07-04 | 2014-07-04 | 一种数据备份方法及流计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN104063293B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107438092B (zh) * | 2016-03-10 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 用于分布式场景中数据处理的方法和设备 |
CN107070976A (zh) * | 2017-01-13 | 2017-08-18 | 广西电网有限责任公司电力科学研究院 | 一种数据传输方法 |
CN106951341A (zh) * | 2017-01-20 | 2017-07-14 | 天翼阅读文化传播有限公司 | 一种实现分布式架构的数据库备份方法 |
CN108958967B (zh) * | 2017-05-17 | 2023-01-24 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法以及服务器 |
CN107992380B (zh) * | 2017-11-28 | 2021-09-17 | 北京东土科技股份有限公司 | 一种计算机系统、备份管理方法和计算机可读存储介质 |
CN108089946B (zh) * | 2017-12-15 | 2021-09-21 | 安徽长泰信息安全服务有限公司 | 一种多节点快速增量备份方法 |
CN112424742B (zh) * | 2018-07-13 | 2022-06-14 | 华为技术有限公司 | 一种ssd数据读取方法和装置 |
CN109885565B (zh) * | 2019-02-14 | 2021-05-25 | 中国银行股份有限公司 | 一种数据表清理方法和装置 |
CN109918212A (zh) * | 2019-02-14 | 2019-06-21 | 深圳市双合电气股份有限公司 | 一种电力数据监测系统 |
CN110569144B (zh) * | 2019-08-09 | 2022-09-06 | 苏宁金融科技(南京)有限公司 | 基于storm流式计算的数据处理方法和数据处理系统 |
CN112559243B (zh) * | 2019-09-25 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据快照方法、装置、电子设备及计算机可读存储介质 |
CN111752728B (zh) * | 2020-06-30 | 2022-09-06 | 中国科学技术大学 | 消息传输方法及装置 |
CN112765115A (zh) * | 2021-01-22 | 2021-05-07 | 联想(北京)有限公司 | 基于流计算的数据处理方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281570A (zh) * | 2008-05-28 | 2008-10-08 | 北京工业大学 | 一种可信计算系统 |
US7478209B1 (en) * | 2001-10-23 | 2009-01-13 | Teplin Application Limited Liability Co. | Packet processor memory interface with conflict detection and checkpoint repair |
CN101719842A (zh) * | 2009-11-20 | 2010-06-02 | 中国科学院软件研究所 | 一种基于云计算环境的分布式网络安全预警方法 |
CN101771577A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 一种为双向lsp建立双向转发检测的方法、系统及设备 |
CN103166845A (zh) * | 2013-03-01 | 2013-06-19 | 华为技术有限公司 | 数据处理方法和装置 |
CN103179032A (zh) * | 2011-12-20 | 2013-06-26 | 华为技术有限公司 | 一种路由备份方法及装置 |
CN103870340A (zh) * | 2014-03-06 | 2014-06-18 | 华为技术有限公司 | 流计算系统中的数据处理方法、控制节点及流计算系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19964236C2 (de) * | 1999-08-07 | 2003-01-30 | Ibm | Produkt zur schnellen Datensicherung und Datenübertragung |
US6678369B2 (en) * | 2000-06-09 | 2004-01-13 | Nms Communications Corporation | Network interface redundancy |
US7577806B2 (en) * | 2003-09-23 | 2009-08-18 | Symantec Operating Corporation | Systems and methods for time dependent data storage and recovery |
US7392319B2 (en) * | 2004-04-23 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for failure resilient forwarding of data over a computer network |
CN100544369C (zh) * | 2006-04-27 | 2009-09-23 | 华为技术有限公司 | 一种基于消息的分布式系统以及在其中通信的方法 |
CN101257441B (zh) * | 2008-02-29 | 2011-12-21 | 华为技术有限公司 | 转发报文的方法、设备、系统和接收报文的设备 |
-
2014
- 2014-07-04 CN CN201410317676.3A patent/CN104063293B/zh active Active
- 2014-07-04 CN CN201710482647.6A patent/CN107451012B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478209B1 (en) * | 2001-10-23 | 2009-01-13 | Teplin Application Limited Liability Co. | Packet processor memory interface with conflict detection and checkpoint repair |
CN101281570A (zh) * | 2008-05-28 | 2008-10-08 | 北京工业大学 | 一种可信计算系统 |
CN101771577A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 一种为双向lsp建立双向转发检测的方法、系统及设备 |
CN101719842A (zh) * | 2009-11-20 | 2010-06-02 | 中国科学院软件研究所 | 一种基于云计算环境的分布式网络安全预警方法 |
CN103179032A (zh) * | 2011-12-20 | 2013-06-26 | 华为技术有限公司 | 一种路由备份方法及装置 |
CN103166845A (zh) * | 2013-03-01 | 2013-06-19 | 华为技术有限公司 | 数据处理方法和装置 |
CN103870340A (zh) * | 2014-03-06 | 2014-06-18 | 华为技术有限公司 | 流计算系统中的数据处理方法、控制节点及流计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104063293B (zh) | 2017-06-27 |
CN107451012A (zh) | 2017-12-08 |
CN104063293A (zh) | 2014-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451012B (zh) | 一种数据备份方法及流计算系统 | |
US11385951B2 (en) | Monitoring and analyzing watchdog messages in an internet of things network environment | |
KR102464845B1 (ko) | 분산형 하드웨어 트레이싱 | |
US9495229B2 (en) | Methods, apparatus and computer programs for managing persistence | |
US10862786B2 (en) | Method and device for fingerprint based status detection in a distributed processing system | |
US9418129B2 (en) | Adaptive high-performance database redo log synchronization | |
CN107430606B (zh) | 具有并行持久性的消息代理系统 | |
JP6217644B2 (ja) | ルール分配サーバ、イベント処理システム、方法及びプログラム | |
CN107924330B (zh) | 用于集成的线程调度的计算设备和方法 | |
CN109491609A (zh) | 一种缓存数据处理方法、装置、设备及可读存储介质 | |
CN108664520B (zh) | 维护数据一致性的方法、装置、电子设备和可读存储介质 | |
US20170293516A1 (en) | Temporal Relationship Extension of State Machine Observer | |
US9830263B1 (en) | Cache consistency | |
US20030014516A1 (en) | Recovery support for reliable messaging | |
US9652310B1 (en) | Method and apparatus for using consistent-hashing to ensure proper sequencing of message processing in a scale-out environment | |
CN112769639B (zh) | 一种并行下发配置信息的方法及装置 | |
KR101499890B1 (ko) | Low Latency 프레임워크 시스템 | |
US20050050303A1 (en) | Hierarchical reorder buffers for controlling speculative execution in a multi-cluster system | |
CN108241616B (zh) | 消息推送方法和装置 | |
US10372542B2 (en) | Fault tolerant event management system | |
CN113268395B (zh) | 业务数据的处理方法、处理装置及终端 | |
CN113703669B (zh) | 一种缓存分区的管理方法、系统、设备及存储介质 | |
CN111314432B (zh) | 一种报文处理方法及装置 | |
EP3396553A1 (en) | Method and device for processing data after restart of node | |
CN114816866A (zh) | 故障处理方法、装置、电子设备和存储介质 |
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 |