数据同步网络和方法与流程

文档序号:19399355发布日期:2019-12-13 18:59阅读:308来源:国知局
数据同步网络和方法与流程

本申请涉及数据同步技术领域,具体涉及一种数据同步网络和方法。



背景技术:

无论是传统的客户端-服务端(cs)结构的网络,还是目前较流行的对等网络,都在网络的特定或非特定节点上存储着有重要需要的数据。cs结构网络将数据存储在单个或多个服务器节点中,对等网络则可以将数据存储在任意节点中。对于多个服务器节点的cs结构网络和对等网络,都有着保持各节点所存储的数据一致,即进行数据同步的需求。

现有的网络同步机制,例如分步式文件系统(dfs)、云存储(cloudstorage)等,rsync与rdc是两种最为常见的数据同步算法。这两种算法在实际应用中,在数据同步的时效性以及效率的表现上均有一定的不足。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种具备较强的时效性和较高效率的数据同步网络和方法。

第一方面,本发明提供一种数据同步网络,所述网络包括若干节点,所述节点包括数据同步单元,所述数据同步单元包括:

同步发起子单元,用于定时向同步对象节点发起数据同步,所述向同步对象节点发起数据同步包括:根据第一预设条件选取近距离的同步对象节点,根据本地各组数据对应于所选取的同步对象节点的各已同步标识位生成同步请求列表,向所述同步对象节点发送所述同步请求列表,接收所述同步对象节点回传的同步数据,设置本地各组数据的对应于所述同步对象节点的已同步标识位;

同步接收子单元,用于接收同步请求节点发送的同步请求列表,根据接收的同步请求列表和本地各组数据对应于所述同步请求节点的各已拥有标识位生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位,向所述同步请求节点发送所述同步数据;

其中,每组数据分别设有若干个分别与各同步对象节点对应的已同步标识位和若干个分别与各同步请求节点对应的已拥有标识位,所述已同步标识位用于标识本组数据已同步过对应的同步对象节点,所述已拥有标识位用于标识对应的同步请求节点已拥有本组数据。

第二方面,本发明提供一种数据同步方法,所述方法包括:

根据第一预设条件选取近距离的同步对象节点;

根据本地各组数据对应于所选取的同步对象节点的各已同步标识位生成同步请求列表;

向所述同步对象节点发送所述同步请求列表;

接收所述同步对象节点回传的同步数据;

设置本地各组数据的对应于所述同步对象节点的已同步标识位;定时循环上述各步骤;

其中,每组数据分别设有若干个分别与各同步对象节点对应的已同步标识位,所述已同步标识位用于标识本组数据已同步过对应的同步对象节点。

第三方面,本发明提供另一种数据同步方法,所述方法包括:接收同步请求节点发送的同步请求列表;

根据接收的同步请求列表和本地各组数据对应于所述同步请求节点的各已拥有标识位生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位;

向所述同步请求节点发送所述同步数据;

其中,每组数据分别设有若干个分别与各同步请求节点对应的已拥有标识位,所述已拥有标识位用于标识对应的同步请求节点已拥有本组数据。

本发明诸多实施例提供的数据同步网络和方法为网络中各节点所存储的每组数据设置了与各同步对象节点对应、用于标识本组数据已同步过对应的同步对象节点的已同步标识位,以及,与各同步请求节点对应、用于标识对应的同步请求节点已拥有本组数据的已拥有标识位,通过设置第一预设条件在选取近距离的同步对象节点的同时保障了时效性,通过对应于所选取的同步对象节点的各已同步标识位生成同步请求列表,通过接收的同步请求列表和对应于同步请求节点的各已拥有标识位生成同步数据,实现了高效率的数据同步;

本发明一些实施例提供的数据同步网络和方法进一步通过根据第二预设条件在若干数据来源节点中选取同步对象节点,提高了数据同步的效率;

本发明一些实施例提供的数据同步网络和方法进一步通过设置较为严格的预设条件保障了较强的时效性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明一实施例中数据同步网络的结构示意图。

图2为本发明一实施例中一种数据同步方法的流程图。

图3为本发明一实施例中另一种数据同步方法的流程图。

图4为图2所示的数据同步方法中步骤s12的流程图。

图5为图2所示的数据同步方法的一种优选实施方式的流程图。

