一种数据源地址分发树的构造方法和用于复制数据的方法与流程

文档序号:11180703阅读:363来源:国知局
一种数据源地址分发树的构造方法和用于复制数据的方法与流程

本申请涉及一种树的构造方法,具体涉及一种数据源地址分发树的构造方法及装置;本申请还涉及一种用于复制数据的方法及装置,本申请还涉及一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法及装置;本申请还涉及一种用于数据发送的方法及装置;本申请还涉及一种数据源地址分发系统。



背景技术:

对于拥有众多节点的大型计算机网络,在网络中多个节点部署软件或复制数据文件是运行于计算网络上的业务系统必不可少的操作,运行基于大型的分布式计算机系统上的业务系统时,经常需要将同一大型软件或相同的大量数据复制到系统内的多个节点上,传统的从单一数据源复制数据的方式,由于数据量的增加,会增加网络拥堵的情况的发生,更有效率低下的弊病,明显不适用于大型的分布式系统内部署数据的情况。

现有的将大量相同数据复制到分布式系统的多个节点的方式通常为以下两种:

方式一,部分利用对等网络(peer-to-peer)技术。先预先规划好哪些数据需要部署到分布式系统内的哪些节点上,从原始的数据源复制数据到其中一个节点,其他需要同样数据的节点从该节点复制数据而不必从原始的数据源复制数据。对于其他更多节点需要同样数据的情况,可以在这些节点间利用对等网络(peer-to-peer)技术复制数据。

这种方式虽然避免了所有需要同样数据的节点从同一数据源复制数据导致的效率低下和网络拥堵的问题,但每当由于业务需要,更多的节点加入系统,需要复制同样的数据时,因为需要频繁的规划,导致不能灵活地动态地应对情况的变化的缺点。

方式二,完全采用对等网络(peer-to-peer)技术,在网络中设置中心化的数据地址查询系统,该系统存储分布式系统内所需的所有数据的分布情况,也即哪些数据存储在哪些节点。

当有节点需要复制数据时,向该数据地址查询系统查询所需复制数据的存储位置,从该数据地址查询系统反馈的数据的存储位置,利用对等网络 (peer-to-peer)技术复制数据,同时向中心节点报告自己存储了所述数据,以备后续其他节点查询时,数据地址查询系统能够提供更多的存储了所述数据的节点信息。

这一方式能够避免所有需要同样数据的节点从同一数据源复制数据导致的效率低下和网络拥堵的问题,并且能够动态应对需要复制同样数据的节点变化的情况。但对于大型的网络来说,所述数据在网络内分布的信息数量非常大,通常会需要多于一个节点来存储,数据地址查询系统不得不分布于不同的节点上,这就导致了网络结构复杂,管理维护工作量大,成本增加。



技术实现要素:

本申请提供一种数据源地址分发树的构造方法。本申请还提供一种用于复制数据的方法。本申请同时还提供一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法。本申请提供一种数据发送方法。本申请同时提供一种数据源地址分发系统。本申请提供一种数据源地址分发树的构造装置,还提供一种用于复制数据的装置。

本申请提供的一种数据源地址分发树的构造方法,包括以下步骤:

接收请求者发送的查询所述请求者在指定的数据源地址分发树中的亲属节点信息的请求,所述请求者由其标识所确定,所述指定的数据源地址分发树由数据源地址分发树标识所确定;

将所述请求者作为新节点加入所述数据源地址分发树;

将所述请求者对应的节点的父节点和子节点的信息发送给所述请求者。

优选地,所述将所述请求者作为新节点加入所述数据源地址分发树包括:

若所述数据源地址分发树不存在,则建立一棵数据源地址分发树,将所述请求者作为所述数据源地址分发树的根节点。

优选地,所述将所述请求者作为新节点加入所述数据源地址分发树包括:

若所述数据源地址分发树存在,且所述数据源地址分发树中不存在所述请求者对应的节点则将该请求者作为一个新节点加入所述数据源地址分发树。

优选地,所述数据源地址分发树为完全二叉树。

优选地,所述将该请求者作为一个新节点加入所述数据源地址分发树包括:将该请求者作为一个新的叶子节点加入所述数据源地址分发树。

优选地,还包括所述的数据源地址分发树的存储节点调整步骤,所述步骤 包括:

接收请求者发送的所述请求者在指定的数据源地址分发树中的父节点失效的信息,所述指定的数据源地址分发树由数据源地址分发树标识所确定;

根据所述请求者发送的所述请求者在指定的数据源地址分发树中的父节点信息,调整所述数据源地址分发树的存储节点。

优选地,所述根据所述请求者发送的所述请求者在指定的数据源地址分发树中的父节点信息,调整所述数据源地址分发树的存储节点包括:

若所述数据源地址分发树中不存在所述请求者对应的节点,则将该请求者作为一个新节点加入所述数据源地址分发树,并将该新节点的父节点和子节点信息发送给所述请求者。

优选地,所述根据所述请求者发送的所述请求者在指定的数据源地址分发树中的父节点信息,调整所述数据源地址分发树的存储节点包括:

若所述数据源地址分发树中存在所述请求者对应的节点,则,根据在所述数据源地址分发树中该请求者对应的节点的父节点是否与该请求者发送的失效的父节点一致的情况调整所述数据源地址分发树的存储节点。

优选地,所述根据在所述数据源地址分发树中该请求者对应的节点的父节点是否与该请求者发送的失效的父节点一致的情况调整所述数据源地址分发树的存储节点包括:

若在所述数据源地址分发树中该请求者对应的节点的父节点与该请求者发送的失效的父节点不一致,则将所述数据源地址分发树中该请求者对应的节点的父节点信息发送给该所述请求者;

若在所述数据源地址分发树中该请求者对应的节点的父节点与该请求者发送的失效的父节点一致,则,根据所述数据源地址分发树中是否存在有效的叶子节点,调整所述数据源地址分发树的存储节点。

优选地,所述根据所述数据源地址分发树中是否存在有效的叶子节点,调整所述数据源地址分发树的存储节点包括:

若所述数据源地址分发树中存在有效的叶子节点,则将所述请求者对应的节点的父节点标记为失效并与所述有效的叶子节点交换位置,并将交换位置后所述请求者对应的节点的父节点信息发送给所述请求者;

若所述数据源地址分发树中不存在有效的叶子节点,则删除所述数据源地址分发树,以被删除的数据源地址分发树的标识建立一棵数据源地址分发树, 将所述请求者作为根节点,并将该根节点的父节点的信息发送给所述请求者。

优选地,用于分布式计算机系统内各个节点的数据部署。

本申请提供的一种用于复制数据的方法,用于分布式计算机系统内各个节点的数据部署,包括以下步骤:

获取复制数据到本节点的请求,所述请求包括数据的标识以及数据的原始地址;

获得本节点在指定的数据源地址分发树中的父节点信息,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定;

根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求;

接收所述数据到本节点。

优选地,所述根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求包括:

若本节点在指定的数据源地址分发树中存在父节点,则向获得的所述本节点在指定的数据源地址分发树中的父节点发送复制所述数据的请求;

若本节点在指定的数据源地址分发树中不存在父节点,则向复制数据到本节点的请求中所包含的数据的原始地址发送复制所述数据的请求。

优选地,所述获得本节点在指定的数据源地址分发树中的父节点信息包括:

向数据源地址分发树中心控制节点发送查询本节点在指定的数据源地址分发树中的亲属节点信息的请求;

接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中无父节点的信息并存储到本节点。

优选地,所述获得本节点在指定的数据源地址分发树中的父节点信息包括:

查询获得本节点存储的本节点在指定的数据源地址分发树中的父节点信息。

优选地,所述接收所述数据到本节点包括:

若所述数据的发送者为本节点存储的本节点在所述数据源地址分发树中的父节点,则接收所述数据到本节点。

优选地,所述所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定具体为:

所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的 标识所唯一确定。

本申请提供的一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定,包括以下步骤:

检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常;

向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树中的亲属节点信息的请求;

接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点的信息;

用数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点更新本节点存储的本节点在所述数据源地址分发树中的父节点信息。

优选地,所述检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常包括以下步骤:

接收发送者发送的数据;

若所述数据的发送者不是本节点存储的本节点在所述数据源地址分发树中的父节点,则本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常。

优选地,所述检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常包括以下步骤:

以设定的时间间隔向本节点存储的本节点在所述数据源地址分发树中的父节点发送状态更新请求;

判断所述状态更新请求是否失败;

若所述状态更新请求失败,则判断本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常;

相应地,所述向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树中的亲属节点信息的请求中包含本节点在所述数据源地址分发树中的父节点失效信息。

优选地,所述判断所述状态更新请求是否失败的方法包括:

在设定的时长内未收到本节点存储的本节点在所述数据源地址分发树中的 父节点对本节点所发送的状态更新请求的响应,则判断为失败;

或本节点存储的本节点在所述数据源地址分发树中父节点对本节点发送的状态更新请求连续未做出响应的次数超过设定的值,则判断为失败。

优选地,用于分布式计算机系统内各个节点的数据部署。

本申请提供的一种用于数据发送的方法,包括以下步骤:

接收请求者发送的复制数据请求,所述数据由数据的标识所确定;

查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定;

若复制数据请求的发送者为本节点在指定的数据源地址分发树中的子节点,则向该复制数据请求的发送者发送其所请求的数据。

优选地,所述查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点包括:

向数据源地址分发树中心控制节点发送查询本节点在指定的数据源地址分发树中的亲属节点请求;

接收并存储数据源地址分发树中心控制节点发送的子节点信息;

优选地,所述查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点包括:

查询本节点存储的本节点在指定的数据源地址分发树中的子节点信息。

优选地,用于分布式计算机系统内各个节点的数据部署。

本申请提供的一种数据源地址分发树的构造装置,包括以下单元:

接收单元,用于接收请求者发送的查询所述请求者在指定的数据源地址分发树中的亲属节点信息的请求,所述请求者由其标识所确定,所述指定的数据源地址分发树由数据源地址分发树标识所确定;

构造单元,用于将所述请求者作为新节点加入所述数据源地址分发树。

