CN112068997B - 数据备份方法、装置、设备及存储介质 - Google Patents

数据备份方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112068997B
CN112068997B CN202010940613.9A CN202010940613A CN112068997B CN 112068997 B CN112068997 B CN 112068997B CN 202010940613 A CN202010940613 A CN 202010940613A CN 112068997 B CN112068997 B CN 112068997B
Authority
CN
China
Prior art keywords
backup
window
heap
node
data
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
Application number
CN202010940613.9A
Other languages
English (en)
Other versions
CN112068997A (zh
Inventor
谢磊
柳正龙
胡细笔
朱金奇
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.)
Hundsun Technologies Inc
Original Assignee
Hundsun Technologies Inc
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 Hundsun Technologies Inc filed Critical Hundsun Technologies Inc
Priority to CN202010940613.9A priority Critical patent/CN112068997B/zh
Publication of CN112068997A publication Critical patent/CN112068997A/zh
Application granted granted Critical
Publication of CN112068997B publication Critical patent/CN112068997B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本申请公开了一种数据备份方法、装置、设备及存储介质,对于备份发起节点其本地维护有发送窗口,客户端可以一次向发送窗口中写满数据,备份发起节点可以将发送窗口中的窗口数据及其在发送窗口中的窗口位置编号发送给各个备份节点,每一备份节点可以对收到的窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编码作为确认窗口编码反馈给备份发起节点,备份发起节点响应于该确认窗口编号,检查是否收到K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将最小确认窗口编号发送至客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。本申请客户端可以一次批量写满整个窗口,实现了备份效率的极大提升。

Description