图6为图2所示的数据同步方法的一种优选实施方式的流程图。

图7为图3所示的数据同步方法中步骤s25的流程图。

图8为本发明一优选实施例中数据同步网络中节点的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1为本发明一实施例中数据同步网络的结构示意图。

如图1所示,在本实施例中,本发明提供的数据同步网络包括若干节点10。节点10包括数据同步单元20,数据同步单元20包括同步发起子单元21和同步接收子单元22。

同步发起子单元21用于定时向同步对象节点发起数据同步。所述向同步对象节点发起数据同步包括:根据第一预设条件选取近距离的同步对象节点,根据本地各组数据对应于所选取的同步对象节点的各已同步标识位生成同步请求列表,向所述同步对象节点发送所述同步请求列表,接收所述同步对象节点回传的同步数据,设置本地各组数据的对应于所述同步对象节点的已同步标识位。

同步接收子单元22用于接收同步请求节点发送的同步请求列表,根据接收的同步请求列表和本地各组数据对应于所述同步请求节点的各已拥有标识位生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位,向所述同步请求节点发送所述同步数据。

其中,每组数据分别设有若干个分别与各同步对象节点对应的已同步标识位和若干个分别与各同步请求节点对应的已拥有标识位,所述已同步标识位用于标识本组数据已同步过对应的同步对象节点,所述已拥有标识位用于标识对应的同步请求节点已拥有本组数据。

图2为本发明一实施例中一种数据同步方法的流程图。图2所示的数据同步方法可对应应用于图1所示数据同步网络的各同步发起子单元21。

如图2所示,在本实施例中,本发明所提供的一种数据同步方法包括:

s12:根据第一预设条件选取近距离的同步对象节点;

s13:根据本地各组数据对应于所选取的同步对象节点的各已同步标识位生成同步请求列表;

s14:向所述同步对象节点发送所述同步请求列表;

s15:接收所述同步对象节点回传的同步数据;

s16:设置本地各组数据的对应于所述同步对象节点的已同步标识位;定时跳转至步骤s12进行循环。

其中,每组数据分别设有若干个分别与各同步对象节点对应的已同步标识位,所述已同步标识位用于标识本组数据已同步过对应的同步对象节点。

图3为本发明一实施例中另一种数据同步方法的流程图。图3所示的数据同步方法可对应应用于图1所示数据同步网络的各同步接收子单元22。

如图3所示,在本实施例中,本发明提供的另一种数据同步方法包括:

s23:接收同步请求节点发送的同步请求列表;

s25:根据接收的同步请求列表和本地各组数据对应于所述同步请求节点的各已拥有标识位生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位;

s27:向所述同步请求节点发送所述同步数据。

其中,每组数据分别设有若干个分别与各同步请求节点对应的已拥有标识位,所述已拥有标识位用于标识对应的同步请求节点已拥有本组数据。

具体地,以本地存储有a、b、c、d、e五组数据的节点a为例:

节点a可以作为主动发起数据同步的同步请求节点,对于a、b、c、d、e五组数据,每一组数据分别设有分别与各同步对象节点对应的已同步标识位sync_state_acknowledged_to_peer,以下简称ssatp,例如数据a对应于节点b的已同步标识位ssatpab,数据b对应于节点c的已同步标识位ssatpbc等;

节点a同时还可以作为接收数据同步请求的同步对象节点,对于a、b、c、d、e五组数据,每一组数据还分别设有分别与各同步请求节点对应的已拥有标识位sync_state_peer_own,以下简称sspo,例如数据d对应于节点r的已拥有标识位sspodr,数据e对应于节点t的已拥有标识位sspoet等。

以节点b存有a、b、c、f、g五组数据,节点a已向节点b同步过数据a和b,节点a定时发起数据同步,选取节点b作为同步对象节点为例:

在步骤s12中,节点a的同步发起子单元21根据预设的时限条件选取近距离的节点b作为同步对象节点。

在本实施例中,同步发起子单元21取节点id值的异或结果作为两个节点之间的距离,在更多实施例中,可根据实际需求采用不同的距离计算方法,可实现相同的技术效果。