发送单元,用于将所述请求者对应的节点的父节点和子节点的信息发送给所述请求者。

本申请提供的一种用于复制数据的装置,包括以下单元:

获取单元,用于获取复制数据到本节点的请求,所述请求包括数据的标识以及数据的原始地址;

获得单元,用于获得本节点在指定的数据源地址分发树中的父节点信息, 所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定;

发送单元,用于根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求;

接收单元,用于接收所述数据到本节点。

本申请提供的一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定,包括以下单元:

检测单元,用于检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常;

查询单元,用于向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树中的亲属节点信息的请求;

接收单元,用于接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点的信息;

更新单元,用于用数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点更新本节点存储的本节点在所述数据源地址分发树中的父节点信息。

本申请提供的一种用于数据发送的装置,包括以下单元:

接收单元,用于接收请求者发送的复制数据请求,所述数据由数据的标识所确定;

查询单元,用于查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定;

发送单元,用于若复制数据请求的发送者为本节点在指定的数据源地址分发树中的子节点,则向该复制数据请求的发送者发送其所请求的数据。

本申请提供的一种数据源地址分发系统,包括本申请提供的一种数据源地址分发树的构造装置、本申请提供的一种用于复制数据的装置、本申请提供的一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置和本申请提供的一种用于数据发送的装置;所述装置之间通过通信网络连接。

与现有技术相比,本申请提供的一种数据源地址分发树的构造方法具有以下优点:

本申请提供的一种数据源地址分发树的构造方法构造的数据源地址分发树以需要复制的数据的标识和查询者(也即需要复制数据的节点)所在的组的标识所确定,仅仅存储该组内各个节点的相互关系(其中查询者节点的父节点即为其复制所述数据所指定的数据源地址),这样即便对于大型的网络来说,所需存储的数据量不大,完全能够部署在一个节点内。节省了中心化的数据源地址管理节点的存储空间,使得大型的分布式系统也可以采用中心化的数据源地址分发方式。

所述数据源地址分发树的建立和各个节点的加入都由需要复制数据的节点进行查询触发,因此不必预先为所有的数据源分发请求做好规划。

由此可见,与现有技术相比本申请提供的一种数据源地址分发树的构造方法,达到了节省数据源地址存储空间,简化数据源地址存储结构,并且能够动态地适应网络内节点变化的情况的效果,起到降低运行维护的成本,对节点变化的适应性更加灵活的作用。

与现有技术相比,本申请提供的一种用于复制数据的方法具有以下优点:以所需复制的数据的标识和本节点所在组的标识查询本节点的父节点信息,根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求。而查询者不同其对应节点的父节点信息也可以不同。

由此可见,与现有技术相比,本申请提供的一种复制数据的方法不仅起到避免大量节点从同一数据源复制数据对网络造成拥堵的作用,还将绝大多数复制相同数据的操作限定在本节点所在的组内,达到减少对网络上其他节点的影响的效果。

同时由于无需对网络上需要复制数据的节点做预先的规划,使得动态地增加节点或减少节点都能够新型复制数据的操作。达到提高业务系统可扩展性的效果。

与现有技术相比,本申请提供的一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法具有以下优点:起到提高复制数据操作的可靠性和安全性的作用。

与现有技术相比,本申请提供的一种数据发送方法具有以下优点:起到提 高复制数据操作安全性的效果。

与现有技术相比,本申请提供的一种数据源地址分发系统具有以下优点:达到简化网络结构,避免网络拥堵的效果;起到减少对非组内节点影响的作用;达到提高复制数据操作的可靠性和安全性的作用;并且能够动态地适应网络内节点变化的情况的效果,达到降低运行维护的成本,提高业务系统可扩展性的效果。

附图说明

图1为本申请第一实施例一种数据源地址分发树的构造方法的流程示意图。

图2为本申请第一实施例一种数据源地址分发树的构造方法中数据源地址分发树中存在一个仅有左子节点的存储节点的情况的示意图。

图3为本申请第一实施例一种数据源地址分发树的构造方法中数据源地址分发树中不存在仅有左子节点的存储节点的情况的示意图。

图4为本申请第一实施例中存储节点调整步骤和第二实施例一种用于复制数据的方法中以及第三实施例一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法中的数据源地址分发树示意图。

图5为本申请第二实施例一种用于复制数据的方法的流程示意图。

图6为本申请第三实施例一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法的流程示意图。

图7为本申请第四实施例一种用于数据发送的方法的流程示意图。

图8为本申请第五实施例一种数据源地址分发树的构造装置的结构框图。

图9为本申请第六实施例一种用于复制数据的装置的结构框图。

图10为本申请第七实施例一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置的结构框图。

图11为本申请第八实施例一种用于数据发送的装置的结构框图。

图12为本申请第九实施例一种数据源地址分发系统的结构示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背 本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

本申请第一实施例提供一种数据源地址分发树的构造方法,其流程示意图如图1所示,该实施例包括以下步骤:

步骤s101,接收请求者发送的查询所述请求者在指定的数据源地址分发树中的亲属节点信息的请求,所述请求者由其标识所确定,所述指定的数据源地址分发树由数据源地址分发树标识所确定。