数据备份方法、装置、设备及存储介质
技术领域
本申请涉及数据处理技术领域,更具体的说,是涉及一种数据备份方法、装置、设备及存储介质。
背景技术
在分布式系统中,为了保证数据的可用性,会将同一份数据同步备份到多个节点上,组建一个集群,其中发起备份的节点会确认备份节点是否备份成功。
当前的方案一般采用同步确认的方式,比如N个备份节点,需要K(K≤N)个节点都确认备份成功后,发起节点才返回客户端,图1示出了当前分布式系统中备份数据同步等待K个节点确认的方式。
现有技术方案通过每一份数据的同步需要等待K个节点确认,来保证分布式系统的可用性,这会因为同步等待K个节点的确认信息拖慢整个系统的性能,导致数据备份效率低下。
发明内容
鉴于上述问题,提出了本申请以便提供一种数据备份方法、装置、设备及存储介质,以解决现有技术中每一份数据都需要同步等待K个节点确认,导致数据备份效率低下的问题。具体方案如下:
一种数据备份方法,应用于备份发起节点,方法包括:
将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。
优选地,所述响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,包括:
判断发送所述确认窗口编号的备份节点是否存在于当前堆中,所述当前堆中包含已向备份发起节点反馈确认窗口编号的各备份节点的值,所述值为备份节点最新反馈的确认窗口编号;
基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆;
检查新的堆中备份节点的个数是否达到K个;
若是,将新的堆中堆顶的备份节点的值确定为收到的K个备份节点的最小确认窗口编号。
优选地,所述判断发送所述确认窗口编号的备份节点是否存在于当前堆中,包括:
获取与当前堆对应的堆中节点信息,所述堆中节点信息包括当前堆中各备份节点的节点信息,节点信息包括标识、备份节点的值以及在当前堆中的位置;
基于所述堆中节点信息,判断发送所述确认窗口编号的备份节点是否存在于当前堆中。
优选地,还包括:
在得到新的堆后,根据新的堆更新对应的堆中节点信息。
优选地,所述基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,包括:
若判断发送所述确认窗口编号的备份节点存在于当前堆中,则将当前堆中发送所述确认窗口编号的备份节点的值修改为所述确认窗口编号,并通过堆排序的下沉算法对当前堆进行重排序,维护新的堆有序;
若判断发送所述确认窗口编号的备份节点不存在于当前堆中,则通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K。
优选地,所述通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K,包括:
将发送所述确认窗口编号的备份节点追加到当前堆的堆末尾;
按照堆排序的上升算法将堆末尾的备份节点上升,直至父节点比其小为止;
若堆中备份节点的个数超过K,将堆顶备份节点去除并将堆尾的备份节点迁移到堆顶;
按照堆排序的下沉算法对堆顶的备份节点下沉,直至堆排序稳定为止,得到新的堆。
一种数据备份方法,应用于备份节点,方法包括:
接收备份发起节点发送的窗口数据及其窗口位置编号;
对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
优选地,在所述对所述窗口数据进行备份之前,还包括:
检查所述窗口数据的有效性。
一种数据备份装置,应用于备份发起节点,装置包括:
数据发送单元,用于将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
数据接收单元,用于接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
备份检查单元,用于响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。
一种数据备份装置,应用于备份节点,装置包括:
备份数据接收单元,用于接收备份发起节点发送的窗口数据及其窗口位置编号;
数据备份单元,用于对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
一种数据备份设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如上的数据备份方法的各个步骤。
一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上的数据备份方法的各个步骤。
借由上述技术方案,本申请的数据备份方法,对于备份发起节点其本地维护有发送窗口,客户端可以一次向发送窗口中写满数据,备份发起节点可以将发送窗口中的窗口数据及其在发送窗口中的窗口位置编号发送给各个备份节点,每一备份节点可以对收到的窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编码作为确认窗口编码反馈给备份发起节点,备份发起节点响应于该确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。由此可见,本申请方案通过滑动窗口控制,客户端可以一次批量写满整个滑动窗口,其数据备份效率是现有技术的W倍,W为滑动窗口的大小,实现了备份效率的极大提升。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示例了现有技术中备份数据同步等待K个节点确认的流程示意图;
图2为本申请示例的一种数据备份流程示意图;
图3为本申请实施例提供的一种应用于备份发起节点的数据备份方法流程图;
图4示例了一种向堆中添加备份节点并对堆进行排序调整的过程示意图;
图5示例了一种对备份节点的值修改后堆重排序的过程示意图;
图6为本申请实施例提供的一种应用于备份节点的数据备份方法流程图;
图7为本申请实施例提供的一种应用于备份发起节点的数据备份装置结构示意图;
图8为本申请实施例提供的一种应用于备份节点的数据备份装置结构示意图;
图9为本申请实施例提供的数据备份设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供了一种数据备份方案,能够极大提高数据备份的效率。
本申请方案可以基于具备数据处理能力的终端实现,该终端可以是手机、电脑、服务器、云端等。
首先,参见图2,其示例了本申请的数据备份方案的整体流程示意图。
对于备份发起者,也即备份发起节点,其维护一个发送窗口,客户端可以一次批量写满发送窗口,发送窗口的大小定义为W,则发送窗口中可以包含W份数据,相比于现有技术中客户端一次只能写入一份数据,本申请方案可以提高W倍的数据备份效率。
备份发起节点将发送窗口中的窗口数据及其在发送窗口中的窗口位置编号(简称窗口号)发送至各个备份节点。
与备份发起节点的发送窗口相对应的,每个备份节点可以维护接收窗口,与发送窗口一一映射,备份节点将窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号(简称为确认窗口号)反馈给备份发起节点。
备份发起节点检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,则认为该最小确认窗口编号对应的窗口数据已经备份成功,将发送窗口滑动,并通知客户端继续写入新的数据。
举例说明如下:
客户端有数据0,1,2,3,4,5,6,7,8,9,10需要进行备份。共有A,B,C三个备份节点。K值等于2。
备份发起节点的发送窗口大小为4,则客户端将0,1,2,3一次写入备份发起节点的发送窗口。
起始状态,备份发起节点的发送窗口起始序号是0,则发满整个窗口,将数据0,1,2,3发送至A,B,C。
A,B,C会收到0,1,2,3,每个备份节点成功备份后都把3这个最大窗口号反馈给备份发起节点。
备份发起节点只要确认收到两个备份节点反馈的窗口号都是3,则确认发送的0,1,2,3都成功备份,将发送窗口滑动。通知客户端继续从3后写入新的数据。客户端将4,5,6,7发送至备份发起节点的发送窗口。备份发起节点继续按照上述流程将发送窗口中的数据发送至各备份节点。
显然,相比于现有技术一次仅能写入一条数据,需要同步等待K个节点的确认信息才能继续写入数据的方式,本申请的数据备份效率能够提升W倍,W为窗口的大小。
接下来,结合图3,从备份发起节点的角度,对本申请的数据备份方法进行介绍,如图3所示,数据备份方法可以包括如下步骤:
步骤S100、将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点。
具体的,备份发起节点本地可以维护发送窗口,其大小可以是W,则客户端可以一次批量写入W份数据。窗口数据在发送窗口中存在对应的窗口位置编号。备份发起节点将窗口数据及其在发送窗口中的窗口位置编号一起发送至各个备份节点。
步骤S110、接收备份节点反馈的确认窗口编号。
其中,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号。
可以理解的是,备份发起节点可能会接收到不同备份节点发送的相同或不同的确认窗口编号,同时,备份发起节点可能会在一段时间内收到同一备份节点发送的多个不同的确认窗口编号。
步骤S120、响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,执行步骤S130。
具体的,备份发起节点可以响应所接收的确认窗口编号,进而检查是否已经收到了设定数值K个备份节点的最小确认窗口编号。
示例如,K为3。备份节点1返回确认窗口编号:3,备份节点2返回确认窗口编号:5,备份节点3返回确认窗口编号:4。则最小确认窗口编号是:3。
可以理解的是,若备份发起节点已经收到了K个备份节点的最小确认窗口编号,则代表该最小确认窗口编号对应的窗口数据已经成功备份,可以进一步执行下述步骤S130。反之,则需要备份发起节点继续等待。
步骤S130、将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端。
具体的,在收到了K个备份节点的最小确认窗口编号时,表示最小确认窗口编号对应的窗口数据已经成功备份,因此可以将发送窗口滑动,以供客户端继续写入最小确认窗口编号之后的新数据。
本申请实施例提供的数据备份方法,对于备份发起节点其本地维护有发送窗口,客户端可以一次向发送窗口中写满数据,备份发起节点可以将发送窗口中的窗口数据及其在发送窗口中的窗口位置编号发送给各个备份节点,每一备份节点可以对收到的窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编码作为确认窗口编码反馈给备份发起节点,备份发起节点响应于该确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。由此可见,本申请方案通过滑动窗口控制,客户端可以一次批量写满整个滑动窗口,其数据备份效率是现有技术的W倍,W为滑动窗口的大小,实现了备份效率的极大提升。
在本申请的另一个实施例中,对上述步骤S120,响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号的过程进行介绍。
对于备份发起节点而言,其在收到备份发起节点反馈的确认窗口编号时,可以执行检查K个备份节点的最小确认窗口编号的过程。为了提升备份发起节点的检查性能,加快检查速度,本申请实施例中提供了一种可选的实施方式。
本实施例中基于堆排序算法,对于已经向备份发起节点反馈确认窗口编号的备份节点,通过堆排序方式记录在备份发起节点的当前堆中。
记录备份发起节点收到一个目标备份发起节点反馈的确认窗口编号的时刻为当前时刻,则备份发起节点当前时刻的堆作为当前堆,其中包含有当前时刻之前已经向备份发起节点反馈确认窗口编号的各备份节点的值,该值为备份节点最新反馈的确认窗口编号。
需要说明的是,当前堆需要保持大小不超过K,即当前堆中的备份发起节点的个数不超过K,若超出后需要按照堆排序算法进行堆顶删除维护。
在此基础上,备份发起节点检查K个备份节点的最小确认窗口编号的过程可以包括:
S1、判断发送所述确认窗口编号的备份节点是否存在于当前堆中。
具体的,对于当前时刻收到的确认窗口编号的发起备份节点,判断其是否已经存在于当前堆中。若存在,则说明该备份节点在先已经反馈过确认窗口编号,若不存在,则说明该备份节点此次为首次反馈确认窗口编号。
S2、基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆。
具体的,根据判断结果的不同,备份发起节点可以采用相应的方式,利用备份节点反馈的确认窗口编号对当前堆进行更新,得到新的堆。新的堆需要维护其有序且大小不超过K。
S3、检查新的堆中备份节点的个数是否达到K个,若是,执行S4,若否,继续等待。
S4、将新的堆中堆顶的备份节点的值确定为收到的K个备份节点的最小确认窗口编号。
可以理解的是,堆排序其实也是一种选择排序,是一种树形选择排序,本实施例中利用了树形选择排序的特点,其能够保存在先的部分比较结果,可以减少比较次数,因此能够提升检查K个备份节点的最小确认窗口编号的性能。
其中,上述S1,判断发送所述确认窗口编号的备份节点是否存在于当前堆中的过程,可以包括:
S11、获取与当前堆对应的堆中节点信息。
其中,所述堆中节点信息包括当前堆中各备份节点的节点信息,节点信息可以包括标识、备份节点的值以及在当前堆中的位置。
每个备份节点均存在唯一的标识,如备份节点ID。节点信息中包含了备份节点的标识及在当前堆中的位置。
基于备份节点的标识可以判断备份节点是否在当前堆中,以及在判断结果为是时,可以进一步确定其在当前堆中的位置。
S12、基于所述堆中节点信息,判断发送所述确认窗口编号的备份节点是否存在于当前堆中。
具体的,可以检索堆中节点信息,判断其中是否包含发送所述确认窗口编号的备份节点的标识,若包含,则说明存在于当前堆中,否则,说明不存在于当前堆中。
进一步可选的,在上述S2,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆之后,可以进一步根据新的堆更新对应的堆中节点信息。
可以理解的是,在对当前堆进行更新后,会删除或新增或修改部分备份节点的值,同时,还可能会影响其他一些备份节点的位置,因此,可以在得到新的堆后,更新对应的堆中节点信息。
接下来,对上述S2,基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆的过程进行介绍。
其中,判断结果分为两种:
第一种、判断发送所述确认窗口编号的备份节点不存在于当前堆中。
基于此,可以通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K。
本实施例中介绍了通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K的一种可选实现方式,包括:
1)将发送所述确认窗口编号的备份节点追加到当前堆的堆末尾。
2)按照堆排序的上升算法将堆末尾的备份节点上升,直至父节点比其小为止。
3)若堆中备份节点的个数超过K,将堆顶备份节点去除并将堆尾的备份节点迁移到堆顶。
4)按照堆排序的下沉算法对堆顶的备份节点下沉,直至堆排序稳定为止,得到新的堆。
参照图4,其示例了一种向堆中添加备份节点,并对堆进行排序调整的过程。
当备份节点(ID=4)反馈其确认窗口编号:9时,判断备份节点(ID=4)不在当前堆中。
将备份节点(ID=4)追加到当前堆的末尾。按照堆排序的上升算法将备份节点(ID=4)上升,直至父节点比其小为止。判断若堆中备份节点的个数超过K=5,将堆顶备份节点去除,并将堆尾的备份节点(ID=1)迁移至堆顶。按照堆排序的下沉算法,对堆顶的备份节点(ID=1)下沉,直至堆排序稳定为止,得到新的堆。
可以理解的是,在得到新的堆后,可以更新对应的堆中节点信息,以图4最后得到的新的堆为例,其对应的更新后堆中节点信息可以如下:
id 7:{sequence_no:7,object_id:7,heap_index:0,}
id4:{sequence_no:9,object_id:4,heap_index:1,}
id5:{sequence_no:9,object_id:5,heap_index:2,}
id3:{sequence_no:12,object_id:3,heap_index:3,}
id1:{sequence_no:10,object_id:1,heap_index:4,}
其中,sequence_no表示备份节点的值,object_id表示备份节点的标识,heap_index表示备份节点在堆中的位置。
第二种、判断发送所述确认窗口编号的备份节点存在于当前堆中。
基于此,本申请可以基于堆节点信息中记录的备份节点的位置,直接定位到备份节点在当前堆中的位置,进一步将其值修改为确认窗口编号。也即,将当前堆中发送所述确认窗口编号的备份节点的值修改为所述确认窗口编号,并通过堆排序的下沉算法对当前堆进行重排序,维护新的堆有序。
可以理解的是,在对当前堆中备份节点的值修改后,需要通过下沉算法对备份节点进行下沉重排序,并进一步维护新的堆有序。
参照图5,其示例了一种对备份节点的值修改后堆重排序的过程。
当备份节点(ID=3)反馈其确认窗口编号:16时,判断备份节点(ID=3)在当前堆中。
将备份节点(ID=3)的值修改为16。按照堆排序的下沉算法,对备份节点(ID=3)下沉,直至堆排序稳定为止,得到新的堆。
可以理解的是,在得到新的堆后,可以更新对应的堆中节点信息,以图5最后得到的新的堆为例,其对应的更新后堆中节点信息可以如下:
id 4:{sequence_no:9,object_id:4,heap_index:0,}
id 1:{sequence_no:10,object_id:1,heap_index:1,}
id5:{sequence_no:9,object_id:5,heap_index:2,}
id3:{sequence_no:12,object_id:3,heap_index:3,}
id7:{sequence_no:16,object_id:3,heap_index:4,}
本申请实施例中对堆排序算法进行了改进,通过堆中节点信息记录的备份节点在堆中位置,可以直接定位到堆中的备份节点,并在定位位置直接进行上升或下沉操作实现重排序,而原始堆排序算法只能操作堆顶。
在本申请的另一个实施例中,从备份节点的角度,对数据备份过程进行介绍,参见图6所示,数据备份过程可以包括:
步骤S200、接收备份发起节点发送的窗口数据及其窗口位置编号。
步骤S210、对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点。
具体的,通过将确认窗口编号反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
进一步可选的,备份节点在对窗口数据进行备份之前还可以进一步增加对窗口数据有效性验证的过程,如验证窗口数据是否连续等。
下面对本申请实施例提供的应用于备份发起节点的数据备份装置进行描述,下文描述的数据备份装置与上文描述的应用于备份发起节点的数据备份方法可相互对应参照。
参见图7,图7为本申请实施例公开的一种应用于备份发起节点的数据备份装置结构示意图。
如图7所示,该装置可以包括:
数据发送单元11,用于将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
数据接收单元12,用于接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
备份检查单元13,用于响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。
可选的,上述备份检查单元响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号的过程,可以包括:
判断发送所述确认窗口编号的备份节点是否存在于当前堆中,所述当前堆中包含已向备份发起节点反馈确认窗口编号的各备份节点的值,所述值为备份节点最新反馈的确认窗口编号;
基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆;
检查新的堆中备份节点的个数是否达到K个;
若是,将新的堆中堆顶的备份节点的值确定为收到的K个备份节点的最小确认窗口编号。
可选的,上述备份检查单元判断发送所述确认窗口编号的备份节点是否存在于当前堆中的过程,可以包括:
获取与当前堆对应的堆中节点信息,所述堆中节点信息包括当前堆中各备份节点的节点信息,节点信息包括标识、备份节点的值以及在当前堆中的位置;
基于所述堆中节点信息,判断发送所述确认窗口编号的备份节点是否存在于当前堆中。
可选的,上述备份检查单元响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号的过程,还可以包括:
在得到新的堆后,根据新的堆更新对应的堆中节点信息。
可选的,上述备份检查单元基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新的过程,可以包括:
若判断发送所述确认窗口编号的备份节点存在于当前堆中,则将当前堆中发送所述确认窗口编号的备份节点的值修改为所述确认窗口编号,并通过堆排序的下沉算法对当前堆进行重排序,维护新的堆有序;
若判断发送所述确认窗口编号的备份节点不存在于当前堆中,则通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K。
可选的,上述备份检查单元通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K的过程,可以包括:
将发送所述确认窗口编号的备份节点追加到当前堆的堆末尾;
按照堆排序的上升算法将堆末尾的备份节点上升,直至父节点比其小为止;
若堆中备份节点的个数超过K,将堆顶备份节点去除并将堆尾的备份节点迁移到堆顶;
按照堆排序的下沉算法对堆顶的备份节点下沉,直至堆排序稳定为止,得到新的堆。
下面对本申请实施例提供的应用于备份节点的数据备份装置进行描述,下文描述的数据备份装置与上文描述的应用于备份节点的数据备份方法可相互对应参照。
参见图8,图8为本申请实施例公开的一种应用于备份节点的数据备份装置结构示意图。
如图8所示,该装置可以包括:
备份数据接收单元21,用于接收备份发起节点发送的窗口数据及其窗口位置编号;
数据备份单元22,用于对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
可选的,上述数据备份装置还可以包括:
有效性检查单元,用于在对所述窗口数据进行备份之前,检查所述窗口数据的有效性。
本申请实施例提供的数据备份装置可应用于数据备份设备,如终端:手机、电脑等。可选的,图9示出了数据备份设备的硬件结构框图,参照图9,数据备份设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;
处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。
或者,
所述程序用于:
接收备份发起节点发送的窗口数据及其窗口位置编号;
对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据。
或者,
所述程序用于:
接收备份发起节点发送的窗口数据及其窗口位置编号;
对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (12)

