首页> 中国专利> 一种基于BCube(n,b)数据中心的数据存取方法

一种基于BCube(n,b)数据中心的数据存取方法

摘要

本发明公开了一种基于BCube()数据中心的数据存取方法,应用于多副本系统中,包括:确定至少一组第一节点,各组内的各所述第一节点之间在各位上的数字均不相同;根据第二节点和各所述第一节点确定所述第二节点与各所述第一节点之间的传输路径;将所述第二节点存储的数据分别通过各所述传输路径并行传输至各所述第一节点。通过上述方法,能够实现数据的并行传输,节省了数据传输的时间也提高了数据传输的效率。

著录项

  • 公开/公告号CN108536555A

    专利类型发明专利

  • 公开/公告日2018-09-14

    原文格式PDF

  • 申请/专利权人 中国人民解放军国防科技大学;

    申请/专利号CN201810875166.6

  • 发明设计人 郭得科;夏俊旭;唐国明;

    申请日2018-08-03

  • 分类号G06F11/14(20060101);H04L12/703(20130101);H04L12/707(20130101);H04L12/709(20130101);H04L29/08(20060101);

  • 代理机构11403 北京风雅颂专利代理有限公司;

  • 代理人马骁;于洁

  • 地址 410003 湖南省长沙市开福区德雅路109号

  • 入库时间 2023-06-19 06:28:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-07

    授权

    授权

  • 2018-10-16

    实质审查的生效 IPC(主分类):G06F11/14 申请日:20180803

    实质审查的生效

  • 2018-09-14

    公开

    公开

说明书

技术领域

本发明涉及数据中心的数据传输领域,特别是指一种基于BCube()数据中心的数据存取方法。

背景技术

近年来,全球的数据正在以爆炸的形式增长。根据国际数据公司IDC的统计,从2010年到2020年,全球的数据体量将增加50倍,预计到达40ZB。同时,数据存储的需求正在以每年50%到62%的速度增长。这种增长对数据中心存储的可靠性提出了更高的要求。以Facebook部署的Hadoop机群为例,整个机群有3000个节点,涉及45PB的数据,平均每天有22个节点失效,而且单日最高失效节点数超过100。如何确保数据的可靠性成为了数据中心的首要问题。

BCube数据中心是微软研究人员提出的一种新的以服务器为中心的拓扑结构,通过小型交换机和服务器来递归地构建大规模数据中心网络,可以用于数据的存储,在Guo C, Lu G, Li D等人在2009年39(4)的Acm Sigcomm Computer Communication Review所发表的文献《 BCube:a high performance, server-centric network architecture for modular data centers[J]》中,详细的介绍了BCube数据中心的结构及原理。

为了提升数据存储的可靠性,目前主要通过两种机制来实现。

一种机制是副本机制,该方法通过对原文件进行复制来增加冗余度。将数据复制成多份并分散地存储在数据中心的不同位置。当一份文件损坏时,其副本可以被传回本地来代替原文件,从而保证数据存储的可靠性。例如,在HDFS(Hadoop Distributed Filesystem,Hadoop分布式文件系统)、Ceph、Swift等存储系统中,一份文件包含3个副本。理论上,只要有一个副本或者原文件存在时,数据就是可恢复的。这种方法虽然简单,但是副本会造成大量的冗余,导致大量存储空间的浪费。

另一种机制是纠删码机制,可以通过对数据的计算等处理来减少数据存储的冗余,其中比较有代表性的是Reed-Solomon(RS)编码。在RS(k,m)中,数据被划分成k个部分,然后经过处理产生m个冗余部分。只要在这k+m个数据块中存在k个数据块,那么数据就可以被恢复。相比于副本系统,纠删码机制有效地减少了数据存储的成本。例如,如果想要容忍2个失败,对于大小为D bytes的数据来说,副本的方法需要3D bytes的存储空间,而RS(4,2)编码只需要1.5D bytes。然而,RS编码的缺点是在修复过程中对流量的消耗较大。在数据中心中,由于磁盘等原因造成C bytes的数据损坏时,RS(k,m)需要k×C bytes的流量来修复,而副本的方法只需要C bytes。

目前,副本系统和纠删码系统所存在的最大问题之一是传输效率的问题。对于一个需要R副本的多副本系统来说,存储一份文件需要R次的传输。如果传输一个副本所需的时间为t,那么完成所有副本的传输需要R×t的时间。类似的,当文件需要更新时,仍需R×t的时间来完成。而对于纠删码系统,在一个(k,m)纠删码系统中,如果想要存储一份文件,需要k+m次的传输。如果数据块较大,会浪费大量的时间,而且写入这k+m个数据块也是一笔巨大的时间开销。

发明内容

有鉴于此,本发明的目的在于提出一种基于BCube()数据中心的数据存取方法。

基于上述目的本发明提供的一种基于BCube()数据中心的数据存取方法,将该方法应用于多副本系统中,在BCube()数据中心中,表示交换机的端口数,表示所述BCube()数据中心的层级,BCube()数据中心包括:作为节点的个服务器及具有个端口的个交换机;BCube()数据中心包括:个所述BCube()数据中心及具有个端口的个交换机;BCube()数据中心包括:个BCube()数据中心及具有个端口的个交换机;所述BCube()数据中心比所述BCube()数据中心多出的交换机中的第个交换机与各所述BCube()数据中心中的第个服务器连接;其中,采用数字编码的(,)来表示各服务器,所述方法包括:

确定至少一组第一节点,各组内的各所述第一节点之间在各位上的数字均不相同;

根据第二节点和各所述第一节点确定所述第二节点与各所述第一节点之间的传输路径;

将所述第二节点存储的数据分别通过各所述传输路径并行传输至各所述第一节点。

在一实施例中,所述确定至少一组第一节点,包括:

随机选择一个节点作为第1个节点;

对所述第1个节点的每个位上的数字都加设定数,得到第2个节点;

对第个节点的每个位数都加所述设定数,得到第个节点,所述第1个节点至所述第个节点构成第一组不相交节点,所述第一组不相交节点在各位上的数字互不相同,其中,,表示所述BCube数据中心的交换机的端口数;

基于所述多副本系统的副本数量从所述第一组不相交节点中选择对应数量的不相交节点作为第一组所述第一节点。

在一实施例中,当所述副本数量大于时,所述基于所述多副本系统的副本数量从所述第一组不相交节点中选择对应数量的不相交节点作为第一组所述第一节点,包括:

将所述第1个节点的最后1位加所述设定数,得到第个节点;

基于所述第个节点生成第二组不相交节点;

基于所述多副本系统的副本数量将所述第一组不相交节点中的全部不相交节点确定为第一组所述第一节点,将所述第二组不相交节点中的部分不相交节点确定为第二组所述第一节点。

在一实施例中,所述根据第二节点和所述第一节点确定传输路径,包括:

对各组中的所述第一节点进行排序,使得排序在第位的第一节点的第位数字与所述第二节点的第位数字不同;

对排序在第位的第一节点,从所述第二节点的第位数字开始变换,得到第条传输路径,所述第条传输路径用于所述第二节点和所述第位的第一节点之间的数据传输,其中,,表示所述BCube数据中心的交换机的端口数。

在一实施例中,所述方法还包括:

将所述第一节点上存储的数据通过各所述传输路径反向并行传输至各所述第二节点。

基于上述目的本发明还提供一种基于BCube()数据中心的数据存取方法,应用于纠删码系统中,在BCube()数据中心中,表示交换机的端口数,表示所述BCube()数据中心的层级,BCube()数据中心包括:作为节点的个服务器及具有个端口的个交换机;BCube()数据中心包括:个所述BCube()数据中心及具有个端口的个交换机;BCube()数据中心包括:个BCube()数据中心及具有个端口的个交换机;BCube()数据中心比所述BCube()数据中心多出的交换机中的第个交换机与各所述BCube()数据中心中的第个服务器连接;其中,采用数字编码的(,)来表示各服务器,所述方法包括:

确定一组第一节点,组内的多个所述第一节点之间在各位上的数字均不相同,基于所述第一节点确定多组第三节点,每组内的各第三节点之间在各位上的数字至少有两位不相同;

根据各组所述第三节点中位于相同位置的任一第一选定节点和第二节点确定第一传输路径,所述第一选定节点之间在各位上的数字均不相同,并根据所述第三节点中除所述第一选定节点之外的、位于相同位置的任一第二选定节点和所述第二节点确定第二传输路径,所述第二选定节点之间在各位上的数字均不相同;

将所述第一选定节点存储的数据通过所述第一传输路径传输至所述第二节点,将各组内所述第三节点中除所述第一选定节点和所述第二选定节点以外的节点存储的数据通过所述第二传输路径传输至所述第二节点。

在一实施例中,所述确定一组第一节点,组内的多个所述第一节点之间在各位上的数字均不相同,基于所述第一节点确定多组第三节点,各组内第三节点之间在各位上的数字至少有两位不相同,包括:

随机选择一个节点作为第1个节点;

对所述第1个节点的每个位上的数字都加设定数,得到第2个节点;

对第个节点的每个位数都加所述设定数,得到第个节点,所述第1个节点至所述第个节点构成第1组所述第一节点,所述不相交节点在各位上的数字互不相同,其中,,表示所述BCube数据中心的交换机的端口数;

将各所述第一节点分别作为组第三节点中的第1个节点,保持各组的第1个节点的第1位数字不变,将其他位数字加上设定数,得第个节点,所述第1个节点至所述第个节点为一组,共得到组第三节点,每组第三节点中包括1个第一节点。

在一实施例中,根据各组所述第三节点中位于相同位置的任一第一选定节点和第二节点确定第一传输路径,并根据所述第三节点中除所述第一选定节点之外的、位于相同位置的任一第二选定节点和所述第二节点确定第二传输路径,包括:

从各组所述第三节点中选择位于相同位置的任一节点作为第一选定节点;

确定从所述第一选定节点至所述第二节点的第一传输路径;

从各组所述第三节点中除所述第一选定节点以外的节点中,选择位于相同位置的任一节点作为第二选定节点;确定所述第三节点中除所述第一选定节点和所述第二选定节点以外的其他节点至所述第二选定节点的中转传输路径;