数据源地址分发树构造节点收到请求者向其发送的查询请求,请求查询所述请求者在指定的数据源地址分发树中的亲属节点信息。

所述请求者由其标识所确定,所述标识可以采用所述请求者的ip地址或其名称,本申请的实施例中以所述请求者的ip地址为例进行说明。

所述亲属节点信息指在数据源地址分发树中,与存储所述请求者的节点直接相连的节点所存储的信息,如父节点所存储的节点标识,子节点(包括左子节点和右子节点)所存储的节点的标识等。节点的标识指在网络中能够唯一表征该节点的信息,可以是节点名称或节点的ip地址。在申请的本实施例中以节点的ip地址为例进行相应的说明。

所述的数据源地址分发树的标识可以是其所存储的位置或其名称,该名称包括在网络中标识所述请求者所在的组的标识和其所请求的数据的标识,如可以采用集群的名称和所请求的数据(或软件)的名称共同构成。

进一步地,采用集群的名称和所请求的数据(或软件)的名称共同构成的数据源地址分发树的标识能够在所述的网络中唯一地表征所述的请求者所在的集群和其所请求的数据或软件。这样能够将请求者的查询快速、唯一地定位到相应的数据源地址分发树而无需做进一步的区分,起到简化流程的效果。

本实施例中以数据源地址分发树的标识为其名称为例进行说明,该名称以所述请求者所在的网络集群的名称(如aaaaa)和所请求的数据(或软件)的名称(如bbbbb)共同构成,如“aaaaa/bbbbb”。

步骤s102,将所述请求者作为新节点加入所述数据源地址分发树。

将所述请求者作为新节点加入所述数据源地址分发树可以采用以下的方式:

判断是否存在所述数据源地址分发树。

根据所述数据源地址分发树的标识“aaaaa/bbbbb”,判断当前是否存在所述请求者查询的指定的数据源地址分发树。

如果当前不存在所述请求者查询的数据源地址分发树,则建立一棵数据源地址分发树,该树的名称为所述请求者所请求查询的数据源地址分发树的名称即“aaaaa/bbbbb”,该树的根节点存储所述请求者的ip地址(如15.170.170.1),其父节点和子节点皆为空。

如果当前存在所述请求者查询的数据源地址分发树“aaaaa/bbbbb”,根据所述请求者的ip地址判断所述的数据源地址分发树“aaaaa/bbbbb”中是否存在节点,其存储的内容为该请求者的ip地址(如15.170.170.1)。

如果所述的数据源地址分发树“aaaaa/bbbbb”中不存在存储的内容为该请求者的ip地址的节点,则为所述的数据源地址分发树增加一个新的存储节点,该存储节点存储所述的请求者的ip地址。将该存储节点加入所述的数据源地址分发树“aaaaa/bbbbb”中。

将该节点加入所述的数据源地址分发树中的方式与所述数据源地址分发树的类型相对应,在本实施例中优选地将数据源地址分发树构造为完全二叉树。完全二叉树的主要特点包括:除了叶子节点,该二叉树的其他节点一定有子节点,并且,最后一层(从根节点数)只可能是左边是满的,右边有空的。这样的数据源地址分发树结构简单,调整方便,维护容易。

本实施例中,将新增加的存储所述请求者的存储节点加入所述的数据源地址分发树“aaaaa/bbbbb”的最后一层(本申请的实施例中数据源地址分发树的层数从根节点开始数),即对于所述的数据源地址分发树“aaaaa/bbbbb”,若存在仅有左子节点而无右子节点的存储节点的情况,将该仅有左子节点而无有子节点的存储节点作为新增加的存储节点的父节点,将该新增加的存储节点作为该仅有左子节点而无有子节点的存储节点的右子节点。

若该数据源地址分发树不存在仅有左子节点的存储节点时,将位于该树倒数第二层的最左侧的没有子节点的存储节点作为该新增加的存储节点的父节点,将该新增加的存储节点作为其父节点的左子节点;若所述的数据源地址分发树“aaaaa/bbbbb”倒数第二层不存在没有子节点的存储节点,则将位于该树最后一层的最左侧的没有子节点的存储节点作为该新增加的存储节点的父节点,将该新增加的节点作为其父节点的左子节点。

例如对于仅有一个根节点(本步骤中前述的存储所述请求者ip:15.170.170.1的存储节点)的数据源地址分发树“aaaaa/bbbbb”的情况,当收到请求者15.170.170.2的查询请求后,在所述数据源地址分发树“aaaaa/bbbbb” 的根节点下新增加一个左子节点,存储15.170.170.2。

再例对于如图2所示的情况,数据源地址分发树“aaaaa/bbbbb”中存在一个仅有左子节点的存储节点,即存储了15.170.170.2的存储节点,请求者15.170.170.5请求查询图2中所示的左侧的数据源地址分发树“aaaaa/bbbbb”,则增加一个存储节点,存储15.170.170.5,将该存储了15.170.170.5的新增加的存储节点作为存储了15.170.170.2的存储节点的右子节点。