1.一种数据备份方法,其特征在于,应用于备份发起节点,方法包括:
将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据,所述最小确认窗口编号为K个备份节点反馈的确认窗口编号中的最小窗口位置编号。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,包括:
判断发送所述确认窗口编号的备份节点是否存在于当前堆中,所述当前堆中包含已向备份发起节点反馈确认窗口编号的各备份节点的值,所述值为备份节点最新反馈的确认窗口编号;
基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,得到新的堆;
检查新的堆中备份节点的个数是否达到K个;
若是,将新的堆中堆顶的备份节点的值确定为收到的K个备份节点的最小确认窗口编号。
3.根据权利要求2所述的方法,其特征在于,所述判断发送所述确认窗口编号的备份节点是否存在于当前堆中,包括:
获取与当前堆对应的堆中节点信息,所述堆中节点信息包括当前堆中各备份节点的节点信息,节点信息包括标识、备份节点的值以及在当前堆中的位置;
基于所述堆中节点信息,判断发送所述确认窗口编号的备份节点是否存在于当前堆中。
4.根据权利要求3所述的方法,其特征在于,还包括:
在得到新的堆后,根据新的堆更新对应的堆中节点信息。
5.根据权利要求2所述的方法,其特征在于,所述基于判断结果,利用备份节点反馈的所述确认窗口编号对当前堆进行更新,包括:
若判断发送所述确认窗口编号的备份节点存在于当前堆中,则将当前堆中发送所述确认窗口编号的备份节点的值修改为所述确认窗口编号,并通过堆排序的下沉算法对当前堆进行重排序,维护新的堆有序;
若判断发送所述确认窗口编号的备份节点不存在于当前堆中,则通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K。
6.根据权利要求5所述的方法,其特征在于,所述通过堆排序算法,将发送所述确认窗口编号的备份节点放入当前堆,并维护新的堆有序且堆中备份节点的个数不超过K,包括:
将发送所述确认窗口编号的备份节点追加到当前堆的堆末尾;
按照堆排序的上升算法将堆末尾的备份节点上升,直至父节点比其小为止;
若堆中备份节点的个数超过K,将堆顶备份节点去除并将堆尾的备份节点迁移到堆顶;
按照堆排序的下沉算法对堆顶的备份节点下沉,直至堆排序稳定为止,得到新的堆。
7.一种数据备份方法,其特征在于,应用于备份节点,方法包括:
接收备份发起节点发送的窗口数据及其窗口位置编号;
对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据,所述最小确认窗口编号为K个备份节点反馈的确认窗口编号中的最小窗口位置编号。
8.根据权利要求7所述的方法,其特征在于,在所述对所述窗口数据进行备份之前,还包括:
检查所述窗口数据的有效性。
9.一种数据备份装置,其特征在于,应用于备份发起节点,装置包括:
数据发送单元,用于将本地维护的发送窗口中的窗口数据及其在发送窗口中的窗口位置编号,发送至各备份节点,所述发送窗口中的窗口数据由客户端写入;
数据接收单元,用于接收备份节点反馈的确认窗口编号,所述确认窗口编号为备份节点成功备份的窗口数据的最大窗口位置编号;
备份检查单元,用于响应于所述确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,若是,将发送窗口滑动,并将所述最小确认窗口编号发送至所述客户端,以供客户端基于最小确认窗口编号继续向备份发起节点的发送窗口写入数据,所述最小确认窗口编号为K个备份节点反馈的确认窗口编号中的最小窗口位置编号。
10.一种数据备份装置,其特征在于,应用于备份节点,装置包括:
备份数据接收单元,用于接收备份发起节点发送的窗口数据及其窗口位置编号;
数据备份单元,用于对所述窗口数据进行备份,并将成功备份的窗口数据的最大窗口位置编号作为确认窗口编号,反馈给备份发起节点,以供备份发起节点基于确认窗口编号,检查是否收到设定数值K个备份节点的最小确认窗口编号,判断是否允许客户端向备份发起节点写入新的数据,所述最小确认窗口编号为K个备份节点反馈的确认窗口编号中的最小窗口位置编号。
11.一种数据备份设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~6或7~8中任一项所述的数据备份方法的各个步骤。
12.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~6或7~8中任一项所述的数据备份方法的各个步骤。
CN202010940613.9A 2020-09-09 2020-09-09 数据备份方法、装置、设备及存储介质 Active CN112068997B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010940613.9A CN112068997B (zh) 2020-09-09 2020-09-09 数据备份方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010940613.9A CN112068997B (zh) 2020-09-09 2020-09-09 数据备份方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112068997A CN112068997A (zh) 2020-12-11
CN112068997B true CN112068997B (zh) 2023-12-19