确定从所述第二选定节点至所述第二节点的第二传输路径。

在一实施例中,所述将所述第三节点存储的数据通过所述第二传输路径传输至所述第二节点,包括:

将所述第三节点中除所述第一选定节点和所述第二选定节点以外的其他节点的数据,通过所述中转传输路径传输至所述第二选定节点进行聚合;

将聚合后的数据通过所述第二传输路径传输至所述第二节点。

在一实施例中,根据各组所述第三节点中位于相同位置的任一第一选定节点和第二节点确定第一传输路径,并根据所述第三节点中除所述第一选定节点之外的、位于相同位置的任一第二选定节点和所述第二节点确定第二传输路径,还包括:

当所述第三节点中除所述第一选定节点和所述第二选定节点以外的其他节点出现故障时,将出现故障的组中的第一节点代替所述出现故障的节点,确定中转传输路径;

将空闲的一组第三节点中的第一节点代替所述出现故障的组中的第一节点,确定第一传输路径。

从上面所述可以看出,本发明提供的基于BCube()数据中心的数据存取方法,通过确定不相交节点,进而确定不相交节点与目的节点之间的传输路径,能够实现数据的并行传输,极大地提升了多副本系统存储和更新的效率,也解决了纠删码系统在现有技术中一次将所有数据块传输到目的节点所造成的在目标节点上的网络拥塞。

附图说明

图1A为本发明实施例示出的一种基于BCube()数据中心的数据存取方法的流程图;

图1B为本发明实施例示出的一种BCube()网络结构的示意图;

图2为本发明实施例示出的确定第一节点的方法的流程图;

图3A为本发明实施例示出的确定传输路径的方法的流程图;

图3B为本发明实施例示出的BCube()网络结构中确定传输路径的示意图;

图4A为本发明实施例示出的传输次数对比示意图;

图4B为本发明实施例示出的在不同维度BCube()网络中的对比示意图;

图4C为本发明实施例示出的传输次数减少百分比的效果示意图;

图5A为本发明实施例示出的另一种基于BCube()数据中心的数据存取方法的流程图;

图5B为本发明实施例示出的三种方法的对比示意图;

图6为本发明实施例示出的确定第一节点和第三节点的方法的流程图;

图7A为本发明实施例示出的确定第一传输路径和第二传输路径的方法的流程图;

图7B为本发明实施例示出的传输RS编码的示意图;

图7C为本发明实施例示出的另一传输RS编码的示意图;

图8为本发明实施例示出的传输次数的对比示意图;

图9为本发明实施例示出的传输效率的对比示意图;

图10为本发明实施例示出的另一传输效率的对比示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

图1A是本发明实施例示出的一种基于BCube()数据中心的数据存取方法的流程图,该基于BCube()数据中心的数据存取方法可以基于BCube()数据中心的网络应用在多副本系统中。

其中,对于BCube()数据中心表示交换机的端口数,表示BCube网络结构的层级,BCube()为BCube网络的基本单元,由个服务器和具有个端口的一个(个)小型交换机组成。BCube()是由个BCube0和具有个端口的个小型交换机组成。BCube()是个BCube()和个具有个端口的小型交换机之间的互连。BCube()数据中心比BCube()数据中心多出的交换机中的第个交换机与各BCube()数据中心中的第个服务器连接;其中,采用数字编码的(,)来表示各服务器,服务器包括+1个端口,编号从0到。其中,BCube()网络中的交换机仅仅和服务器相连,在交换机和交换机或者服务器和服务器之间没有直接连接。例如,如图1B所示的BCube(4,1)结构中,共有16个服务器和8个交换机。

如图1A所示,该基于BCube()数据中心的数据存取方法可以包括以下步骤101-103:

步骤101、确定至少一组第一节点,各个组内的第一节点之间在各位上的数字均不相同。

本实施例中,将服务器作为节点,当第一节点为目的节点,第二节点为源节点时,可以将第二节点上的数据传输到第一节点上,使得该数据在第一节点上存储为副本。这种情况下,第二节点是确定的,需要确定的是将副本存储在哪些第一节点上。

本公开实施例中,对应的各位上的数字都不相同的节点互为不相交节点。可以这样表示:如果节点和在对应位置上的数字互不相同,即(,),那么将节点和定义为互为不相交节点。

以BCube(4,1)网络为例,服务器21和03在各位上的数字均不相同,互为不相交节点,因为2不等于0,而且1不等于3。类似地,服务器00、11、22和33也为一组不相交节点。但是服务器12和22不是不相交节点,因为第二位数字都是2。

对于具有个服务器和+1层交换机,每一层都有个具有端口的交换机的BCube(,)网络而言,每一组最多可以有个不相交节点。例如对于BCube(4,2)网络,每组最多可以有4个不相交节点。

本实施例分析如下:对于节点,每位数字都有种选择,即从0到-1,而且不同位上的数字和之间是互不影响的。因此,如果不同节点的第位数字的取值均不相等,那么最多可以有种可能,这就意味着每组最多可以有个不相交节点。

