副本更新方法和装置以及计算机可读存储介质与流程

文档序号:18072787发布日期:2019-07-03 03:58阅读:114来源:国知局
本发明涉及计算机网络领域,特别涉及一种副本更新方法和装置以及计算机可读存储介质。
背景技术
::cdn(contentdeliverynetwork,内容分发网络)-p2p(peertopeer,对等)网络融合技术的广泛应用,极大地提高了用户内容共享的服务能力。cdn-p2p融合分发网络不是cdn网络和p2p网络之间的简单叠加,而是在结构上进行融合,使两者优势互补,使得cdn-p2p融合分发网络具有较高的健壮性、可扩展性。典型的cdn-p2p网络由源服务器层、边缘服务器层和p2p用户节点层组成。cdn-p2p融合网络的桥梁是边缘服务器,源服务器把内容复制给边缘服务。随着融合网络规模的不断扩大,边缘服务器的数量也不断增加。由于边缘服务器上的副本内容动态变化频繁,因此不同边缘服务器上同一内容的副本可出现不一致的现象。用户请求内容时,通常选择就近的边缘服务器,如果该边缘服务器副本更新不及时,则用户得到的信息可能是无用落后的信息,从而降低了cdn-p2p融合网络用户请求的成功率和内容服务质量。快速更新边缘服务器的副本内容,保持不同边缘服务器上副本内容一致性是cdn-p2p网络性能提升的关键。chord算法一种p2p算法,是由麻省理工学院于2001年提出的。chord的目的是提供一种能在p2p网络快速定位资源的算法。在相关技术中,可以利用chord环对各个边缘服务器上的副本进行及时更新。然而,现有技术中的方法在进行更新时需要令chord环上的各个节点逐一收集后继节点的副本信息,导致了副本更新的效率低下。技术实现要素:本发明实施例所要解决的一个技术问题是:如何提高副本更新效率。根据本发明一些实施例的第一个方面,提供一种副本更新方法,包括:获取chord环上根节点的指针表,其中,chord环上的节点具有同一副本,根节点为版本号最高的节点,指针表中包括chord环上多个节点;采用指针表中的节点作为分割点,将除根节点以外的chord环上的节点分割为多个子区间,其中,每个子区间中的首个节点为分割点;令根节点的指针表中的节点收集其所在子区间的所有节点的版本号;令根节点收集其指针表中的节点收集的版本号;根据版本号对chord环上的节点进行副本更新。在一些实施例中,令根节点的指针表中的节点收集其所在子区间的所有节点的版本号包括:响应于子区间中的节点数量大于预设值,重复以下过程、直到最新生成的子区间中的节点数量不大于预设值:采用子区间中的首个节点的指针表中的节点作为分割点继续进行分割,生成多个子区间;令每个子区间的首个节点收集其所在子区间的所有节点的版本号。在一些实施例中,令每个子区间的首个节点收集其所在子区间的所有节点的版本号包括:对于节点数量不大于预设值的子区间,令除子区间中最后一个节点以外的每个节点依次收集其直接后继节点收集的版本号;对于节点数量大于预设值的子区间,令每个子区间的首个节点收集其指针表中的节点收集的版本号。在一些实施例中,采用chord环上的节点构建更新树,其中,更新树中每个父节点的版本号不低于父节点的子节点的版本号;按照从根节点到叶子节点的更新顺序,令更新树中除根节点以外的每个节点根据其父节点上的副本内容进行更新。在一些实施例中,用chord环上的节点构建更新树包括:将版本号最高的节点作为更新树的根节点;将chord环上的所有节点组成的区域作为待划分区域;重复以下过程,直到待划分区域为空:将待划分区域中除版本号最高的节点以外的节点组成的区域划分为若干子区域;针对每个子区域,将子区域中版本号最高的节点添加到更新树中,作为待划分区域中版本号最高的节点的子节点;将每个子区域分别作为待划分区域。根据本发明一些实施例的第二个方面,提供一种副本更新装置,包括:根节点指针表获取模块,用于获取chord环上根节点的指针表,其中,chord环上的节点具有同一副本,根节点为版本号最高的节点,指针表中包括chord环上多个节点;子区间分割模块,用于采用指针表中的节点作为分割点,将除根节点以外的chord环上的节点分割为多个子区间,其中,每个子区间中的首个节点为分割点;版本号收集模块,用于令根节点的指针表中的节点收集其所在子区间的所有节点的版本号,令根节点收集其指针表中的节点收集的版本号;副本更新模块,用于根据版本号对chord环上的节点进行副本更新。在一些实施例中,版本号收集模块进一步用于响应于子区间中的节点数量大于预设值,重复以下过程、直到最新生成的子区间中的节点数量不大于预设值:采用子区间中的首个节点的指针表中的节点作为分割点继续进行分割,生成多个子区间;令每个子区间的首个节点收集其所在子区间的所有节点的版本号。在一些实施例中,版本号收集模块进一步用于:对于节点数量不大于预设值的子区间,令除子区间中最后一个节点以外的每个节点依次收集其直接后继节点收集的版本号;对于节点数量大于预设值的子区间,令每个子区间的首个节点收集其指针表中的节点收集的版本号。在一些实施例中,副本更新模块进一步用于采用chord环上的节点构建更新树,其中,更新树中每个父节点的版本号不低于父节点的子节点的版本号;按照从根节点到叶子节点的更新顺序,令更新树中除根节点以外的每个节点根据其父节点上的副本内容进行更新。在一些实施例中,副本更新模块进一步用于:将版本号最高的节点作为更新树的根节点;将chord环上的所有节点组成的区域作为待划分区域;重复以下过程,直到待划分区域为空:将待划分区域中除版本号最高的节点以外的节点组成的区域划分为若干子区域;针对每个子区域,将子区域中版本号最高的节点添加到更新树中,作为待划分区域中版本号最高的节点的子节点;将每个子区域分别作为待划分区域。根据本发明实施例的第三个方面,提供一种副本更新装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述任意一种副本更新方法。根据本发明实施例的第四个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种副本更新方法。上述发明中的一些实施例具有如下优点或有益效果:本发明的实施例通过采用指针表中的节点划分子区间、并收集各个子区间中的版本号,从而可以使得收集版本号的过程能够并行地进行,提高了副本更新的效率。通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为根据本发明一些实施例的副本更新方法的流程图。图2为根据本发明一些实施例的chord环的示意图。图3为根据本发明一个实施例的子区间分割方法的流程图。图4为根据本发明一些实施例的版本号收集方法的流程图。图5为根据本发明一些实施例的分割树的子树的示意图。图6a为根据本发明另一些实施例的副本更新方法的流程图。图6b为根据本发明一些实施例的更新树的示意图。图7为根据本发明一些实施例的更新树构建方法的流程图。图8为根据本发明一些实施例的副本更新装置的结构图。图9为根据本发明另一些实施例的副本更新装置的结构图。图10为根据本发明一些实施例的副本更新装置的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。图1为根据本发明一些实施例的副本更新方法的流程图。如图1所示,该实施例的副本更新方法包括步骤s102~s110。在步骤s102中,获取chord环上根节点的指针表,其中,chord环上的节点具有同一副本,根节点为副本版本最高的节点,指针表中包括chord环上多个节点。chord环上的节点可以是网络中的内容服务器,chord环的一个实施例可以如图2所示。节点具有同一副本是指节点具有相同的资源,而由于副本内容变化频繁,同一副本在不同节点上的版本可能不同。例如,同一电视剧在不同节点上存储的集数可能不同,同一目录服务在不同节点上存储的结构可能不同等等。节点的指针表(fingertable)中包括该节点的多个后继节点的名称和版本号,版本号是指节点上存储的副本的版本号。根据chord协议的内容,chord环上的节点总数为2w,则每个节点的指针表中包括w项。在节点编号为n的节点的指针表中,第i项为chord环上的第n+2i-1位的后继节点。此外,指针表中的每一项还包括该项中的节点上的副本版本信息。本发明的一些实施例中,节点n0的指针表例如可以如表1所示。表1偏移量后继节点版本号n0+1n11n0+2n20.4n0+4n40.8n0+8n100.9在步骤s104中,采用指针表中的节点作为分割点,将除根节点以外的chord环上的节点分割为多个子区间,其中,每个子区间中的首个节点为分割点。仍以图2为例,设n0为版本号最高的节点,则以n0的指针表中的节点作为分割点进行分割,可以得到以下4个子区间:[n1],[n2,n3],[n4,n6,n7],[n10,n12,n13]。在步骤s106中,令根节点的指针表中的节点收集其所在子区间的所有节点的版本号。如果逐一令chord环上的每个节点获取其后继节点的版本号,版本号的收集时间会随着chord环上节点数量的增加而变长。当chord环上节点数量巨大时,版本号的收集过程会耗费较长的时间。因此,本发明利用chord环上的节点具有指针表这一特点,令指针表中的节点同时去收集各个子区间的版本号,从而使得收集过程能够并行进行,提高了收集效率。在步骤s108中,令根节点收集其指针表中的节点收集的版本号。从而,根节点获得了chord环上所有节点的版本号。在步骤s110中,根据版本号对chord环上的节点进行副本更新。在一些实施例中,可以令根节点将副本复制给版本号较高的节点,获得了最新副本的节点可以将副本再复制给版本号较低的节点。通过上述实施例的方法,可以采用指针表中的节点划分子区间、并收集各个子区间中的版本号,从而可以使得收集版本号的过程能够并行地进行,提高了副本更新的效率。在一些实施例中,每个子区间中的节点可以按照从前至后的顺序,依次收集其后继节点的版本号。例如,对于子区间[n10,n12,n13,n16],可以由n13收集n16的版本号;再由n12收集n13的版本号、以及n13收集的n16的版本号;类似地,n10可以获得n12、n13、n16的版本号。从而,子区间中的首个节点n10获得了子区间中所有节点的版本号,可以将其上报给根节点n0。在一些实施例中,chord环上的节点数量很多,为了进一步提升副本效率,可以对子区间进一步地进行分割。下面参考图3描述本发明子区间分割方法的实施例。图3为根据本发明一个实施例的子区间分割方法的流程图。如图3所示,该实施例的版本号收集方法包括步骤s302~s310。在步骤s302中,获取chord环上根节点的指针表。在步骤s304中,采用指针表中的节点作为分割点,将除根节点以外的chord环上的节点分割为多个子区间。在步骤s306中,判断新生成的子区间中的节点数量是否大于预设值。如果是,执行步骤s308;如果不是,执行步骤s310。在步骤s308中,采用子区间中的首个节点的指针表中的节点作为分割点继续进行分割,生成多个子区间,回到步骤s306。即,如果生成的子区间中的节点数量过多,可以继续对子区间进行分割。在步骤s310中,令子区间的首个节点收集其所在子区间的所有节点的版本号。下面示例性地描述上述分割方法。设采用n0的指针表对chord环进行分割,获得的其中一个子区间为z1=[n6,n10,n12,n13,n15,n16,n18,n25,n28,n30,n36,n37,n39,n41]。设子区间的预设最大节点数量为4,则子区间z1需要继续进行分割。z1中的首个节点n6的指针表中的节点为n10和n15,因此对z1进行继续分割生成z11=[n10,n12,n13]和z12=[n15,n16,n18,n25,n28,n30,n36,n37,n39,n41]。z11中节点数量小于4,可以停止分割,z12则需要继续分割。z12中的首个节点n15的指针表中的节点为n16、n18和n25,因此对z12继续分割生成z121=[n16]、z122=[n18]、z123=[n25,n28,n30,n36,n37,n39,n41]。类似地,对z123继续分割,生成z1231=[n28]、z1232=[n30]、z=1233=[n36,n37,n39,n41]。新生成的区间z1231、z1232、z1233中的节点数量均小于4,因此可以停止分割。通过上述实施例的方法,可以利用chord环中的每个节点都具有指针表的特点、对chord进行多次的迭代分割,以使尽可能多的节点并行地收集版本号,从而提高了版本号收集的效率、进而提高了副本更新的效率。在区间划分完成后,可以开始版本号的收集过程。对于节点数量不大于预设值的子区间,即没有被进一步细分的子区间,可以令除子区间中最后一个节点以外的每个节点依次收集其直接后继节点收集的版本号;对于节点数量大于预设值的子区间,即还包括更多细分的子区间的子区间,可以令每个子区间的首个节点收集其指针表中的节点收集的版本号。下面参考图4描述本发明版本号收集过程的实施例。图4为根据本发明一些实施例的版本号收集方法的流程图。如图4所示,该实施例的版本号收集方法包括步骤s402~s406。在步骤s402中,采用分割树记录各个子区间的首个节点。在分割树中,父节点为子区间的首个节点,父节点的子节点为父节点的指针表中的节点,即,对子区间进行分割后新生成的子区间的首个节点。以图2实施例中的子区间z1为例,描述分割树中z1所对应的子树部分。则该子树的结构可以如图5所示。在步骤s404中,令分割树中的叶子节点采集以叶子节点为首个节点的子区间中所有节点的版本号,收集方式为按照从后至前的顺序、令除子区间中最后一个节点以外的每个节点依次收集其直接后继节点收集的版本号。例如,叶子节点n10采集子区间z11=[n10,n12,n13]中所有节点的版本号,叶子节点n36采集子区间z=1233=[n36,n37,n39,n41]中所有节点的版本号等等。在子区间z11中,n12收集直接后继节点n13的版本号,n10收集直接后继节点n12收集的版本号,其中包括n12自身的版本号。在步骤s406中,按照从叶子节点到根节点的方向,令分割树中的每个非叶子节点获取其子节点收集的版本号。例如,节点n25可以收集节点n28、n30、n36收集的版本号,从而节点n25获得了以n25为首个节点的子区间中所有节点的版本号。以此类推,分割树的根节点、即chord环上版本号最高的节点可以获得chord环上所有节点的版本号。通过上述实施例的方法,可以令不同类型的节点采用不同的版本号收集方式,从而可以快速地实现版本号的收集。下面参考图6a描述本发明副本更新过程的实施例。图6a为根据本发明另一些实施例的副本更新方法的流程图。如图6a所示,该实施例的副本更新方法包括步骤s602~s604。在步骤s602中,采用chord环上的节点构建更新树,其中,更新树中每个父节点的版本号不低于父节点的子节点的版本号。更新树的一个实施例可以如图6b所示。n0为副本更新到最高版本的节点,更新树中的其他节点的副本版本均低于或等于其父节点的版本号。在步骤s604中,按照从根节点到叶子节点的更新顺序,令更新树中除根节点以外的每个节点根据其父节点上的副本内容进行更新。在一些实施例中,可以依次令更新树中的每个节点根据其父节点上的副本进行增量更新。上述实施例按照从根节点到叶子节点的更新顺序,依次令更新树中的每个节点根据其父节点上的副本进行更新,从而使最新的副本只会由具有高版本副本的节点流向具有低版本副本的节点,节省了更新时间,减少了更新过程中不必要的网络资源消耗。在构建更新树的过程中,可以将chord环划分为多个区域,选取每个区域中副本版本最高的节点添加到更新树,并将剩余的区域继续进行划分,迭代执行上述过程,直到所有的节点均被添加到更新树。下面参考图7描述本发明一个实施例的更新树构建方法。图7为根据本发明一些实施例的更新树构建方法的流程图。如图7所示,该实施例的方法包括步骤s702~s712。在步骤s702中,将版本号最高的节点作为更新树的根节点。在步骤s704中,将chord环上的所有节点组成的区域作为待划分区域。在步骤s706中,将待划分区域中除副本版本最高的节点以外的节点组成的区域划分为若干子区域。在一些实施例中,可以将待划分区域中除副本版本最高的节点以外的节点组成的区域平均划分为两个子区域。从而,可以生成二叉更新树。在步骤s708中,针对每个子区域,将子区域中版本号最高的节点添加到更新树中,作为待划分区域中版本号最高的节点的子节点。在步骤s710中,将每个子区域分别作为待划分区域。在步骤s712中,判断待划分区域是否为空。如果不是,执行步骤s706;如果是,结束流程。通过采用上述方法,可以通过区域划分的方式逐步确定当前区域中副本版本最高的节点,从而可以快速、准确地建立更新树。下面参考图8描述本发明副本更新装置的实施例。图8为根据本发明一些实施例的副本更新装置的结构图。如图8所示,该实施例的副本更新装置80包括:根节点指针表获取模块810,用于获取chord环上根节点的指针表,其中,chord环上的节点具有同一副本,根节点为版本号最高的节点,指针表中包括chord环上多个节点;子区间分割模块820,用于采用指针表中的节点作为分割点,将除根节点以外的chord环上的节点分割为多个子区间,其中,每个子区间中的首个节点为分割点;版本号收集模块830,用于令根节点的指针表中的节点收集其所在子区间的所有节点的版本号,令根节点收集其指针表中的节点收集的版本号;副本更新模块840,用于根据版本号对chord环上的节点进行副本更新。在一些实施例中,版本号收集模块830可以进一步用于响应于子区间中的节点数量大于预设值,重复以下过程、直到最新生成的子区间中的节点数量不大于预设值:采用子区间中的首个节点的指针表中的节点作为分割点继续进行分割,生成多个子区间;令每个子区间的首个节点收集其所在子区间的所有节点的版本号。在一些实施例中,版本号收集模块830可以进一步用于:对于节点数量不大于预设值的子区间,令除子区间中最后一个节点以外的每个节点依次收集其直接后继节点收集的版本号;对于节点数量大于预设值的子区间,令每个子区间的首个节点收集其指针表中的节点收集的版本号。在一些实施例中,副本更新模块840可以进一步用于采用chord环上的节点构建更新树,其中,更新树中每个父节点的版本号不低于父节点的子节点的版本号;按照从根节点到叶子节点的更新顺序,令更新树中除根节点以外的每个节点根据其父节点上的副本内容进行更新。在一些实施例中,副本更新模块840可以进一步用于:将版本号最高的节点作为更新树的根节点;将chord环上的所有节点组成的区域作为待划分区域;重复以下过程,直到待划分区域为空:将待划分区域中除版本号最高的节点以外的节点组成的区域划分为若干子区域;针对每个子区域,将子区域中版本号最高的节点添加到更新树中,作为待划分区域中版本号最高的节点的子节点;将每个子区域分别作为待划分区域。图9为根据本发明另一些实施例的副本更新装置的结构图。如图9所示,该实施例的副本更新装置900包括:存储器910以及耦接至该存储器910的处理器920,处理器920被配置为基于存储在存储器910中的指令,执行前述任意一个实施例中的副本更新方法。其中,存储器910例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)以及其他程序等。图10为根据本发明一些实施例的副本更新装置的结构图。如图10所示,该实施例的副本更新装置1000包括:存储器1010以及处理器1020,还可以包括输入输出接口1030、网络接口1040、存储接口1050等。这些接口1030,1040,1050以及存储器1010和处理器1020之间例如可以通过总线1060连接。其中,输入输出接口1030为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口1040为各种联网设备提供连接接口。存储接口1050为sd卡、u盘等外置存储设备提供连接接口。本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种副本更新方法。本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1