类似的,对于如图3所示的情况,数据源地址分发树“aaaaa/bbbbb”中不存在仅有左子节点的存储节点,请求者15.170.170.6请求查询图3中所示左侧的数据源地址分发树“aaaaa/bbbbb”,则增加一个存储节点,存储15.170.170.6,将该存储了15.170.170.6的新增加的存储节点作为存储了15.170.170.3的存储节点的左子节点。

步骤s103,将所述请求者对应的节点的父节点和子节点的信息发送给所述请求者。

对于由于不存在所述请求者查询的数据源地址分发树而以所述请求者作为根节点新建立了一棵数据源地址分发树的情况,将所述根节点的父节点和子节点为空的信息发送给所述的请求者。

对于图2所示的情况,将所述新节点的父节点存储15.170.170.2以及其子节点为空的信息发送给15.170.170.5。

对于图3所示的情况,将所述新节点的父节点存储了15.170.170.3以及其子节点为空的信息发送给15.170.170.6。

如果所述的数据源地址分发树“aaaaa/bbbbb”中存在存储的内容为该请求者的ip地址的存储节点,如请求者15.170.170.2查询图4所示左侧的数据源地址分发树“aaaaa/bbbbb”,则将存储了15.170.170.2的存储节点的父节点存储的15.170.170.1以及其子节点分别存储15.170.170.4和15.170.170.5的信息发送给请求者15.170.170.2。

除了上述构造数据源地址分发树的步骤外,优选地,本实施例还提供所述的数据源地址分发树的存储节点调整步骤,以图4所示的数据源地址分发树“aaaaa/bbbbb”为例,所述步骤如下:

步骤一,接收请求者发送的所述请求者在指定的数据源地址分发树中的父节点失效的信息,所述指定的数据源地址分发树由数据源地址分发树标识所确定。

例如收到请求者发送的其在如图4所示的数据源地址分发树“aaaaa/bbbbb”中的父节点失效信息。下面将针对不同的情况进行相应的说明。

步骤二,根据所述请求者发送的所述请求者在指定的数据源地址分发树中的父节点信息,调整所述数据源地址分发树的存储节点。

所述根据所述请求者发送的所述请求者在指定的数据源地址分发树中的父节点信息,调整所述数据源地址分发树的存储节点可以采用以下的方式:

判断所述数据源地址分发树中是否存在所述请求者对应的节点。

若所述数据源地址分发树中不存在所述请求者对应的节点,则将该请求者作为一个新节点加入所述数据源地址分发树,并将该新节点的父节点和子节点信息发送给所述请求者。

例如,对于收到15.170.170.7发送的其在数据源地址分发树“aaaaa/bbbbb”中的父节点失效的情况,图4所示的数据源地址分发树“aaaaa/bbbbb”中不存在存储所述请求者15.170.170.7的存储节点,则将请求者15.170.170.7加入所述数据源地址分发树“aaaaa/bbbbb”中,优选地,可以按照步骤s102中所述的方法将请求者15.170.170.7加入所述数据源地址分发树“aaaaa/bbbbb”中。

若所述数据源地址分发树中存在所述请求者对应的节点,则,根据在所述数据源地址分发树中该请求者对应的节点的父节点是否与该请求者发送的失效的父节点一致的情况调整所述数据源地址分发树的存储节点。

例如,对于收到请求者发送的其在数据源地址分发树“aaaaa/bbbbb”中的父节点失效的情况,所述的数据源地址分发树“aaaaa/bbbbb”中存在存储了所述请求者的存储节点,这时判断该请求者发送的父节点失效信息中的父节点是否与所述的数据源地址分发树“aaaaa/bbbbb”中存储了该请求者的存储节点的父节点所存储的节点信息一致。

对于在所述数据源地址分发树中该请求者对应的节点的父节点与该请求者发送的失效的父节点不一致的情况,,则将所述数据源地址分发树中该请求者对应的节点的父节点信息发送给该所述请求者。

例如请求者15.170.170.4发送的父节点失效信息中的其父节点为15.170.170.7,而所述的数据源地址分发树“aaaaa/bbbbb”中存储所述请求者15.170.170.4的存储节点的父节点存储的节点为15.170.170.2,两者不一致,则将所述的数据源地址分发树“aaaaa/bbbbb”中存储请求者15.170.170.4的 存储节点的父节点存储15.170.170.2的信息发送给请求者15.170.170.4。

对于在所述数据源地址分发树中该请求者对应的节点的父节点与该请求者发送的失效的父节点一致的情况,则,判断所述数据源地址分发树中是否存在有效的叶子节点。

例如请求者15.170.170.4发送的父节点失效信息中其父节点为15.170.170.2,而所述的数据源地址分发树“aaaaa/bbbbb”中存储请求者15.170.170.4的存储节点的父节点存储的节点为15.170.170.2,两者一致,则根据所述数据源地址分发树中是否存在有效的叶子节点,调整所述数据源地址分发树的存储节点。

对于数据源地址分发树“aaaaa/bbbbb”中存在的有效的叶子节点的情况,将所述请求者对应的节点的父节点标记为失效并与所述有效的叶子节点交换位置,并将此时所述请求者对应的节点的父节点信息发送给所述请求者。