步骤102、根据第二节点和第一节点确定从第二节点到各第一节点的传输路径。

步骤103、将第二节点存储的数据通过确定的各传输路径并行传输至第一节点。

在另一实施例中,在数据需要更新的情况下,将源节点的数据重新传输至各目的节点进行存储更新即可。

在另一实施例中,如果源节点需要读取目的节点的数据,则将目的节点的数据根据传输路径反向传输至源节点即可。这种情况下第一节点作为源节点,第二节点作为目的节点。

本实施例提供的方法通过将各位上的数字均不相同的节点确定为用于存储副本的节点,使得在数据中心中多副本的并行传输成为可能,极大地提升了多副本系统存储和更新的效率,尤其适用于需要频繁存储大量数据的数据中心。此外,副本不需要在某一个固定的节点进行读取,而且并行传输方式可以在数据中心的任何节点上进行,满足了数据中心的现实需要。

图2是根据一示例性实施例示出的确定第一节点的方法的流程图;本实施例利用本公开实施例提供的上述方法,以如何确定第一节点为例进行示例性说明,如图2所示,包括如下步骤201-204:

步骤201、随机选择一个节点作为第1个节点。

步骤202、对第1个节点的每个位上的数字都加设定数,得到第2个节点。

为了便于后续步骤中的计算,本实施例中该设定数可以为1。

步骤203、对第个节点的每个位数都加设定数,得到第个节点,其中,。

那么从第1个节点到第个节点构成一组不相交节点。

步骤204、基于多副本系统的副本数量,即需要存储的副本个数从该组不相交节点中选择对应数量的不相交节点作为第一组第一节点。

举例而言,对于BCube(4,2)网络,例如第二节点为230,通过步骤201随机得到第1个节点121,然后对121的每一位数字都加1,得到第2个节点232,并依次得到第3个节点303,和第4个节点010,也就是说得到第1组不相交节点(121,232,303,010)。如果应用于3副本系统,那么从该组不相交节点中任选三个不相交节点即可作为第1组第一节点,即目的节点。但是如果副本数量大于,即大于每组不相交节点的最多数量,例如应用于5副本系统甚至6副本系统,则分别需要5个和6个不相交节点,这种情况下,可以将通过上述步骤201得到的第1个节点121的最后一位加1,得到122,然后通过上述步骤202-203再得到第2组不相交节点(122,233,300,011),然后从该两组不相交节点中任选5个或6个节点作为第一节点即可。由于一次可以传输个+1节点,对于BCube(4,2)网络而言+1=3,因而,例如对于5副本系统,可以在第1组不相交节点中选择3个节点作为一组第一节点,并在第2组不相交节点中选择2个节点来作为另一组第一节点,通过两次传输来完成数据存储。

上述步骤201-204可以通过下述MATLAB语言来实现:

1: randnode = randi([0, n^b], 1, 1);

2: node(1, :) = bcube(randnode, :);

3: % The variable bcube is the BCube address matrix of nb+1 rows and b + 1 columns.

4: for i = 2 : n

5: for j = 1 : b + 1

6: node(i, j) = mod(node(i − 1, j) + 1, n);

7: end

8: end

9: return node

本实施例中,每组可以选择+1个不相交节点来存储副本。如果一组不相交节点不够,可以再选择另一组的+1个不相交节点来存储数据。这样,完成这些节点的副本写入存储或更新所需的步骤是step=ceil(R/(+1))。多副本系统的副本数量通常不会太多,否则就会占用大量的存储空间,所以通常可以在1到2个步骤内完成所有副本的传输,不仅节省了传输副本的时间,而且提高了副本系统存储和更新的效率。

图3A是根据一示例性实施例示出的确定传输路径的方法的流程图;本实施例利用本公开实施例提供的上述方法,以如何确定传输路径为例并结合图3B进行示例性说明,如图3A所示,包括如下步骤301-303:

步骤301、对各组中的第一节点分别进行排序,使得排序在第位的第一节点的第位数字与第二节点的第位数字不同。

也就是说,假设第一节点有位,排序之后,位于排序第1位的第一节点的第1位数字不能与第二节点的第1位数字相同,位于排序第2位的第一节点的第2位数字不能与第二节点的第2位数字相同,位于排序第位的第一节点的第位数字不能与第二节点的第位数字相同,以此类推。

例如,根据步骤201-204,基于任意选择的第1个节点010确定的一组不相交节点为(010、121、232和303),如果应用于3副本系统,那么可以选择目的节点(即第一节点)为(121、232和303),排序后的目的节点为(121、303和232),如此可以保证,位于排序第1位的节点121的第1位数字为1,不同于源节点310的第1位数字3,位于排序第2位的节点303的第2位数字为0,不同于源节点310的第2位数字1,位于排序第3位的节点232的第3位数字为2,不同于源节点310的第3位数字0。

通过上述步骤,能够保证每条传输路径都通过不同层级的交换机进行传输,也就是说传输路径不会出现重复,除了目的节点,每条传输路径上的中间节点都不会相同。

步骤302、对排序在第位的第一节点,从第二节点的第位数字开始变换,得到第条传输路径,第条传输路径用于第二节点和所述第位的第一节点之间的数据传输。