Family

ID=73663051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010940613.9A Active CN112068997B (zh) 2020-09-09 2020-09-09 数据备份方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112068997B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005011229A2 (fr) * 2003-07-21 2005-02-03 France Telecom Procédé pour évaluer la bande passante disponible d'un canal de transmission lors d'une transmission de données et dispositif d'émission pour la mise en couvre du procédé
CN102665074A (zh) * 2012-04-10 2012-09-12 上海算芯微电子有限公司 用于视频编/解码的邻居查找装置及其方法
CN103457707A (zh) * 2012-05-30 2013-12-18 华为技术有限公司 一种数据传输方法、装置及系统
CN103581262A (zh) * 2012-08-06 2014-02-12 腾讯科技(深圳)有限公司 一种主备数据同步方法、装置和系统
CN104484295A (zh) * 2014-12-16 2015-04-01 中国人民解放军国防科学技术大学 并行计算机系统中基于接收方滑动窗口的数据传输方法
CN106445409A (zh) * 2016-09-13 2017-02-22 郑州云海信息技术有限公司 一种分布式块存储的数据写入方法及装置
CN106790480A (zh) * 2016-12-12 2017-05-31 中国航空工业集团公司西安航空计算技术研究所 一种用于链路聚合链接条件下的文件传输方法
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器
CN109062512A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种分布式存储集群、数据读写方法、系统及相关装置
US10289496B1 (en) * 2015-09-23 2019-05-14 EMC IP Holding Company LLC Parallel proxy backup methodology
CN111198662A (zh) * 2020-01-03 2020-05-26 腾讯科技(深圳)有限公司 一种数据存储方法、装置和计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014514618A (ja) * 2011-04-11 2014-06-19 株式会社日立製作所 データ管理方法及びデータ管理システム

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005011229A2 (fr) * 2003-07-21 2005-02-03 France Telecom Procédé pour évaluer la bande passante disponible d'un canal de transmission lors d'une transmission de données et dispositif d'émission pour la mise en couvre du procédé
CN102665074A (zh) * 2012-04-10 2012-09-12 上海算芯微电子有限公司 用于视频编/解码的邻居查找装置及其方法
CN103457707A (zh) * 2012-05-30 2013-12-18 华为技术有限公司 一种数据传输方法、装置及系统
CN103581262A (zh) * 2012-08-06 2014-02-12 腾讯科技(深圳)有限公司 一种主备数据同步方法、装置和系统
CN104484295A (zh) * 2014-12-16 2015-04-01 中国人民解放军国防科学技术大学 并行计算机系统中基于接收方滑动窗口的数据传输方法
US10289496B1 (en) * 2015-09-23 2019-05-14 EMC IP Holding Company LLC Parallel proxy backup methodology
CN106445409A (zh) * 2016-09-13 2017-02-22 郑州云海信息技术有限公司 一种分布式块存储的数据写入方法及装置
CN106790480A (zh) * 2016-12-12 2017-05-31 中国航空工业集团公司西安航空计算技术研究所 一种用于链路聚合链接条件下的文件传输方法
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器
CN109062512A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种分布式存储集群、数据读写方法、系统及相关装置
CN111198662A (zh) * 2020-01-03 2020-05-26 腾讯科技(深圳)有限公司 一种数据存储方法、装置和计算机可读存储介质