例如,数据源地址分发树“aaaaa/bbbbb”中存在的有效的叶子节点,该叶子节点存储15.170.170.6,将该存储节点与存储请求者15.170.170.4的存储节点的父节点(存储15.170.170.2)对调位置,同时标记存储15.170.170.2的存储节点为失效的存储节点,将存储请求者15.170.170.4的存储节点的父节点存储15.170.170.6的信息发送给请求者15.170.170.4。

对于数据源地址分发树“aaaaa/bbbbb”中不存在的有效的叶子节点的情况,删除所述数据源地址分发树,将所述请求者作为根节点,以被删除的数据源地址分发树的标识建立一棵数据源地址分发树,并将该根节点的父节点的信息发送给所述请求者。

例如,对于图4中所示的数据源地址分发树“aaaaa/bbbbb”当收到15.170.170.2发送的其父节点15.170.170.1失效的信息,此时,若数据源地址分发树“aaaaa/bbbbb”中不存在有效的叶子节点(图4所示的数据源地址分发树“aaaaa/bbbbb”的叶子节点15.170.170.4,15.170.170.5和15.170.170.6都失效),则删除数据源地址分发树“aaaaa/bbbbb”,以请求者15.170.170.2为根节点建立一棵名为“aaaaa/bbbbb”的数据源地址分发树,并将其父节点为空的信息发送给请求者15.170.170.2。

本实施例提供的方法不仅可以用于网络中普通的数据复制时数据源地址的分发,由于在分布式系统内多个节点部署相同的数据的情况更为突出,优选地,本实施例提供的方法可以用于大型分布式计算机系统内各节点上的数据部署, 为大型分布式计算机系统内各节点部署数据构造数据源地址分发树,从而能够起到节省存储空间,灵活添加或减少节点的作用。

以上为本申请的一种数据源地址分发树的构造方法的实施例,该方法能够达到节省存储空间,简化数据源地址存储结构的效果,使得单一节点可存储的数据源地址数量大大增加,并且能够达到动态地适应网络内节点变化的情况的效果,起到降低运行维护的成本,对节点变化的适应性更加灵活的作用。

相应的,本申请的第二实施例提供一种用于复制数据的方法,其流程图如图5所示,包括如下步骤:

步骤s201,获取复制数据到本节点的请求,所述请求包括数据的标识以及数据的原始地址。

网络中的节点收到进行复制数据的请求,请求中包含所要复制数据的标识如数据的名称,和数据所存储位置的原始地址,如某个用于存储相应数据的服务器的名称或ip地址。

步骤s202,获得本节点在指定的数据源地址分发树中的父节点信息,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定。

查询本节点在由所述数据的标识(如“bbbbb”)和本节点所在的组的标识(如“aaaaa”)相结合所确定的数据源地址分发树(如“aaaaa/bbbbb”),获得本节点在其中的父节点信息。

优选地,数据的标识(如“bbbbb”)和本节点所在的组的标识(如“aaaaa”)相结合可以唯一地确定数据源地址分发树。从而可以避免由于结合的方法不当导致的不同的标识对应相同的数据源地址分发树的情况,达到快速准确确定数据源地址分发树的效果。

获得本节点在指定的数据源地址分发树中的父节点信息的方式可以包括以下两种:

方式一,向数据源地址分发树中心控制节点发送查询本节点在指定的数据源地址分发树中的亲属节点信息的请求。接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中无父节点的信息并存储到本节点。

从数据源地址分发树中心控制节点查询并获取本节点在指定的数据源地址分发树中的亲属节点信息能够保证查询结果的准确性。

方式二,查询获得本节点存储的本节点在指定的数据源地址分发树中的父 节点信息。

从本节点获取存储的本节点在指定的数据源地址分发树中的父节点信息能够更快速得获得所查询的结果。

步骤s203,根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求。

以图4中的数据源地址分发树为例。

若本节点在指定的数据源地址分发树中存在父节点,则向获得的所述本节点在指定的数据源地址分发树中的父节点发送复制所述数据的请求。

对于查询到本节点在所述数据源地址分发树中存在有父节点的情况,如本节点为15.170.170.4,在数据源地址分发树“aaaaa/bbbbb”中存储其的存储节点的父节点存储的节点为15.170.170.2,则向节点15.170.170.2发送复制所述数据“bbbbb”的请求。

若本节点在指定的数据源地址分发树中不存在父节点,则向复制数据到本节点的请求中所包含的数据的原始地址发送复制所述数据的请求。

对于查询到本节点在所述数据源地址分发树中不存在父节点的情况,如本节点为15.170.170.1,在数据源地址分发树“aaaaa/bbbbb”中存储其的存储节点为根节点,其父节点为空,则向复制数据到节点的请求中所包含的数据的原始地址(如其所在的服务器的ip地址)发送复制所述数据“bbbbb”的请求。

步骤s204,接收所述数据到本节点。

接收相应的数据源地址发送的所请求的数据到本节点。