本公开步骤中详细说明如下:

对于排序第1位的第一节点,即目的节点,从第二节点即源节点的第1位数字开始变换;

对于排序第位的目的节点,从源节点的第位数字开始变换。

举例而言,仍以上述示例进行说明:

从源节点310到目的节点121:310,110,120,121。即排序第1位的目的节点,从源节点的第1位数字开始变换,也就是说,该传输路径为从节点310传输至节点110,再传输至节点120,再传输至节点121。

从源节点310到目的节点303:310,300,303。即排序第2位的目的节点,从源节点的第2位数字开始变换,也就是说,该传输路径为从节点310传输至节点300,再传输至节点303。

从源节点310到目的节点232:310,312,212,232。即排序第3位的目的节点,从源节点的第3位数字开始变换,也就是说,该传输路径为从节点310传输至节点312,再传输至节点212,再传输至节点232。

在另一个示例中,对于BCube(8,3)网络,应用于3副本系统的情形,假设源节点为0042,通过步骤301所确定的一组不相交节点为(1132,2243,3354,4465,5576,6607,7710,0021),选择其中任意3个不相交节点作为目的节点,并对目的节点进行排序,得到(1132,2243,3354),然后,确定从源节点至各个目的节点的路径,可以看出其数字变换的过程如下:

从源节点0042到目的节点1132:0042,1042,1142,1132;即排序第1位的目的节点,从源节点的第1位数字开始变换,也就是说,该传输路径为从节点0042传输至节点1042,再传输至节点1142,再传输至节点1132;

从源节点0042到目的节点2243:0042,0242,0243,2243;即排序第2位的目的节点,从源节点的第2位数字开始变换,也就是说,该传输路径为从节点0042传输至节点0242,再传输至节点0243,再传输至节点2243;

从源节点0042到目的节点3354:0042,0052,0054,3054,3354;即排序第3位的目的节点,从源节点的第3位数字开始变换,也就是说,该传输路径为从节点0042传输至节点0052,再传输至0054,再传输至3054,再传输至3354。

从而得到从源节点至各个目的节点的传输路径。

通过上述分析可知:任何一个不相交节点上的数据最多通过个节点就能够传输到任何目的节点。因为每个不相交节点使用不同的链路来传输数据,从源节点到目的节点,最多需要更改+1位数字,因此最多通过个节点就能够传输到任何目的节点。

在现有技术的BCube数据中心中,海量数据分布在不同的服务器上,而且在不同服务器上进行频繁地计算,能够在本地存储而又恰好在本地进行处理的数据非常少量,因此,现有技术中的方法例如HDFS不仅效率低下,而且浪费存储空间。本发明实施例中,把副本存储在不相交节点上。这样,如果需要在一个BCube()网络中读取一个副本,那么通过上述分析可知:传输这个副本最多经过个节点,与传统方法相比不会带来更多的消耗。此外,如果要存储副本或者更新文件,对于一个需要个R副本的多副本系统,当的时候,由于一次传输最多可以传输+1个节点,因而只需要一步传输即可实现。例如对于BCube数据中心,通常都会有4层以上的结构,也就是说b≥3,这就意味着一次至少可以传输4个副本,因而对于3副本系统来说完全足够。再者,当需要校验副本是否正确时,可以从多个存储节点同时传回多个副本,从而节省了传输时间,这是现有技术中的HDFS无法实现的。

该过程可以通过下述MATLAB语言来实现:

1: % Compare each digit between the source nodes and the destination node, then sort them.

2: num = 1;

3: for j = 1 : b + 1

4: for i = 1 : b + 1

5: if node(i, j) = dst(1, j)

6: nodetemp(num, :) = node(i, :);

7: node(i, :) = dst(1, :);

8: num = num + 1;

9: break;

10:end

11:end

12: end

13: % select path

14: for j = 1 : b + 1

15: dsttemp = dst(1, :);

16: for i = 1 : b + 1

17: if i + j − 1 <= b + 1

18: dsttemp(1, i + j − 1) = nodetemp(j, i + j − 1);

19: else

20: dsttemp(1, i+j −1−b−1) = nodetemp(j, i+j −1 − b − 1);

21: end

22: pathtemp(i, :) = dsttemp(1, :);

23: end

24: path((b + 2)* (j − 1) + 1 : (b + 2) *(j − 1) + 4, :) =pathtemp(end : −1 : 1, :);

25: path((b + 2)* (j − 1) + 5, :) = dst(1, :);

26: end

27: return path

本实施例中,任何+1()个不相交节点上存储的数据(数据块)都可以通过+1条路径并行地传输到任何一个节点,并且每次传输都可以有+1条并行路径进行传输,层数越大,并行路径+1越多。同样任何一个节点上的数据块都可以+1条路径并行的传输到+1个不相交节点上。

为了更好的说明本实施例提供的方法进行传输数据不会发生拥堵,结合图3B进行举例,对于源节点21,按照现有技术中的方法,选择两个存储节点为节点00和01,首先确定源节点21到节点00的路径,为从节点21到节点01到节点00,从节点21到节点01的路径,使用的交换机是<1,1>,从节点01到节点00的路径,使用的交换机是<0,0>;而从源节点21到节点01的路径,使用的交换机是<1,1>,那么由于这两条路径都经过交换机<1,1>,因而会发生拥堵。