在步骤s13中,节点a的同步发起子单元21根据本地各组数据a、b对应于所选取的同步对象节点b的各已同步标识位ssatpab、ssatpbb生成同步请求列表。具体地,节点a已向节点b同步过数据a和b,未同步过数据c、d、e,数据a和b分别设有对应于节点b的已同步标识位ssatpab、ssatpbb,数据c、d、e未设有对应于节点b的已同步标识位,同步发起子单元21在同步请求列表中分别存入数据c、d和e的相关信息。

在本实施例中,所述相关信息为该组数据的哈希值,在更多实施例中,可根据实际需求将所述相关信息设置为其它对应信息,例如不同算法生成的校验码,只要所述相关信息可以作为对应数据的唯一标识并保持较小的数据量,即可实现相同的技术效果。

在步骤s14中,节点a的同步发起子单元21向节点b的同步接收子单元22发送步骤s13中生成的同步请求列表。

在步骤s15中,节点a的同步发起子单元21接收节点b的同步接收子单元22回传的同步数据,包括数据f和g。

在步骤s16中,节点a的同步发起子单元21将数据c、d、e、f、g对应于节点b的已同步标识位设置为已同步,定时跳转至步骤s12进行下一次数据同步。

具体地,在一些实施例中,同步发起子单元21在步骤s15收到节点b回传的同步数据之后,对本地所有未设置对应于节点b的已同步标识位的数据全部设置对应于节点b的已同步标识位,即对数据c、d、e、f、g全部设置对应于节点b的已同步标识位;

在另一些实施例中,同步发起子单元21在步骤s15收到节点b回传的同步数据之后,在步骤s16中对同步请求列表对应的数据c、d和e设置对应于节点b的已同步标识位ssatpcb、ssatpdb、ssatpeb,并对接收的数据f和g设置对应于节点b的已同步标识位ssatpfb、ssatpgb。

相对应地,当节点b接收到上述节点a在步骤s14中发送的同步请求列表时:

在步骤s23中,节点b的同步接收子单元22接收到节点a的同步发起子单元21发送的同步请求列表。

在步骤s25中,节点b的同步接收子单元22根据接收的同步请求列表和本地各组数据a、b对应于同步请求节点a的各已拥有标识位sspoaa、sspoba生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位。

具体地,通过上述各已拥有标识位可知节点a已拥有数据a和b;同步请求列表中存有数据c、d和e的相关信息,通过与本地各组数据a、b、c、f、g比对可知节点a已拥有数据c,最终生成包括数据f和g的同步数据,并设置数据c、f、g对应于节点a的已拥有标识位sspoca、sspofa、sspoga:

在一些实施例中,节点b的同步接收子单元22在生成同步数据之后对本地所有未设置对应于同步请求节点a的已拥有标识位的数据设置对应于节点a的已拥有标识位;

在另一些实施例中,节点b的同步接收子单元22在对比接收到的同步请求列表和本地各组数据时,对通过对比得到的数据c设置对应于同步请求节点a的已拥有标识位sspoca;并在生成同步数据之后,对同步数据所对应的数据f和g设置对应于同步请求节点a的已拥有标识位sspofa、sspoga。

在步骤s27中,节点b的同步接收子单元22向同步请求节点a发送步骤s25生成的同步数据。

上述实施例为网络中各节点所存储的每组数据设置了与各同步对象节点对应、用于标识本组数据已同步过对应的同步对象节点的已同步标识位,以及,与各同步请求节点对应、用于标识对应的同步请求节点已拥有本组数据的已拥有标识位,通过设置第一预设条件在选取近距离的同步对象节点的同时保障了时效性,通过对应于所选取的同步对象节点的各已同步标识位生成同步请求列表,通过接收的同步请求列表和对应于同步请求节点的各已拥有标识位生成同步数据,实现了高效率的数据同步。

在一优选实施例中,所述根据第一预设条件选取近距离的同步对象节点包括:

按预设规则计算各节点与当前节点的距离,选取若干个与当前节点距离最近的节点;

按距离依次将所选取的各节点与第一预设条件进行比对:若符合则选取为同步对象节点;若无一符合则停止本次同步。

图4为图2所示的数据同步方法中步骤s12的流程图。图4所示方法可对应应用于上述优选实施例提供的数据同步网络的同步发起子单元21。