为起到增加数据复制的安全性的效果,在接收所述数据到本节点时,优选地,还可以判断所述数据的发送者是否为本节点存储的本节点在所述数据源地址分发树中的父节点,如当本节点15.170.170.4接收到节点15.170.170.2发送的所需要复制的数据“bbbbb”时,当本节点存储的本节点在所述数据源地址分发树中的父节点为15.170.170.2(也即,在所述数据源地址分发树中,存储本节点的存储节点的父节点存储的节点为15.170.170.2)时,进行接收数据的操作,若本节点存储的本节点在所述数据源地址分发树中的父节点不是15.170.170.2时,不直接进行接收数据的操作,这时可以做更多的处理,再进行相应的操作。

本实施例提供的方法,优选地可用于分布式计算机系统内各个节点的数据部署。

在分布式系统内各个节点部署同一软件是分布式计算机系统业务系统运行的必要操作,而软件不过是数据的一种组织方式,本实施例所提供的方法用于分布式计算机系统集群部署同一软件,仅集群内的一个节点从原始数据源地址复制数据,集群内其他节点分别从集群内的已经部署了数据的节点复制数据,能够起到避免网络拥堵的效果,同时将绝大多数复制相同数据的操作限定在本节点所在的集群内,达到减少对网络上其他节点的影响的效果。

本申请第三实施例提供一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的方法,其流程图如图6所示。所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定。

本实施例以图4所示的数据源地址分发树“aaaaa/bbbbb”为例进行说明。

步骤s301,检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常。

检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常可以有多种方式,本实施例提供两种方案如下:

一,接收发送者发送的数据时,判断所述数据的发送者是否为本节点存储的本节点在所述数据源地址分发树中的父节点,若所述数据的发送者不是本节点存储的本节点在所述数据源地址分发树中的父节点,则本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常。

当节点进行数据接收时,若所述数据的发送者与本节点存储的在数据源地址分发树“aaaaa/bbbbb”中的父节点不一致,则本节点存储的本节点在数据源地址分发树“aaaaa/bbbbb”中的父节点信息异常。

在接收数据时对本节点存储的本节点在指定的数据源地址分发树中的父节点进行验证,能够起到提高安全性和可靠性的作用。

二,以设定的时间间隔向本节点存储的本节点在所述数据源地址分发树中的父节点发送状态更新请求,判断所述状态更新请求是否失败,若所述状态更新请求失败,则本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常。

本节点(以15.170.170.4为例)周期性地向存储于本节点的其在数据源地址分发树“aaaaa/bbbbb”中存储其的存储节点的父节点所存储的节点 (15.170.170.2)发送状态更新请求,若所述状态更新请求在设定的时长内没有收到相应的响应信息或在设定的时长内没有收到相应的响应信息,且多次状态更新请求连续没有收到响应信息的次数超过设定的值,则认为状态更新请求失败,本节点(15.170.170.4)存储的本节点(15.170.170.4)在指定的数据源地址分发树中的父节点(15.170.170.2)信息异常。

在没有进行数据复制的操作的情况下,周期性地对本节点存储的本节点在指定的数据源地址分发树中的父节点进行验证,能够及时同步本节点在数据源地址分发树中的父节点信息,提高系统的可靠性。

步骤s302,向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树中的亲属节点信息的请求。

对于检测到本节点存储的本节点在指定的数据源地址分发树“aaaaa/bbbbb”中的父节点信息异常的情况,除了及时向数据源地址分发树中心控制节点请求更新外,对于周期性地对本节点存储的本节点在指定的数据源地址分发树“aaaaa/bbbbb”中的父节点进行验证的情况下检测到异常的情况,如节点15.170.170.4检测到在在指定的数据源地址分发树中其父节点15.170.170.2异常的情况,在向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树“aaaaa/bbbbb”中的亲属节点信息的请求中包含本节点(15.170.170.4)在所述数据源地址分发树中的父节点(15.170.170.2)失效信息,即报告给数据源地址分发树中心控制节点,在所述数据源地址分发树中,存储本节点(15.170.170.4)的存储节点的父节点所存储的节点(15.170.170.2)失效。这样能够及时同步数据源地址分发树中,为后续其他节点复制数据时查询数据源地址提前做好准备,起到提高可靠性的效果。

步骤s303,接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点的信息;

数据源地址分发树中心控制节点收到查询本节点在所述数据源地址分发树中的亲属节点信息的请求后,会进行相应的处理并将处理后请求节点在其所维护的所述数据源地址分发树中的亲属节点信息反馈给请求节点。

步骤s304,用数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点更新本节点存储的本节点在所述数据源地址分发树中的父节点信息。

收到数据源地址分发树中心控制节点反馈的父节点信息后,本节点用其更 新自己存储的其在所述数据源地址分发树中的父节点信息。

与其他实施例提供的方法类似,本实施例提供的方法也可以用于分布式计算机系统内各个接待你的数据部署。能够起到提高系统可用性,可靠性的效果。

本申请第四实施例提供一种用于数据发送方法,其流程图如图7所示。

步骤s401,接收请求者发送的复制数据请求,所述数据由数据的标识所确定。

以节点15.170.170.2收到15.170.170.4的复制数据“bbbbb”为例进行说明。

步骤s402,查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定。

节点15.170.170.2判断复制数据的请求者15.170.170.4是否为其在由请求者节点所请求的数据标识(“bbbbb”)和本节点所在组(集群)标识(如“aaaaa”)所确定的数据源地址分发树“aaaaa/bbbbb”中的子节点。