按照本发明实施例提供的方法,对于源节点21,选择不相交节点 01和12作为目的节点。首先对目的节点进行排序,顺序为节点01,节点12。然后,确定路径,从节点21到节点01的路径,使用的交换机是<1,1>;从节点21到节点22再到节点12的路径,使用的交换机是<0,2>和<1,2>,可以看出这两条路径没有使用到相同的交换机,因而不会发生拥堵,实现多条路径的高效并行传输。

在多副本系统中,如果想要存储副本,现有技术中的方法需要分别将副本从源节点传输到各个目的节点。尽管现有技术中优化的HDFS方法利用了机架内带宽大于机架间带宽的这一特点,可以将两个副本保存在同一机架上,但是一旦机架发生故障,会降低数据存储的可靠性,有可能会导致2个副本的丢失。现有技术中,存储数据所需的传输次数是随副本数量线性增长的,然而本发明实施例提供的方法,传输次数随副本数量的增长是缓慢的,例如在BCube(4,3)中,每个节点连接4条链路,所以一次最多可以传输4个副本。当多副本系统的副本数量小于4的时候,利用本发明实施例提供的方法只需要一次传输就可以了,如图4A所示。从图4A中还可以看出,随着副本数量的增加,本发明实施例所带来的性能提升是越来越明显的。

图4B中比较了本发明实施例的节点不相交策略应用于BCube(4,2)网络和BCube(4,4)网络中的情形,可以看出BCube的层级越高,需要的传输次数就越少。图4C进一步地对比了本发明与现有技术的数据传输效率,与现有技术相比,不同层级的BCube网络中节点传输次数的减少通常超过一半,而且在BCube(4,4)中,传输的次数可以减少约80%。

图5A是本发明实施例示出的一种基于BCube()数据中心的数据存取方法的流程图,该基于BCube()数据中心的数据存取方法可以应用在纠删码系统中。

其中,纠删码是一种编码容错技术,其基本原理是对传输信号进行分段,然后添加一些校验块,使各段之间具有一定的相关性。即使信号的某些部分在传输过程中丢失,接收方仍然可以通过算法获得完整的信息。在数据存储方面,纠删码牺牲了一定的计算成本,以获得更多的存储空间。

对于纠删码的一种,RS(k,m)编码,其表示大小为N的数据被分为k个数据块,每个数据块大小都是N/k。根据这k个数据块可以计算出m个奇偶校验块。通过这种方式,可以将大小为N的数据分解为k+m个数据块,原始的数据可以根据其中任何k个数据块进行重建。

