CN113297156A - 一种数据同步方法、装置、设备及介质 - Google Patents

一种数据同步方法、装置、设备及介质 Download PDF

Info

Publication number
CN113297156A
CN113297156A CN202010110448.4A CN202010110448A CN113297156A CN 113297156 A CN113297156 A CN 113297156A CN 202010110448 A CN202010110448 A CN 202010110448A CN 113297156 A CN113297156 A CN 113297156A
Authority
CN
China
Prior art keywords
file
data block
target
metadata
node
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.)
Pending
Application number
CN202010110448.4A
Other languages
English (en)
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.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
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 Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN202010110448.4A priority Critical patent/CN113297156A/zh
Publication of CN113297156A publication Critical patent/CN113297156A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems

Abstract

本申请公开了一种数据同步方法、装置、设备及介质,包括获取源节点对当前最新的目标文件进行分块后得到的数据块集;获取目标节点发送的元数据文件;所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地存储的所述目标文件对应的元数据信息;计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。本申请的技术方案能够以更少的网络资源完成同步工作,提高了数据同步效率。

Description

一种数据同步方法、装置、设备及介质
技术领域
本发明涉及数据同步技术领域,特别涉及一种数据同步方法、装置、设备及介质。
背景技术
现有技术中,当需要把一个文件从A机器同步到B机器上时,通常的做法都是直接远程拷贝过去。但是,在后续文件有更新时,仍然需要同步全量文件数据源,导致需要占用非常多的网络带宽。在数据量暴增的当下,网络资源是极其宝贵的。如何利用更少的网络资源来完成同步工作是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种数据同步方法、装置、设备及介质,能够以更少的网络资源完成同步工作,提高了数据同步效率。其具体方案如下:
第一方面,本申请公开了一种数据同步方法,应用于第三方计算节点,包括:
获取源节点对当前最新的目标文件进行分块后得到的数据块集;
获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;
通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;
将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
可选的,所述计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息,包括:
计算当前最新的所述目标文件的数据块集中每个数据块的哈希值;
以每个所述数据块的哈希值为value,以每个所述数据块的偏移量对应的字符串为key,构建相应的map元数据,以得到所述当前最新元数据信息。
可选的,若本次同步操作之前在所述目标节点的本地还未曾保存过所述目标文件,则获取目标节点发送的元数据文件,包括:
获取目标节点发送的内容为空的元数据文件。
可选的,所述获取源节点对当前最新的目标文件进行分块后得到的数据块集,包括:
利用多个所述第三方计算节点,并发获取源节点对当前最新的目标文件进行分块后得到的数据块集;
相应的,所述将所述增量数据块发送至所述目标节点,包括:
利用多个所述第三方计算节点,将所述增量数据块并发发送至所述目标节点。
第二方面,本申请公开了一种数据同步方法,应用于目标节点,包括:
当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
获取所述第三方计算节点发送的所述增量数据块,并利用所述增量数据块对本地的所述目标文件进行同步更新。
可选的,所述数据同步方法,还包括:
在首次存储所述目标文件时,根据所述目标文件的文件大小创建多个文件存储区;
通过多个数据写入线程将所述目标文件对应的所有数据块分别写入所述多个文件存储区,并记录不同所述文件存储区各自对应的不同文件偏移量;其中,不同的所述数据写入线程用于对不同的所述文件存储区进行数据写入操作。
可选的,所述利用所述增量数据块对本地的所述目标文件进行同步更新,包括:
根据所述增量数据块对应的偏移量,从所述多个文件存储区中确定出目标文件存储区;
将所述增量数据块对所述目标文件存储区中的数据进行更新同步,然后根据偏移量将所有所述文件存储区中的数据块进行拼接,得到更新后的所述目标文件。
第三方面,本申请公开了一种数据同步装置,应用于第三方计算节点,包括:
数据块集获取模块,用于获取源节点对当前最新的目标文件进行分块后得到的数据块集;
元数据文件获取模块,用于获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据计算模块,用于计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;
增量数据块确定模块,用于通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;
增量数据块发送模块,用于将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
第四方面,本申请公开了一种数据同步装置,应用于目标节点,包括:
元数据文件读取模块,用于当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据文件发送模块,用于将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
增量数据块获取模块,用于获取所述第三方计算节点发送的所述增量数据块;
文件同步更新模块,用于利用所述增量数据块对本地的所述目标文件进行同步更新。
第五方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据同步方法。
第六方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据同步方法。
本申请中,通过第三方计算节点获取源节点对当前最新的目标文件进行分块后得到的数据块集以及获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息,并计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息,然后通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块,并将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。可见,本申请中的第三方计算节点通过上述过程可以计算出增量数据块,然后通过增量数据块完成对目标节点上的目标文件的同步更新,相对于通过全量文件数据对目标节点上的目标文件进行同步更新的做法,由于增量数据块的数据量通常远小于全量文件数据的数据量,从而大幅减少了同步过程中的网络资源占用率,提升了数据同步效率。并且,本申请在确定上述增量数据块的过程中,是通过比对目标文件的元数据信息来实现的,相较于直接对目标文件自身的文件内容进行比对来确定增量数据块的方式,由于元数据信息的数据量远远小于文件内容本身的数据量,这样本申请只需消耗较少的运算资源便可以确定出增量数据块,提高了增量数据块的确定效率,进而也有助于提高目标文件的同步效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种应用于第三方计算节点的数据同步方法流程图;
图2为本申请公开的一种具体的应用于第三方计算节点的数据同步方法流程图;
图3为本申请公开的一种应用于目标节点的数据同步方法流程图;
图4为本申请公开的一种具体数据同步方案示意图;
图5为本申请公开的一种应用于第三方计算节点的数据同步装置结构示意图;
图6为本申请公开的一种应用于目标节点的数据同步装置结构示意图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,当需要把一个文件从A机器同步到B机器上时,通常的做法都是直接远程拷贝过去。但是,在后续文件有更新时,仍然需要同步全量文件数据源,导致需要占用非常多的网络带宽。在数据量暴增的当下,网络资源是极其宝贵的。如何利用更少的网络资源来完成同步工作是目前有待解决的问题。为此,本申请提供了一种数据同步方案,能够以更少的网络资源完成同步工作,提高了数据同步效率。
参见图1所示,本发明实施例公开了一种数据同步方法,应用于第三方计算节点,包括:
步骤S11:获取源节点对当前最新的目标文件进行分块后得到的数据块集。
可以理解的是,本实施例中的源节点是指直接利用本地保存的目标文件,对用户针对上述目标文件发起的数据访问请求进行响应的节点。其中,在对用户发起的数据访问请求进行响应的过程中,源节点上保存的目标文件的文件内容可能会被更新。本实施例中的目标节点是指基于同步备份的目的,用来保存与源节点中的目标文件相一致的文件内容的节点。
本实施例中,在进行数据同步时,源节点需要对本地保存的当前最新的目标文件进行分块处理,以形成相应的包含多个数据块的数据块集。
需要指出的是,源节点在对本地当前最新的目标文件进行分块时,可以根据目标文件的文件大小以及预设数据块大小,计算出与目标文件对应的分块数量,根据所述分块数量确定出每个数据块对应的起始位置,得到各个数据块起始位置信息。具体的,源节点可以将与上述目标文件对应的各个数据块起始位置信息保存至本地预先创建的预读Block队列,然后在本地创建多个发送线程,每个发送线程均根据上述预读Block队列中的数据块起始位置信息,并基于只读方式打开上述目标文件,以及从上述目标文件中读取出相应位置上的数据块,然后将读取到的各个数据块发送至预先创建的已读Block队列进行保存。接着,第三方计算节点会从上述已读Block队列中读取各个数据块,并计算各个数据块对应的元数据信息。为了加快数据块的读取速度以及后续的数据处理速度,本实施例可以设置多个第三方计算节点,通过上述多个第三方计算节点并发获取上述已读Block队列中的各个数据块,以及并发对各个数据块进行相应的操作,包括并发进行元数据信息的计算操作以及并发进行后续的元数据信息的比对操作。也即,本实施例中,可以利用多个所述第三方计算节点,并发获取源节点对当前最新的目标文件进行分块后得到的数据块集。
本实施例中,所述数据块的一种具体结构可以是{数据块在目标文件中的偏移量,数据块的大小,数据块的实际数据内容},当然,上述具体结构仅仅是所述数据块的一种具体实例,并不构成对其结构的唯一限定。
步骤S12:获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地存储的所述目标文件对应的元数据信息。
步骤S13:计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息。
本实施例中,与目标节点本地存储的目标文件对应的元数据信息是指本次同步操作之前在目标节点本地存储的目标文件对应的各个数据块的元数据信息。可以理解的是,本次同步操作之前,目标节点上所保存的目标文件对应的各个数据块的起始位置信息与当前最新的目标文件对应的各个数据块的起始位置信息是相一致的。
本实施例中,若本次同步操作之前在所述目标节点的本地还未曾保存过所述目标文件,则获取目标节点发送的元数据文件,具体包括:获取目标节点发送的内容为空的元数据文件。也即,在首次同步备份的时候,第三方计算节点所获取到的由目标节点发送的元数据文件是一个空的文件。这种情况下,后续在确定增量数据块的时候,当前最新的目标文件对应的所有数据块均是增量数据块。
步骤S14:通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块。
本实施例中,如果当前最新元数据信息中的某个数据块对应的元数据信息与所述元数据文件中的相应数据块对应的元数据信息不一致,则表明该数据块中的内容已经发生了变更,那么便可以将该数据块确定为增量数据块。同理,如果当前最新元数据信息中的某个数据块对应的元数据信息与所述元数据文件中的相应数据块对应的元数据信息一致,则表明该数据块中的内容未曾发生变更,那么便不会将其判定为增量数据块。
步骤S15:将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
需要指出的是,本实施例中,目标节点在首次存储所述目标文件时,为了提升数据存储速度,可以根据所述目标文件的文件大小创建多个文件存储区;通过多个数据写入线程将所述目标文件对应的所有数据块分别写入所述多个文件存储区,并记录不同所述文件存储区各自对应的不同文件偏移量;其中,不同的所述数据写入线程用于对不同的所述文件存储区进行数据写入操作。另外,目标节点在首次存储所述目标文件的同时,还需要将所述当前最新元数据信息保存至本地,以形成本地的元数据文件。
在经过上述首次的目标文件存储操作之后,目标节点利用所述增量数据块对本地的所述目标文件进行同步更新的过程,具体可以包括:根据所述增量数据块对应的偏移量,从所述多个文件存储区中确定出目标文件存储区;将所述增量数据块对所述目标文件存储区中的数据进行更新同步,然后根据偏移量将所有所述文件存储区中的数据块进行拼接,得到更新后的所述目标文件。可见,本实施例通过利用增量数据块来同步更新目标节点中的相应旧数据块的方式,可以大幅减少需要向目标节点同步的数据量大小,从而显著降低了同步过程中的网络资源的占用率。
进一步的,为了提升上述增量数据块的发送速度,本实施例中,所述将所述增量数据块发送至所述目标节点,具体可以包括:利用多个所述第三方计算节点,将所述增量数据块并发发送至所述目标节点。
本申请实施例中,通过第三方计算节点获取源节点对当前最新的目标文件进行分块后得到的数据块集以及获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息,并计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息,然后通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块,并将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。可见,本申请实施例中的第三方计算节点通过上述过程可以计算出增量数据块,然后通过增量数据块完成对目标节点上的目标文件的同步更新,相对于通过全量文件数据对目标节点上的目标文件进行同步更新的做法,由于增量数据块的数据量通常远小于全量文件数据的数据量,从而大幅减少了同步过程中的网络资源占用率,提升了数据同步效率。并且,本申请实施例在确定上述增量数据块的过程中,是通过比对目标文件的元数据信息来实现的,相较于直接对目标文件自身的文件内容进行比对来确定增量数据块的方式,由于元数据信息的数据量远远小于文件内容本身的数据量,这样本申请实施例只需消耗较少的运算资源便可以确定出增量数据块,提高了增量数据块的确定效率,进而也有助于提高目标文件的同步效率。
参见图2所示,本申请实施例还公开了一种具体的应用于第三方计算节点的数据同步方法,包括:
步骤S21:利用多个所述第三方计算节点,并发获取源节点对当前最新的目标文件进行分块后得到的数据块集。
步骤S22:获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地存储的所述目标文件对应的元数据信息。
步骤S23:计算当前最新的所述目标文件的数据块集中每个数据块的哈希值,以每个所述数据块的哈希值为value,以每个所述数据块的偏移量对应的字符串为key,构建相应的map元数据,以得到所述当前最新元数据信息。
也即,本实施例中,是以数据块的哈希值为value、以数据块的偏移量对应的字符串为key,来构建键值对,从而得到相应的map元数据,由此得到上述当前最新元数据信息。与此对应的,上述元数据文件中的元数据信息也是基于上述方式来进行构建的。
步骤S24:比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,如果所述当前最新元数据信息中的任一数据块对应的元数据信息与所述元数据文件中相应的元数据信息不一致,则将该数据块确定为增量数据块。
步骤S25:利用多个所述第三方计算节点,将所述增量数据块并发发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
本实施例中,第三方计算节点与源节点、目标节点进行数据交互时,均可以通过多个第三方计算节点并以并发获取或发送的方式来展开相关的数据传递过程,通过这种设计,能够有效提升数据的传输效率。
可以理解的是,本实施例中,所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新的同时,需要对元数据文件中的相应数据块的元数据信息进行相应的更新,以保证元数据文件中的元数据信息与本地更新后的目标文件是相对应的。
本实施例中,在目标节点上保存上述元数据文件,这样一来,在展开下一轮的数据同步操作时,便可以直接获取目标节点上保存的元数据文件即可,而无需花费额外的时间和计算资源来对目标节点本地保存的目标文件进行元数据信息的计算,减少了元数据信息的计算次数及其所需消耗的资源。
参见图3所示,本申请实施例还公开了一种应用于目标节点的数据同步方法,包括:
步骤S31:当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
步骤S32:将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
步骤S33:获取所述第三方计算节点发送的所述增量数据块,并利用所述增量数据块对本地的所述目标文件进行同步更新。
在一种具体实例中,所述数据同步方法,还可以包括:
在首次存储所述目标文件时,根据所述目标文件的文件大小创建多个文件存储区;通过多个数据写入线程将所述目标文件对应的所有数据块分别写入所述多个文件存储区,并记录不同所述文件存储区各自对应的不同文件偏移量;其中,不同的所述数据写入线程用于对不同的所述文件存储区进行数据写入操作。
在一种具体实例中,所述利用所述增量数据块对本地的所述目标文件进行同步更新,具体可以包括:
根据所述增量数据块对应的偏移量,从所述多个文件存储区中确定出目标文件存储区;将所述增量数据块对所述目标文件存储区中的数据进行更新同步,然后根据偏移量将所有所述文件存储区中的数据块进行拼接,得到更新后的所述目标文件。
可以理解的是,本实施例中的应用于目标节点的数据同步方法与前述实施例中应用于第三方计算节点的数据同步方法是互相对应的,因此,有关本实施例中的数据同步方法的更具体的步骤流程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中的第三方计算节点通过上述过程可以计算出增量数据块,然后通过增量数据块完成对目标节点上的目标文件的同步更新,相对于通过全量文件数据对目标节点上的目标文件进行同步更新的做法,由于增量数据块的数据量通常远小于全量文件数据的数据量,从而大幅减少了同步过程中的网络资源占用率,提升了数据同步效率。
下面以一种具体的应用实例对本申请的数据同步方案进行说明。参见图4所示,各个节点的工作过程分别如下:
一、节点X-Worker的处理流程:
a)利用拆分线程,并根据文件的大小和Block的大小,来计算要拆分多少个数据块,每一个数据块的位置是多少,从而得到相应的Block信息,并将上述Block信息添加到预读Block队列;
b)利用多个发送线程,并且每个发送线程都以只读方式打开文件,去获取预读Block队列中的数据,然后根据获取到的Block信息读取文件对应位置的数据块,并发送到已读Block队列。
二、节点Y-Worker的第一处理流程:
a)读取已经保存的元数据,并生成元数据Map。可以理解的是,如果没有元数据,则元数据Map为空;
b)发送元数据到计算节点。
三、计算节点的处理流程:
a)获取已读Block队列中的数据块Block,对每个Block进行Hash计算;其中,Hash值能唯一标识一个Block,只要有变化则Hash值均不同,如果没有变化则Hash值相同;
b)以偏移量对应的Size字符串组成key,以Hash值为value,构成Map元数据;
c)和节点Y发送来的元数据比对,找出key相同value不同的数据块,以生成比对结果;可以理解的是,如果元数据为空,则比对结果为所有数据块;
d)根据比对结果,发送对应的数据块Block到节点Y(由节点Y的接受线程处理)。
四、节点Y-Worker的第二处理流程:
a)根据文件存储区的大小,线程个数(准备往几个文件存储区写数据块,每个线程一个文件存储区),计算出哪些偏移量的数据块需要写到哪个文件存储区中(每个文件存储区会保存一个连续的偏移区间);
b)接受计算节点发来的数据(接受线程池由多个线程组成,可并发处发来的数据);
c)根据Block中记录的偏移信息,确定要写入到哪个文件存储区,然后写入数据块。写入文件存储区时,需要计算出实际偏移,例如,图4中,1000-2000的要偏移写入A2文件,写入文件时,所有偏移都需要减去1000以转换为实际偏移量;
d)最后把所有的文件存储区中的数据根据偏移排序拼接在一起,以形成更新后的完整文件。
参见图5所示,本申请实施例还公开了一种数据同步装置,应用于第三方计算节点,包括:
数据块集获取模块01,用于获取源节点对当前最新的目标文件进行分块后得到的数据块集;
元数据文件获取模块02,用于获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据计算模块03,用于计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;
增量数据块确定模块04,用于通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;
增量数据块发送模块05,用于将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
其中,关于上述各个模块的具体工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请实施例中,通过第三方计算节点获取源节点对当前最新的目标文件进行分块后得到的数据块集以及获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息,并计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息,然后通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块,并将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。可见,本申请实施例中的第三方计算节点通过上述过程可以计算出增量数据块,然后通过增量数据块完成对目标节点上的目标文件的同步更新,相对于通过全量文件数据对目标节点上的目标文件进行同步更新的做法,由于增量数据块的数据量通常远小于全量文件数据的数据量,从而大幅减少了同步过程中的网络资源占用率,提升了数据同步效率。
参见图6所示,本申请实施例还公开了一种数据同步装置,应用于目标节点,包括:
元数据文件读取模块11,用于当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据文件发送模块12,用于将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
增量数据块获取模块13,用于获取所述第三方计算节点发送的所述增量数据块;
文件同步更新模块14,用于利用所述增量数据块对本地的所述目标文件进行同步更新。
其中,关于上述各个模块的具体工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中的第三方计算节点通过上述过程可以计算出增量数据块,然后通过增量数据块完成对目标节点上的目标文件的同步更新,相对于通过全量文件数据对目标节点上的目标文件进行同步更新的做法,由于增量数据块的数据量通常远小于全量文件数据的数据量,从而大幅减少了同步过程中的网络资源占用率,提升了数据同步效率。
图7是根据一示例性实施例示出的一种电子设备20的框图。如图7所示,该电子设备20可以包括:处理器21,存储器22。该电子设备20还可以包括多媒体组件23,输入/输出(I/O)接口24,以及通信组件25中的一者或多者。
其中,处理器21用于通过执行保存在存储器22中的计算机程序来控制该电子设备20的整体操作,以完成上述的应用于第三方计算节点或应用于目标节点的数据同步方法中的全部或部分步骤。存储器22用于存储各种类型的数据以支持在该电子设备20的操作,这些数据例如可以包括用于在该电子设备20上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件23可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器22或通过通信组件25发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器21和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件25用于该电子设备20与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件25可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备20可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的应用于第三方计算节点或应用于目标节点的数据同步方法。
在另一示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,该程序被处理器执行时实现上述的应用于第三方计算节点或应用于目标节点的数据同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序的存储器22,上述程序可由电子设备20的处理器21执行以完成上述的应用于第三方计算节点或应用于目标节点的数据同步方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种数据同步方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种数据同步方法,其特征在于,应用于第三方计算节点,包括:
获取源节点对当前最新的目标文件进行分块后得到的数据块集;
获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地存储的所述目标文件对应的元数据信息;
计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;
通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;
将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
2.根据权利要求1所述的数据同步方法,其特征在于,所述计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息,包括:
计算当前最新的所述目标文件的数据块集中每个数据块的哈希值;
以每个所述数据块的哈希值为value,以每个所述数据块的偏移量对应的字符串为key,构建相应的map元数据,以得到所述当前最新元数据信息。
3.根据权利要求1所述的数据同步方法,其特征在于,若本次同步操作之前在所述目标节点的本地还未曾保存过所述目标文件,则获取目标节点发送的元数据文件,包括:
获取目标节点发送的内容为空的元数据文件。
4.根据权利要求1所述的数据同步方法,其特征在于,所述获取源节点对当前最新的目标文件进行分块后得到的数据块集,包括:
利用多个所述第三方计算节点,并发获取源节点对当前最新的目标文件进行分块后得到的数据块集;
相应的,所述将所述增量数据块发送至所述目标节点,包括:
利用多个所述第三方计算节点,将所述增量数据块并发发送至所述目标节点。
5.一种数据同步方法,其特征在于,应用于目标节点,包括:
当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
获取所述第三方计算节点发送的所述增量数据块,并利用所述增量数据块对本地的所述目标文件进行同步更新。
6.根据权利要求5所述的数据同步方法,其特征在于,还包括:
在首次存储所述目标文件时,根据所述目标文件的文件大小创建多个文件存储区;
通过多个数据写入线程将所述目标文件对应的所有数据块分别写入所述多个文件存储区,并记录不同所述文件存储区各自对应的不同文件偏移量;其中,不同的所述数据写入线程用于对不同的所述文件存储区进行数据写入操作。
7.根据权利要求6所述的数据同步方法,其特征在于,所述利用所述增量数据块对本地的所述目标文件进行同步更新,包括:
根据所述增量数据块对应的偏移量,从所述多个文件存储区中确定出目标文件存储区;
将所述增量数据块对所述目标文件存储区中的数据进行更新同步,然后根据偏移量将所有所述文件存储区中的数据块进行拼接,得到更新后的所述目标文件。
8.一种数据同步装置,其特征在于,应用于第三方计算节点,包括:
数据块集获取模块,用于获取源节点对当前最新的目标文件进行分块后得到的数据块集;
元数据文件获取模块,用于获取目标节点发送的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据计算模块,用于计算与当前最新的所述目标文件的数据块集对应的元数据信息,得到当前最新元数据信息;
增量数据块确定模块,用于通过比对所述元数据文件中记录的元数据信息和所述当前最新元数据信息,以确定所述目标文件中的增量数据块;
增量数据块发送模块,用于将所述增量数据块发送至所述目标节点,以便所述目标节点利用所述增量数据块对本地的所述目标文件进行同步更新。
9.一种数据同步装置,其特征在于,应用于目标节点,包括:
元数据文件读取模块,用于当获取到针对目标文件的同步请求,则读取本地的元数据文件;其中,所述元数据文件用于记录与本次同步操作之前在所述目标节点的本地所存储的所述目标文件对应的元数据信息;
元数据文件发送模块,用于将所述元数据文件发送至第三方计算节点,以便所述第三方计算节点通过比对所述元数据文件中记录的元数据信息和当前最新元数据信息,确定出所述目标文件中的增量数据块;其中,所述当前最新元数据信息为所述目标节点计算的与当前最新的所述目标文件的数据块集对应的元数据信息,所述数据块集为源节点对当前最新的所述目标文件进行分块后得到的;
增量数据块获取模块,用于获取所述第三方计算节点发送的所述增量数据块;
文件同步更新模块,用于利用所述增量数据块对本地的所述目标文件进行同步更新。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据同步方法。
CN202010110448.4A 2020-02-21 2020-02-21 一种数据同步方法、装置、设备及介质 Pending CN113297156A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010110448.4A CN113297156A (zh) 2020-02-21 2020-02-21 一种数据同步方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010110448.4A CN113297156A (zh) 2020-02-21 2020-02-21 一种数据同步方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113297156A true CN113297156A (zh) 2021-08-24