对于本节点属于不同组(集群)的情况,需要对更多的数据源地址分发树做判断,如本节点不仅仅属于集群“aaaaa”,还可能属于集群“ccccc”,若请求者节点不是本节点在数据源地址分发树“aaaaa/bbbbb”中的子节点,则还需要判断请求者节点是否为本节点在数据源地址分发树“ccccc/bbbbb”中的子节点。

查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点的方式可以有多种,本实施例提供以下两种方式并分别进行说明:

一,向数据源地址分发树中心控制节点发送查询本节点在指定的数据源地址分发树中的亲属节点请求;接收并存储数据源地址分发树中心控制节点发送的子节点信息。

二,查询本节点存储的本节点在指定的数据源地址分发树中的子节点信息。

步骤s403,若复制数据请求的发送者为本节点在指定的数据源地址分发树中的子节点,则向该复制数据请求的发送者发送其所请求的数据。

当15.170.170.2判断复制数据的请求者15.170.170.4为其在数据源地址分发树中心控制节点的数据源地址分发树中存储其的存储节点的子节点所存储 的节点时或15.170.170.4为15.170.170.2所存储的15.170.170.2在数据源地址分发树中的子节点,向其发送其所请求的数据。

本实施例提供的方法,可以用于分布式计算机系统内各个节点的数据部署。能够起到提高安全性,可靠性的效果。

本申请的第五实施例提供一种数据源地址分发树的构造装置,其结构框图如图8所示,该装置包括,接收单元u501,构造单元u502,和发送单元u503。

所述接收单元u501,用于接收请求者发送的查询所述请求者在指定的数据源地址分发树中的亲属节点信息的请求,所述请求者由其标识所确定,所述指定的数据源地址分发树由数据源地址分发树标识所确定。

构造单元u502,用于将所述请求者作为新节点加入所述数据源地址分发树。

所述发送单元u503,用于将所述请求者对应的节点的父节点和子节点的信息发送给所述请求者。

本申请第六实施例提供一种用于复制数据的装置,其结构框图如图9所示,该装置包括获取单元u601,获得单元u602,发送单元u603和接收单元u604。

所述获取单元u601,用于获取复制数据到本节点的请求,所述请求包括数据的标识以及数据的原始地址。

所述获得单元u602,用于获得本节点在指定的数据源地址分发树中的父节点信息,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定。

所述发送单元u603,用于根据本节点在指定的数据源地址分发树中父节点的信息,发送相应的复制所述数据的请求。

所述接收单元u604,用于接收所述数据到本节点。

本申请第七实施例提供一种更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和所述请求者所在的组的标识所确定,该装置的结构框图如图10所示,该装置包括检测单元u701,查询单元u702,接收单元u703和更新单元u704。

所述检测单元u701,用于检测到本节点存储的本节点在指定的数据源地址分发树中的父节点信息异常。

所述查询单元u702,用于向数据源地址分发树中心控制节点发送查询本节点在所述数据源地址分发树中的亲属节点信息的请求。

所述接收单元u703,用于接收数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点的信息。

所述更新单元u704,用于用数据源地址分发树中心控制节点发送的本节点在所述数据源地址分发树中的父节点更新本节点存储的本节点在所述数据源地址分发树中的父节点信息。

本申请第八实施例提供一种用于数据发送的装置,其结构框图如图11所示,该装置包括接收单元u801,查询单元u802和发送单元u803。

所述接收单元u801,用于接收请求者发送的复制数据请求,所述数据由数据的标识所确定。

所述查询单元u802,用于查询复制数据请求的发送者是否为本节点在指定的数据源地址分发树中的子节点,所述指定的数据源地址分发树由数据源地址分发树的标识所确定,所述数据源地址分发树的标识由所述数据的标识和本节点所在的组的标识所确定。

所述发送单元u803,用于若复制数据请求的发送者为本节点在指定的数据源地址分发树中的子节点,则向该复制数据请求的发送者发送其所请求的数据。

本申请第九实施例提供一种数据源地址分发系统,其结构框图如图12所示,该系统包括数据源地址分发树的构造装置e901、用于复制数据的装置e902、更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置e903和用于数据发送的装置e904。所述数据源地址分发树的构造装置e901位于数据源地址分发树中心控制端;所述用于复制数据的装置e902、更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置e903和用于数据发送的装置e904位于数据源地址请求端。

所述数据源地址分发树中心控制端和所述数据源地址请求端之间通过网络相互连接。

所述数据源地址请求端可以有多个,并且多个数据源地址请求端之间通过网络相互连接。

所述数据源地址分发树的构造装置e901的功能可以参考本申请第五实施例所述。

所述用于复制数据的装置e902的功能可以参考本申请第六实施例所述。

所述更新本节点存储的本节点在指定的数据源地址分发树中的父节点信息的装置和用于数据发送的装置e903的功能可以参考本申请第七实施例所述。

所述用于数据发送的装置e904的功能可以参考本申请第八实施例所述。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、 光学存储器等)上实施的计算机程序产品的形式。

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