在现有技术一(图5B所示的传统方法)中,如图5B所示,可以同时将k个数据块传输到修复服务器。这种方式容易在修复服务器端造成拥塞,从而降低传输效率。在现有技术二(图5B所示的PPR(Partial-Parallel-Repair)机制中,通过引导数据流的走向,将RS编码的修复和重建过程划分为不同的步骤,数据块不再像现有技术一那样直接传输到修复服务器,而是在一个冲突域中只有一个数据块被传输到修复服务器。同时,其余数据块的一部分先被传输到其他存有数据块的服务器进行聚合,然后在下一个冲突域,将聚合后的数据块转移到修复服务器,并对其他数据块继续以上操作,直到完成所有的传输。然而,PPR机制并没有充分利用BCube网络拓扑的潜力,导致了多路径的浪费。虽然每个服务器都连接多条链路,但与多副本系统不同的是,纠删码系统中数据块的数量要大得多,相比之下,连接到每个节点的链路数量是有限的,这就会导致每个节点只能在一个冲突域内接收有限数量的数据块。

针对上述缺陷,为了充分利用BCube网络的以服务器为中心的拓扑结构,即服务器在其中充当网络交换机的角色,而且每个服务器都连接两个或更多的链路的多路径优势,本实施例提供了以下数据存取方法。如图5A所示,该基于BCube数据中心的数据存取方法可以包括以下步骤501-503:

步骤501、确定一组第一节点,组内的多个第一节点之间在各位上的数字均不相同,并基于第一节点确定多组第三节点,每组内的各第三节点之间在各位上的数字至少有两位不相同。

对于纠删码系统,由于有较多的数据(数据块),所以如果采用和多副本系统类似的方法,选择个不相交节点通常是不够用的,例如对于RS(12,4)编码,需要16个目的节点进行存储,而对于BCube(4,2)网络,一组只能选择4个不相交节点,因而,本实施例提出了部分不相交节点的定义,来解决不相交节点不够用的问题。需要说明的是,第一节点可以不限于一组,可以根据实际需要设置多组。

本实施例中,对应的各位上的数字至少有两位不同的节点互为部分不相交节点。可以这样表示:对于节点和,如果它们相同位置上的数字有两位及以上不同,即满足,(,),而且其余位上的数字均相同,即,(,),那么节点和定义为互为部分不相交节点。

以BCube(4,2)网络为例,节点001、012、023和030的第2位数字均不相同,第3位数字也均不相同,而第1位数字相同,是一组部分不相交节点。并且,对于一组部分不相交节点,,...,,,如果它们有位数字不同,而且其余相应位置上的数字相同,那么该组部分不相交节点和具有位数字长度的不相交节点属性相同,其中属性指的是:每一组最多可以有个不相交节点,任何个不相交节点的数据块都可以通过条链路并行地传输到任何一个节点。

可以分析如下:由于节点的位数为+1,那么当一组部分不相交节点有位相异的数字和+1-位相同的数字时,可以看做是其所在的BCube网络的拓扑维数减少,也就是说BCube()网络中的一组部分不相交节点可以看做是BCube(,-1)网络中的一组不相交节点,因此BCube()网络中的这组部分不相交节点和BCube(,-1)网络中的这组不相交节点具有相同的属性。

步骤502、根据各组第三节点中位于相同位置的任一第一选定节点和第二节点确定第一传输路径,并根据第三节点中除第一选定节点之外的、位于相同位置的任一第二选定节点和第二节点确定第二传输路径,其中,第二选定节点之间在各位上的数字均不相同,第一选定节点之间在各位上的数字也不相同,即第一选定节点构成一组不相交节点,第二选定节点构成一组不相交节点。

传输路径可包括两部分,第一部分是各组内节点中,位于相同位置的任一节点,这里称之为第一选定节点至第二节点的第一传输路径;第二部分是各组内节点中,除第一选定节点以外的位于相同位置的任一第二选定节点作为中转节点,除第一选定节点及第二选定节点之外的节点至该中转节点并至第二节点的第二传输路径。

步骤503、将第一选定节点存储的数据通过第一传输路径传输至第二节点,将各组内第三节点中除第一选定节点和第二选定节点以外的节点存储的数据通过第二传输路径传输至第二节点。

本发明实施例通过选择不相交节点及部分不相交节点作为数据传输的目的节点,优化了纠删码系统在BCube网络中的传输,单次传输的数据块不再局限于一个。通过选择不相交节点和部分不相交节点来规划多节点的并行传输,能够最大限度地利用多条传输路径,而且这些路径不会交叉,极大地提升了传输效率,解决了纠删码系统在现有技术中一次将所有数据块传输到目的节点,在目标节点上所造成的网络拥塞。对于纠删码系统的文件恢复,可以参考多副本系统中的并行传输办法,在数据块写入、更新和文件恢复时利用平行路径传输更多的数据块;对于纠删码系统的失效节点修复,可以借鉴PPR部分并行修复的方法,进一步提升节点修复的效率。

图6是根据一示例性实施例示出的确定第一节点和第三节点的方法的流程图;本实施例利用本公开实施例提供的上述方法,以如何确定第一节点及第三节点为例进行示例性说明,如图6所示,包括如下步骤601-604:

步骤601、随机选择一个节点作为第1个节点。

步骤602、对第1个节点的每个位上的数字都加1,得到第2个节点。

步骤603、对第个节点的每个位数都加1,得到第个节点,其中,。

通过该步骤,得到一组不相交节点,共包括从第1个节点到第个节点共个不相交节点。

举例而言,对于BCube(4,2)网络,例如第一节点为231,通过步骤201随机得到第1个节点000,然后基于节点000通过步骤202得到3个不相交节点,从而得到一组不相交节点(000,111,222,333),这里称为第1组不相交节点,即第一节点。

步骤604、将该组不相交节点中的每个节点分别作为组部分不相交节点中的第1个节点,保持各组第1个节点的第1位数字不变,将其他各位数字依次加1,得到组部分不相交节点,每组部分不相交节点包括个节点;这里称为组第三节点。

对于第1组不相交节点中的第1个节点000,保持第1位数字不变,对后面两位数字加1,得到其部分不相交节点011,依次类推,得到另外两个部分不相交节点022和033,从而得到第1组部分不相交节点(000,011,022,033)。这一组部分不相交节点可以看做是将BCube(4,2)网络降维之后的BCube(4,1)网络的一组不相交节点。

对于第1组不相交节点中的第2个节点111,保持第1位数字不变,对后面两位数字加1,得到其部分不相交节点122,以此类推,得到另外两个部分不相交节点133和100,从而得到第2组部分不相交节点(111,122,133,100)。

对于第1组不相交节点中的第3个节点222,保持第1位数字不变,对后面两位数字加1,得到其部分不相交节点233,以此类推,得到另外两个部分不相交节点200和211,从而得到第3组部分不相交节点(222,233,200,211)。

对于第1组不相交节点中的第4个节点333,保持第1位数字不变,对后面两位数字加1,得到其部分不相交节点300,以此类推,得到另外两个部分不相交节点311和322,从而得到第4组部分不相交节点(333,300,311,322)。通过上述方式,将可以作为存储数据的目的节点的4个不相交节点拓展到四组总共16个节点可以作为目的节点,即第三节点,需要注意的是,第三节点中包含第一节点。

为了更清晰的对比上述四组节点,将该四组节点以下述表1来示出;

表1

从上表可以看出,这四组节点,纵向来看,每组内的四个节点互为不相交节点,横向来看,每组内的四个节点互为部分不相交节点,也就是说,从一组四个不相交节点扩到了四组节点。

上述步骤601-604可以通过下述MATLAB语言来实现:

1: randnode = randi([0, n^b], 1, 1);

2: node(1, :) = bcube(randnode, :);

3: % The variable bcube is the BCube address matrix of nb+1 rows and b + 1 columns.

4: for i = 2 : n

5: for j = 1 : b + 1

6: node(i, j) = mod(node(i − 1, j) + 1, n);

7: end

8: end

9: for i = 1 : n

10:for j = 1 : n

11:node1(j + n * (i − 1), 1) = node(i, 1);

12:for j1 = 2 : b + 1

13:node1(j +n *(i−1), j1) = mod(node(i, j1)+j, n);

14:end

15:end

16: end

17: return node1

图7A是根据一示例性实施例示出的确定第一传输路径和第二传输路径的方法的流程图;本实施例利用本公开实施例提供的上述方法,以如何确定第一传输路径及第二传输路径为例并结合图7B进行示例性说明,如图7A所示,包括如下步骤701-702:

步骤701、基于第三节点中位于相同位置的任一第一选定节点和第二节点确定第一传输路径。

步骤702、根据第三节点中除第一选定节点以外的,位于相同位置的任一第二选定节点作为中转节点,确定第三节点中除第一选定节点和第二选定节点以外的其他节点至该中转节点的中转传输路径。

步骤703、确定中转节点至第二节点的第二传输路径。

结合图7B所示,对于每组部分不相交节点,即第三节点,将位于各组的第四个位置的节点,即各组的最后一个节点选为第一选定节点,第一节点至目的节点即第二节点的路径为第一传输路径,在图7B中以黑色实线进行表示;将各组位于第一个位置的节点节点作为第二选定节点,即中转节点,将中转节点至目的节点,即第二节点的传输路径作为第二传输路径。对于各组中除第一选定节点和第二选定节点以外的节点,即第二个和第三个节点,将第二个节点和第三个节点分别至中转节点的路径确定为中转传输路径。

也就是说将各组第二个节点和第三个节点的数据传输至中转节点进行聚合,然后将聚合后的数据传输至目的节点。本步骤中,各组第二个节点和第三个节点的数据传输至第一个节点进行聚合,以及各组第四个节点的数据传输至目的节点进行存储的步骤是同时进行的,在图7B中以实线表示,然后将各组第一个节点的数据传输至目的节点,在图7B中以虚线进行表示,那么实际上仅需两个步骤就可以完成纠删码系统中的数据传输。

本领域技术人员可以理解的是,图7B仅示例说明了纠删码系统中的一种数据传输,实际上,中转节点不限于各组的第一个节点,任一个位于相同位置的节点都可以作为中转节点。

在另一实施例中,如图7C所示,如果一组第三节点中有个不相交节点出现了故障,图7C中的第三组节点中的第三个节点出现了故障,不能够正常存储数据,那么可以将该组第三节点中的第一节点,即最后一个节点来代替该出现故障的节点,将该第一节点的数据传输至中转节点进行聚合,并将空闲的第四组第三节点中的第一节点的数据传输至目的节点。由于RS(12,4)编码有4个冗余的数据块,所以当有节点损坏时,本实施例通过调整传输方案,使得传输所需的步骤最小化,利用节点不相交存储策略,在BCube(4,2)中只需要2次就完成了RS(12,4)的12个数据块传输,而现有技术中的PPR机制却需要4步才能完成12个数据块的传输。

如果在确定传输路径中,存在节点已经被其他传输路径占用的情况,那么在数据变换确定传输路径时,绕过该已经被占用的节点来确定路径。例如从节点232到230,如果230已经被所确定的传输路径所占用,那么可以将路径确定为从232到233,再从233继续变换至目的节点。

图8对现有技术一(传统方法)、现有技术二(PPR)机制和本发明实施例提供的方法进行了比较,从图8中可以看出,在PPR机制已经提高了传输效率的情况下,本申请提供的方法依然可以进一步减少数据修复和重建所需的传输次数,而且与PPR机制相比,本申请提供的方法将所需的传输次数再次减少了近一半。虽然PPR机制将传输效率提高了25%以上,但与图9本发明提供的方法相比,这种效率的提升仍然是有限的。本申请提供的方法可以通过规划多个多对一传输方案来极大地减少传输的次数,并且在不同的传输方案之间没有路径的重叠。与现有技术一相比相比,本申请提供的方法在节点修复的效率方面提高了65%以上,最大效果为83%。此外,当数据块数量较少时,由于并行路径的数量是+1,所以只需要一个步骤就可以传输多个数据块,对于现有技术一的方法或PPR机制,无法实现一个步骤传输多个数据库。为了进一步证明本实施例的节点不相交存储策略相比于PPR机制所带来的性能改进,以PPR为基准比较了不同BCube网络中节点不相交策略的性能提升,结果如图10所示。与PPR机制相比,本实施例的节点不相交存储策略至少能再次提高25%以上的传输效率,最大可提升65%以上。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号