Also Published As

Publication number Publication date
CN112068997A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
US8539107B2 (en) Personal information management data synchronization
CN106657174B (zh) 一种数据同步方法、更新方法及装置
CN112367149B (zh) 消息获取方法、装置、设备及存储介质
WO2000029998A2 (en) Optimization of change log handling
CN101207580A (zh) 即时通信平台和业务平台同步增删联系人的方法及系统
US11455117B2 (en) Data reading method, apparatus, and system, avoiding version rollback issues in distributed system
WO2006021841A2 (en) Efficient synchronisation of smart card data with data stored on an external server
CN112068997B (zh) 数据备份方法、装置、设备及存储介质
CN113467719A (zh) 数据写入方法及装置
WO2024041433A1 (zh) 数据处理方法以及装置
CN112995262B (zh) 分布式事务提交方法、系统及计算设备
CN111708835A (zh) 区块链数据存储方法及装置
JP4142866B2 (ja) データベース同期化装置及びプログラム
CN112749172A (zh) 一种缓存与数据库之间的数据同步方法及系统
JP3501944B2 (ja) データベース管理装置、および、そのプログラムが記録された記録媒体
CN108345431B (zh) 一种数据读取的方法及装置
CN111970091A (zh) 一种通信方法、系统、设备及计算机可读存储介质
CN113297214A (zh) 基于dag区块链的快照处理方法、设备及存储介质
JP2000040025A (ja) デ―タベ―ス管理装置、および、そのプログラムが記録された記録媒体
JP3030153B2 (ja) ファイル転送におけるアプリ連携処理装置
CN113365231A (zh) 一种发送短信的方法和装置
JP3487786B2 (ja) 電子メールシステム、電子メール送信装置及び電子メール送信方法
CN114116613B (zh) 基于分布式文件系统的元数据查询方法、设备和存储介质
CN111274320B (zh) 分布式存储系统的控制方法、装置及分布式存储系统
CN117579229A (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