如图4所示,在一优选实施例中,步骤s12包括:

s123:按预设规则计算各节点与当前节点的距离,选取若干个与当前节点距离最近的节点;

s125:按距离依次将所选取的各节点与第一预设条件进行比对:若符合则选取为同步对象节点;若无一符合则停止本次同步。

具体地,在本实施例中,步骤s123中,节点a的同步发起子单元21通过计算自身id与网络中其它节点id的异或结果作为两个节点间的距离,选取与节点a距离最近的三个节点b、c和d。

在步骤s125中,依次将步骤s125选取的节点b、c和d与第一预设条件进行对比,若符合则选取作为同步对象节点,若都不符合,则停止本次同步,等待下次同步。

具体地,在本实施例中,所述第一预设条件包括:

1、所选取的节点非当前节点。例如,选取的节点不能为当前节点a。

2、本次同步时间和上次同步时间的间隔小于预设的同步时隔。例如将同步时隔设置为10分钟,则节点a在发起一次同步后的10分钟内必须发起下一次同步。

3、与所选取的节点的本次同步时间和上次同步失败时间的间隔不小于预设的同步失败时隔,失败次数小于预设的失败次数阈值。例如,将同步失败时隔设置为2分钟,失败次数阈值设置为5次,节点a对于节点b发起的同步若失败,则每隔2分钟可重新发起对节点b的同步,若失败次数达到5次,则节点a不再向节点b发起同步。

4、与所选取的节点的本次同步时间和上次同步成功时间的间隔不小于预设的同步成功时隔。例如,将同步成功时隔设置为30分钟,即节点a在发起对节点b的同步成功之后的30分钟内不再发起对节点b的同步,期间节点a可以对距离最近的另两个节点c和d发起同步。

与上述第一预设条件相对应地,在本实施例中,在步骤s14之后,若节点a未收到节点b回传的同步数据,同步失败,则更新节点a的上次同步时间、对节点b的上次同步失败时间,并将节点a对节点b的同步失败次数加一;若在步骤s15中成功接收到节点b回传的同步数据,同步成功,则更新上次同步时间、对节点b的上次同步成功时间。

在本实施例中,选取距离最近的若干个节点的数量为3个,计算距离的方法为取id的异或值,设置的第一预设条件为上述3个条件。在更多实施例中,可根据实际需求选取不同数量的距离最近的节点,采用不同的算法计算节点间的距离,设置不同逻辑策略的第一预设条件。

在一优选实施例中,所述根据本地各组数据对应于所选取的同步对象节点的各已同步标识位生成同步请求列表包括,对各组数据分别进行以下判断:

根据本组数据对应于所选取的同步对象节点的已同步标识位判断是否已同步过所述同步对象节点:若未同步过,则将本组数据的哈希值加入同步请求列表。

图5为图2所示的数据同步方法的一种优选实施方式的流程图。图5所示方法可对应应用于上述优选实施例提供的数据同步网络的同步发起子单元21。

如图5所示,在一优选实施例中,步骤s13包括,对各组数据分别进行以下判断:

s131:根据本组数据对应于所选取的同步对象节点的已同步标识位判断是否已同步过所述同步对象节点:若未同步过,则将本组数据的哈希值加入同步请求列表。

在一优选实施例中,同步发起子单元21还用于根据第二预设条件在若干数据来源节点中选取同步对象节点。

图6为图2所示的数据同步方法的一种优选实施方式的流程图。图6所示方法可对应应用于上述优选实施例提供的数据同步网络的同步发起子单元21。

如图6所示,在一优选实施例中,步骤s12之前还包括:

s11:根据第二预设条件在若干数据来源节点中选取同步对象节点:

若选取出,跳转至步骤s13。

具体地,对于节点a,之前成功同步过的各个同步对象节点均为数据来源节点。在若干数据来源节点中选取同步对象节点的优点在于:由于之前已成功同步过,一方面同步的成功率相对会较高,另一方面相对的数据差异较小,同步的效率更高。

具体地,在本实施例中,所述第二预设条件包括:

1、本次同步时间和上次同步时间的间隔小于预设的同步时隔。与上述第一预设条件类似地,以同步时隔设置成10分钟为例,则节点a在发起一次同步后的10分钟内必须发起下一次同步。