Family

ID=77318540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010110448.4A Pending CN113297156A (zh) 2020-02-21 2020-02-21 一种数据同步方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113297156A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778755A (zh) * 2021-09-16 2021-12-10 浪潮商用机器有限公司 一种数据同步方法、装置、设备及计算机可读存储介质
CN115145943A (zh) * 2022-09-06 2022-10-04 北京麦聪软件有限公司 多数据源元数据快速比对方法、系统、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300071A1 (en) * 2008-06-02 2009-12-03 International Business Machines Corporation File Synchronization Between Multiple Nodes
CN104866497A (zh) * 2014-02-24 2015-08-26 华为技术有限公司 分布式文件系统列式存储的元数据更新方法、装置、主机
CN108090118A (zh) * 2017-11-07 2018-05-29 清华大学 文件系统元数据的获取方法和系统
CN110750546A (zh) * 2019-10-21 2020-02-04 中国民航信息网络股份有限公司 一种数据库的更新方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300071A1 (en) * 2008-06-02 2009-12-03 International Business Machines Corporation File Synchronization Between Multiple Nodes
CN104866497A (zh) * 2014-02-24 2015-08-26 华为技术有限公司 分布式文件系统列式存储的元数据更新方法、装置、主机
CN108090118A (zh) * 2017-11-07 2018-05-29 清华大学 文件系统元数据的获取方法和系统
CN110750546A (zh) * 2019-10-21 2020-02-04 中国民航信息网络股份有限公司 一种数据库的更新方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778755A (zh) * 2021-09-16 2021-12-10 浪潮商用机器有限公司 一种数据同步方法、装置、设备及计算机可读存储介质
CN115145943A (zh) * 2022-09-06 2022-10-04 北京麦聪软件有限公司 多数据源元数据快速比对方法、系统、设备和存储介质
CN115145943B (zh) * 2022-09-06 2023-02-28 北京麦聪软件有限公司 多数据源元数据快速比对方法、系统、设备和存储介质

