一种分布式文件系统中的存储数据修复结构及修复方法_2

文档序号:9352931阅读:来源:国知局
,则需要知道本地存储的以及从Socket中读取的编码块的编码策略,包括各个编码块对应的系数以及该如何对这些编码块进行编码;如果是参与节点,则需要知道接收到来自若干子节点的编码数据块时的编码策略,即这些编码块对应的系数以及该如何对接收到的编码块进行编码;
44)为了提高编码效率,我们对数据按块大小组织成数据队列;每编码完一块数据块,则将其放入发送队列,这样以一种流的形式来对数据进行编码,转发,数据块的大小在配置文件中配置;
5)树形修复,其具体步骤包括:
51)以网络拓扑矩阵adjMatrix,丢失编码块剩余的数据提供节点和选中的替换节点作为输入;
52)运行最大带宽路径算法,找到从数据提供节点到替换节点的各自最大带宽路径,取最大的k个数据提供节点作为修复过程中的数据提供节点,并得到一个瓶颈带宽最优值;
53)借鉴蚁群算法思想,分别找出步骤42)中选择的数据提供节点到替换节点的所有可行路径,并对这些路径上的边赋予新的权值,保存在ants矩阵中;在ants矩阵中,权值越低表示数据经由该条链路传输的代价越低;
54)以dijstra算法作为选路的基本算法,在步骤43)中获得的ants矩阵之上,初始化一棵Stenier Tree。最开始树中只包含替换节点节点。每次寻找从42)获得的数据提供节点中到Stenier Tree的最短路径,然后更新Stenier Tree,将这条路径上的链路和节点加入到Stenier Tree之中,直到数据提供节点集合中的节点都被添加到Stenier Tree之中,算法结束。
[0007]本发明在引入编码的分布式存储中,当节点失效的时候,目的节点需要从多个数据源节点来获取编码数据。由文件id标识的编码块,通过同步各个参与节点,组件一棵树形结构的修复系统,使得编码数据块能够通过中间节点进行编码,从而使得我们可以避开那些瓶颈链路的同时减少网络中的流量开销,降低数据中心的负载,增加网络的资源利用率。树形结构的修复系统由STNRP/CDTP协议模块和若干的软件模块组成。树形结构的修复系统能够在基于编码的数据修复场景下,通过构造一棵优化的Stenier Tree,并以一种管道流的形式对数据进行编码和转发,使得其在修复过程中的瓶颈带宽最优且尽可能的降低其产生的网络流量开销。
【附图说明】
[0008]图1系统场景架构图;
图2 STNRP协议模块流程图;
图3⑶TP协议模块流程图;
图4 STNR算法。
【具体实施方式】
[0009]下面结合附图对本发明进行详细说明。
[0010]图1是系统的场景图,树形修复系统采用主/从架构,有一个中心节点和若干从节点组成。每个节点都运行着本发明所设计的STNRP和CDTP协议模块以及若干软件模块。具体来说,当目的节点需要从若干数据源获取编码数据时,中心节点会运行树形修复模块来构造出一颗优化的再生树,然后将树转发给STNRP协议模块。接着STNRP协议模块同步再生树中的各个节点。接着CDTP协议模块能够负责将编码数据在中间节点上进行编码和转发,沿着再生树的结构传输至根结点。相对于忽略网络拓扑结构而直接将各个编码数据发送到目的节点,大大降低了传输的时间开销和对网络资源的占用。
[0011 ]图2是STNRP协议模块的流程图。当再生树构造完成时被转交给STNRP协议模块,STNRP协议模块则调用stnrp_dispatch()开始分发节点信息。发送完后开始执行stnrp_monitor O方法等待从节点的执行结果。在从节点则调用stnrp_rcv()函数来接收中心节点的修复结构构造消息,然后再本地构造修复结构,包括一个接收线程和一个发送线程以及一个接收队列,一个发送队列,接着建立该节点和子节点的数据流管道以及父节点的数据流管道。然后从节点调用stnrp_ack()将执行结果报告给中心节点。当中心节点收到来自从节点的反馈信息时,如果是构造失败,则开始选择是否有备用节点以替换构造失败的节点,如果有,则分发该节点信息(包括更新其子节点和其父节点等节点信息),如果没有,则标记为该编码块修复失败。如果是构造成功消息,则stnrp_monitor O查看是否收到了所有节点的反馈信息,如果没有则继续等待修复结构的建立完成,如果是,则调用stnrp_send O通知叶节点开始传输数据,启动修复过程。
[0012]图3是CDTP协议模块的流程图。从节点向其父节点发送数据传输开始消息,告诉其父节点激活接收线程,接收队列等。接着接收方首先判断自己是不是叶子节点,如果是,则根据中心节点发来的特征码,从本地读取数据然后发送给其父节点。如果不是叶子节点,则等待接收数据。当接收到编码数据时,提取其标识的特征码,根据其特征码放入相应的接收队列之中。然后调用cdtp_rcvDataO从接收队列读取数据,当接收队列的数据达到编码要求时(来自子节点的编码数据均已到达),便读取这些数据,对之进行编码,然后根据其标识的特征码放入对应的发送队列之中。接下来cdtp_sendData()会开始发送数据。如果发送队列为空则等待。如果不为空,则从发送队列一次读取一块编码数据块,根据其特征码转发至其父节点。如果节点是根结点,则将从发送队列中读取的数据直接做本地化存储。当从节点数据发送完成时,向父节点发送数据传输完成消息,同时关闭本地的发送线程,回收发送队列等资源。
[0013]图4是STNR算法。该算法以当前网络拓扑结构,丢失编码块所属的数据提供节点以及新选的替换节点为输入,输出一棵用于数据修复的Stenier Tree0算法整个过程维护一棵Stenier Tree,初始时该树中仅包含一个节点,即编码数据的目的节点。算法的第一步便是寻找数据提供节点集合到替换节点之间的最大带宽路径。一旦确定数据提供节点集合中各个节点到替换节点的最大带宽路径之后,其各自的瓶颈带宽也就确定了。接着便是从数据提供节点集合中选取々个瓶颈带宽最大的节点,作为此次数据修复中的数据提供节点。紧接着,利用网络拓扑结构的不变性,首先寻找出这i个节点到替换节点中所有链路带宽值大于所得的瓶颈带宽值的路径,并利用蚁群算法的思想,将这些链路重新赋予权值,这个时候可以得到一个简化的网络拓扑结构图,在这个图中,所有的链路都满足带宽要求,且其链路上的权值表示编码数据经由该条链路传输所能带来的开销收益。然后借鉴传统的Stenier Tree的启发式算法选择编码数据的路径,从算法中可以看到选路时主要考虑2个因素:1)链路的带权和最低,这表示其传输代价越低。2)传输路径尽可能早和多的产生交汇,这样我们就可以在中间节点对数据进行编码,从来节省编码数据的传输开销。一旦传输路径选定后就把该路径上的所有节点加入到算法维护的Stenier Tree中,直到々个节点均加入到Stenier Tree中,这时候算法结束,返回这棵Stenier Tree。
[0014]本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
【主权项】
1.一种分布式文件系统中的存储数据修复结构,所述分布式文件系统中数据存储采用主/从架构模式,并设有中心节点和从节点;其特征在于,在中心节点和从节点中都设有: 修复树生成协议模块,即STNRP:以丢失数据所属文件id作为特征码标识编码块,构建一棵Stenier Tree修复树,以支持编码数据的传输协议模块; 编码数据传输协议模块,即CDTP:对于每个特征码标识的编码块通信,根据修复树生成协议模块生成的修复树,同步各个叶子节点和中间节点,使得编码块由叶子节点同步传输到根结点,并在中间过程或者转发,或者做编码操作; 网络监测模块:负责更新网络各链路资源的使用情况,由adjMatrix矩阵来表示,以展现整个网络的拓扑结构,其权值表示链路上的负载情况; 编码模块:在中心节点该模块负责计算修复向量,从节点则负责在中间节点上对编码块的编码解码操作; 树形修复模块:负责根据网络的拓扑信息,构造出一棵修复树,然后将这颗树转发给STNRP协议模块。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1