2、与所述数据来源节点的本次同步时间和上次同步失败时间的间隔不小于预设的同步失败时隔,失败次数小于预设的失败次数阈值。与上述第一预设条件类似地,以同步失败时隔设置为2分钟,失败次数阈值设置为5次为例,节点a对于数据来源节点t发起的同步若失败,则每隔2分钟可重新发起对节点t的同步,若失败次数达到5次,则节点a不再向数据来源节点t发起同步。

3、与所述数据来源节点的本次同步时间和上次同步成功时间的间隔不小于预设的同步成功时隔。与上述第一预设条件类似地,以同步成功时隔设置为2小时为例,节点a在发起对节点s的同步成功之后的2小时内不再发起对节点s的同步,期间节点a可以对其它符合第二预设条件的各个数据来源节点发起同步。

与上述第二预设条件相对应地,在本实施例中,在步骤s14之后,若节点a未收到节点t回传的同步数据,同步失败,则更新节点a的上次同步时间、对节点t的上次同步失败时间,并将节点a对节点t的同步失败次数加一;若在步骤s15中成功接收到节点s回传的同步数据,同步成功,则更新上次同步时间、对节点s的上次同步成功时间。

在更多实施例中,可根据实际需求设置不同逻辑策略的第二预设条件。

上述实施例进一步通过根据第二预设条件在若干数据来源节点中选取同步对象节点,提高了数据同步的效率,并通过设置较为严格的预设条件保障了较强的时效性。

在一优选实施例中,所述根据接收的同步请求列表和本地各组数据对应于所述同步请求节点的各已拥有标识位生成同步数据,设置本地各组数据对应于所述同步请求节点的所述已拥有标识位包括:

根据所述同步请求列表分别判断所述同步请求节点是否已拥有各组数据:若已拥有,则设置本组数据对应于所述同步请求节点的已拥有标识位;

将未设置对应于所述同步请求节点的已拥有标识位的各组数据加入同步数据,并分别设置对应于所述同步请求节点的已拥有标识位。

图7为图3所示的数据同步方法中步骤s25的流程图。图7所示方法可对应应用于上述优选实施例提供的数据同步网络的同步接收子单元22。

如图7所示,在一优选实施例中,步骤s25包括:

s251:根据所述同步请求列表分别判断所述同步请求节点是否已拥有各组数据:若已拥有,则设置本组数据对应于所述同步请求节点的已拥有标识位;

s253:将未设置对应于所述同步请求节点的已拥有标识位的各组数据加入同步数据,并分别设置对应于所述同步请求节点的已拥有标识位。

具体地,以上述节点b存有a、b、c、f、g五组数据,节点a已向节点b同步过数据a和b,节点b接收到节点a发送的包括数据c、d、e相关信息的同步请求列表为例:

在步骤s251中,节点b的同步接收子单元22根据接收的同步请求列表依次判断节点a是否已拥有本地各组数据,对比得知节点a已拥有数据c,设置数据c对应于节点a的已拥有标识位sspoca。

在步骤s253中,节点b的同步接收子单元22将未设置对应于节点a的已拥有标识位的数据f和g加入同步数据,并设置数据f和g分别对应于节点a的已拥有标识位sspofa和sspoga。

在一优选实施例中,所述同步请求列表包括若干组数据的哈希值,所述根据所述同步请求列表分别判断所述同步请求节点是否已拥有各组数据包括:

比对各组数据的哈希值和所述同步请求列表中的哈希值:若所述同步请求列表包括本组数据的哈希值,则所述同步请求节点已拥有本组数据;反之则未拥有。

图8为本发明一优选实施例中数据同步网络中节点的结构示意图。

如图8所示,在一优选实施例中,数据同步单元20还包括:

标识位管理单元23,用于管理本地各组数据的各项已同步标识位和各项已拥有标识位。

同步接收子单元21通过调用标识位管理单元23设置所述已同步标识位;同步接收子单元22通过调用标识位管理单元23设置所述已拥有标识位。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,同步发起子单元21和同步接收子单元22可以是设置在计算机或移动智能设备中的软件程序;也可以是单独进行数据同步的硬件芯片。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,数据同步单元20还可以被描述为“用于保持节点间存储的数据一致的同步存储单元”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1