Similar Documents

Publication Publication Date Title
CN108810041B (zh) 一种分布式缓存系统的数据写入及扩容方法、装置
US20160070431A1 (en) Sync based on navigation history
CN109032507B (zh) 一种生成源卷存储快照的方法、系统及相关组件
CN110597825B (zh) 基于区块链的数据处理方法、装置及节点设备
CN110019024B (zh) 一种目录查询方法、系统及电子设备和存储介质
CN108205560B (zh) 一种数据同步方法以及装置
CN110046062B (zh) 分布式数据处理方法及系统
CN112948340A (zh) 数据同步方法、装置、电子设备及可读存储介质
JP2017531849A (ja) 画面表示装置用の文字編集方法及び装置
CN111158597A (zh) 一种元数据读取方法、装置及电子设备和存储介质
CN113297156A (zh) 一种数据同步方法、装置、设备及介质
US11232066B2 (en) Method for data migration and terminal
JP4971717B2 (ja) ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
CN112000971B (zh) 一种文件权限记录方法、系统及相关装置
CN113312052A (zh) 一种组件调用方法、装置、电子设备以及存储介质
CN117170538A (zh) 一种文档处理方法、装置、设备和介质
CN107430596B (zh) 输入法编辑器的外部化执行
CN111488117B (zh) 用于管理元数据的方法、电子设备和计算机可读介质
CN112000321A (zh) 适用于三维检测软件的撤销和/或重做实现方法及装置
WO2017032240A1 (zh) 移动终端的数据存储方法和装置
CN111770153A (zh) 一种对象下载方法、装置及电子设备和存储介质
CN111858158B (zh) 数据处理方法、装置及电子设备
CN111984600B (zh) 一种文件聚合方法、装置、设备及可读存储介质
CN113553488A (zh) 搜索引擎中索引数据的更新方法、装置、电子设备及介质
CN114020745A (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