基于有向图的数据分发方法

文档序号:7967123阅读:109来源:国知局
专利名称:基于有向图的数据分发方法
技术领域
本发明涉及一种网络信息资源共享中的数据分发方法,尤指一种基于有向 图的数据分发方法。
背景技术
数据共享和交换是信息技术的一个基本问题,而且随着互联网的飞速发 展,科技的发展、知识的积累,如何将自己拥有的大量数据、信息安全、快速 地通过互联网与他人共享、交换变得更加的复杂。例如,越来越多的图书馆需 要共享越来越多的数据;许多科研单位在产生以T为单位的海量数据后,需要 将这些数据分发到不同地区甚至国家的研究机构去分析,诸如此类的资源共享 问题迫切地需要提供一种更为安全、高效的传输服务来交换数据,同时提供更 方便和有效的资源规划服务,控制资源在共享者之间的流动。
GLOBUS软件产品提供了一种可靠文件传输(Reliable File Transfer,简称 RFT)月艮务,它是一种与开放网格服务架构(Open Grid Services Infrastructure, OGSI)兼容的网格服务,它能够控制数据在两个采用网格文件传输协议(Grid File Transfer Protocol ,GridFTP)的服务器之间传输。RFT服务将数据传输作 为作业,每个作业可以包含多个文件。
与GLOBUS软件产品提供的RFT服务类似,gLite软件产品也提供了一种 文件传输服务(File Transfer Service, FTS),并且也采用GridFTP作为传输协 议。FTS和RFT —样,都是在数据传输的源节点和目的节点之外扮演"第三方" 的角色。
RFT和FTS的缺点是只能控制两个节点之间的数据共享和交换,即所谓 的l-to-l数据共享。然而数据共享问题不仅仅是两个节点之间的共享,数据从 N个数据源节点分发到了 M个数据消费节点,即所谓的N-to-M数据共享,也 是很普遍的一种现象。对于这类问题,RFT服务和FTS都显得过于简单。
符合N-to-M数据共享、分发的系统较少,组合端点协议(Composite Endpoint Protocol, CEP)是一个通用的N-to-M数据共享通信协议,它令Sl, S2, S3,…,Sn为提供数据的节点,R1,R2,R3, ...,Rn为接收数据的节点,每个Si 提供一部分数据,数据之间可以重叠,构成线性的数据空间;每个Ri需要数 据空间中的一部分数据。CEP的解决办法分成两步首先,由CEP的应用编
程接口(API)描述传输需求,包括数据发送节点列表、数据接收节点列表,每 个发送节点能访问的数据,以及每个接收节点所需要的数据;其次,由调度器 控制节点之间的数据发送。
CEP的主要问题在于节点之间不存在结构,因此,如果A节点拥有数据 DataX,而B,C,D,E四个节点都需要数据DataX的话,那么DataX就要从A 节点分别传输到B, C, D, E节点,显然A节点的负载较高。
网格工作流技术是另一种用于数据分发的技术。网格工作流系统如 DAGMan, GridFlow, GrADS, Gridbus workflow, Taverna, Pegasus等均是采用有 向无环图(Directed Acyclic Graph, DAG)作为工作流建模方法,定义数据分发 作业。这些网格工作流系统使用DAG时,通常用顶点表示活动,用边表示活 动之间序列、并行和选择关系。如果将网格工作流系统应用于数据分发,那么 每项传输任务就是一个活动。对于用户而言,网格工作流系统不是以数据为中 心,而是以传输任务为中心,需要用户去定义传输任务以及它们之间的关系, 无疑这种定义方式并不直观,无法直接体现数据在节点之间的流动,而且,增 加了用户作业定义的难度。

发明内容
为了解决N-to-M数据分发的问题,本发明的主要目的是提供一种新型的 能够直观地表现数据在各个节点间流动的基于有向图的数据分发方法。
本发明的另一目的是提供一种能够检査作业合法性的基于有向图的数据 分发方法。
本发明的又一目的是提供一种能够对作业进行优化的基于有向图的数据 分发方法。
为实现上述目的,本发明采用以下技术方案 一种基于有向图的数据分发 方法,该方法包括以下步骤
第一步用有向图定义数据分发作业
a) 用有向图定义数据分发作业(Job),即Job=(N,D, T,),其中N是节点 的集合,每个节点表示一个参与数据交换的单位或软件系统;D是数据元素的 集合;T是边的集合,每条边表示一个数据传输任务,包括数据以及数据的流 向,每个传输任务T是个三元组(Src, Dest, Data),其中SrcEN,表示源节 点;DestEN,表示目的节点,Src和Dest构成有向边〈Src, Dest>, Data是D 的子集,表示本次传输的数据;
b) 将用有向图定义的数据分发作业转换成相应的作业描述文件;
第二步将作业描述文件提交给传输控制服务器,执行数据分发传输作业; 第三步传输控制服务器将执行结果通知用户。
所述第二步将作业描述文件提交给传输控制服务器,执行数据分发传输 作业具体包括以下步骤
a) 将作业描述文件提交给传输控制服务器,传输控制服务器检査作业的有 效性;
传输控制服务器接收到作业后,首先对作业进行检査,判断作业的传输任 务之间是否存在依赖关系;然后,利用拓扑排序算法判断依赖关系是否构成环 路,如果某些依赖关系构成了环路,存在环路的作业,则说明这些作业是非法 的,无法被执行;反之,如果这些依赖关系之间不存在环路,则说明这些作业 是合法的,可以被执行;
b) 消除作业中的冗余传输;
C)分解粗粒度的传输,使得每个传输任务发送更小的数据; d)执行数据传输作业。
所述步骤a)中传输任务之间依赖关系的确定方法如下
(1) 与有向图表示的数据分发作业的每条边T相对应,在依赖关系图中 增加一个相应的顶点Nt,有向图表示的数据分发作业中有多少个传输任务,就 在依赖关系图中增加多少个顶点;
(2) 对于有向图表示的数据分发作业中的任意两条边,如果任意两条边 有公共的节点,且传输的数据有部分重合,则说明这两条边表示的数据传输任 务之间存在依赖关系,其依赖关系如下令T卜(Na,Nb, Datal), T2-(Nc,Nd, Data2), Tl和T2传输的数据有部分是重合的,即Datal和Data2的交集不为 空
i )如果Nb-Nc是同一个顶点,那么T2依赖于T1,在依赖关系图中增加 一条从Nt2指向Ntl的边,即边〈Nt2, Ntl>;
ii)如果Nd-Na是同一个顶点,那么Tl依赖于T2,在依赖关系图中增 加一条从Ntl指向Nt2的边,即边〈Ntl, Nt2〉。 所述步骤b)消除作业中冗余传输的方法如下
(1) 若TxyGT是空的传输,那么从T中删除Txy ;
(2) 若Tba=(B, A, Datal) ET, Tca=(C , A, Data2) ET,且Datal和Data2 有部分重合的数据,那么保留其中一个传输,将另一个传输中重复的数据删除, 假如选择的是Tba,那么T。a不变,Tba改成(B,A,Datal-Datal门Data2);(3)重复以上操作,直到Job没有冗余的传输为止。 本发明的优点是能够直观地表示数据在各个节点间的流动;能够检査作 业的合法性;能够对作业进行优化。


图1为本发明基于有向图的数据分发工作过程流程图2为本发明基于有向图的数据分发作业实例图3为图2所示数据分发作业实例的传输依赖关系示意图。
具体实施例方式
为了实现N-to-M节点间的数据分发,并直观地表现数据在各个节点间的 流动,本发明提供的能够直观地表现数据在各个节点间流动的数据分发方法采 用有向图(Directed Graph, DG)来描述数据在各个节点间的流动。
如图l所示,本发明提供的基于有向图(Directed Graph, DG)的数据分发
方法包括以下步骤
第一步用有向图定义数据分发作业
a) 用有向图定义数据分发作业Job,即Job=(N,D,T,),其中N是节点的
集合,每个节点表示一个参与数据交换的单位或软件系统;D是数据元素的集
合;T是边的集合,每条边表示一个数据传输任务,包括数据以及数据的流向, 每个传输任务T是个三元组(Src,Dest, Data),其中SrcEN,表示源节点; DestEN,表示目的节点,Src和Dest构成有向边〈Src, Dest>, Data是D的子 集,表示本次传输的数据。
b) 将用有向图定义的数据分发作业转换成相应的作业描述文件,比如 XML文件;每个作业通常对应一个描述文件。
第二步执行作业
a) 将作业描述文件提交给传输控制服务器,传输控制服务器检査作业的有 效性。
传输控制服务器接收到作业后,首先对作业进行检査,判断作业的传输任 务之间是否存在依赖关系;然后,判断这些依赖关系是否合法,如果这些依赖 关系构成了环,存在环路的作业,则说明这些作业是非法的,无法被执行;反 之,如果这些依赖关系之间不存在环路,则说明这些作业是合法的,可以被执 行。
b) 消除作业中的冗余传输。
冗余传输会降低系统的传输效率,并带来诸如写数据冲突等一些问题,传
输控制服务器通过冗余消除技术,消除作业中的冗余传输,提高作业的整体性能。
C)分解粗粒度的传输,使得每个传输任务发送更小的数据。 传输控制服务器分解粗粒度传输任务,通过增加新的传输任务,使得每个 传输任务发送更小的数据,这样就能提高传输任务的并行度,进而改善传输效率。
d)执行传输,并进行故障处理。
传输控制服务器通过调用具体的传输服务如GridFTP,实现节点之间的数 据分发、传输。传输控制服务器在解释执行数据分发的过程中,会发现作业执 行过程中的故障,识别故障的类型并做相应的处理。具体的处理方法包括删除 传输任务,重复传输以及自动选择新的源节点继续传输等处理方式。 第三步执行结束,传输控制服务器将执行结果通知用户。 下面结合附图详细描述本发明基于有向图的数据分发方法。 如图2所示,本发明为了直观地表现数据在各个节点间的流动,采用有向 图描述作业(即数据的分发/传输),将每个作业Job定义成一个有向图,即 Job-(N,D,T,),其中N是节点的集合,每个节点表示一个参与数据交换的单 位或软件系统;D是数据元素的集合;T是边的集合,每条边表示一个数据传 输任务,包括数据以及数据的流向。图2是一个数据分发的实例,其中N^A, B, C, D, E, F, G}, D={dl, d2, d3, d4, d5}, T={T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, Tll}。每个传输任务T是个三元组(Src, Dest, Data),其中SrcEN,表 示源节点;DestEN,表示目的节点,Src和Dest构成有向边〈Src, Dest>; Data 是D的子集,表示本次传输的数据。例如,Tl= (A, B, {dl,d2})表示数据 dl,d2从源节点A被传输到目的节点B。 T3= (B, D, { di,d2, d3})表示数据 dl,d2, d3从源节点B被传输到目的节点D。
通过有向图直观、形象地描述完数据分发作业后,将生成的有向图转换成 作业描述文件如XML文件,每个Job对应一个描述文件;然后,将作业描述 文件提交给传输控制服务器,由该服务器解释执行。
传输控制服务器接收到数据分发作业描述文件后,首先对作业描述文件的 有效性进行检查,判断数据分发作业是否合法是否可执行,即通过判断作业的
传输任务之间是否存在依赖关系,以及这些依赖关系是否构成了环,如果某些 作业传输任务之间存在环路则这些作业是非法的,无法被执行;不存在环路的 作业是合法的,可以被执行。从图2中可以发现,T3依赖于T1,T7; T4依赖
于T2,T8; T5依赖于T3,T10;等等。如果把图2的所有依赖关系用图示表示 出来,那么就可以得到如图3所示的传输依赖关系图。在图3中,每个顶点对 应了图2的一条边,也就是图3的每个顶点对应了一个数据传输任务,比如 Ntl对应Tl, Nt2对应T2, Nt3对应了 T3,…;图3中的每条边表示两个传输之 间的依赖关系,比如图2中的T3依赖于T1,T7,那么相应的图3就有从Nt3 出发,分别指向了 Ntl,Nt7的两条边。从图3可以发现,T5、 TIO、 Tll互相 依赖,构成了一个循环,因此T5、 TIO、 Tll是非法的。
从用有向图表示的数据分发作业Job构造传输依赖关系图GT的方法如下
1、 对于用有向图表示的数据分发作业Job的每条边T,在GT中增加一个 相应的顶点Nt。 Job中有多少个传输任务,就在GT中增加多少个顶点。
2、 对于有向图表示的数据分发作业Job中的任意两条边例如Tl,T2,令 Tl=(Na, Nb, Datal), T2 = (Nc, Nd, Data2), Tl和T2传输的数据有部分是重合 的,也就是Datal和Data2的交集不为空,这时分两种情况考虑
a) 如果Nb-Nc是同一个顶点,那么T2依赖于T1,在GT中增加一条从 Nt2指向Ntl的边,即边〈Nt2, Ntl〉;
b) 如果Nd=Na是同一个顶点,那么T1依赖于T2,在GT中增加一条 从Ntl指向Nt2的边,即边〈Ntl, Nt2>。
有了传输依赖图之后,可以利用拓扑排序(Topological Sort)算法判断传输
依赖图中是否存在环路,如果存在环路,那么作业是非法的,不可被执行;否 则作业是合法的,可以被执行。
传输控制服务器检査完作业的有效性后,接下来的任务是消除作业中冗余 的传输。所谓冗余传输是指作业中可能存在的空的或者重复的数据传输,例如
图2中的T6并没有传输数据,那么T6就是一个空的传输;另外,如果有两个
传输向同一个顶点发送雷同的数据项,这也是冗余传输的一种。冗余传输会降
低系统的传输效率,并带来诸如写数据冲突等一些问题。因此需要消解Job中
的冗余传输,消解的方法如下
1. 若TxyGT是空的传输,那么从T中删除T、y ;
2. 若Tba=(B, A, Datal) ET, Tca=(C , A, Data2) ET,且Datal和Data2 有部分重合的数据,那么保留其中一个传输,将另一个传输中重复的数 据删除。假如选择的是Tba,那么Tea不变,Tba改成(B, A, Data 1 - Data 1 门Data2);
3. 重复以上操作,直到Job没有冗余的传输为止。
传输控制服务器检査完作业的有效性、消除作业中冗余的传输后,为了提 高数据传输效率,提高传输任务的并行度,传输控制服务器通过增加新的传输
任务分解粗粒度传输任务,使得每个传输任务发送更小的数据。例如图2中, T7依赖于T2,只有等T2执行完毕之后才能启动T7。如果把T2分解成T21=(A,
C, {(13})和T22=(A, C, {d4}),那么T7将只依赖于T21 ,只要T21执行完成, 此时不管T22的执行状态如何,T7都可以启动。同样的T3可以分解成T31气B,
D, {dl}^BT32={B,D,{d2,d3}}。通过这样的步骤,将大的传输分解成小的传 输,使得每个传输任务都传送更小的数据,这样就能提高整个作业所有传输任 务之间的并行度,减少传输任务的等待时间,进而縮短整个作业的总执行时间, 提高系统的处理效率。
通过以上步骤之后,传输控制服务器开始真正执行传输任务。传输控制服 务器通过触发具体的传输服务如GridFTP,实现节点之间的数据交换,这个过 程类似RFT或者FTS的做法。
在数据传输的过程中间,某个传输任务可能发生故障,导致该传输失败。 这时,传输控制服务器可以发现作业执行过程中的故障,识别故障的类型并做 相应的处理。具体的处理方法包括删除传输任务,重复传输以及自动选择新的 源节点继续传输等处理方式。无论是哪种处理方式,其最终的目标是保证原目 的节点能够获取所需的数据。在这三种处理方式中,重定向相对复杂。假设图 2的T8失败了,那么在T8执行失败后,按照重定向的做法,将需要从其他节 点获取数据。从图2中可以直观的看出,不能选择D作为新的数据源,因为选 择D很可能会重复失败;也不能选择E作为数据源,因为T4依赖于T8,在 T8没有完成的时候,E是不会有数据的,而且倘若选择E,那么T4和这个新 的传输将构成环路。A或B是可以作为数据源的,并且此时A和B应该有数 据;F也可以作为数据源,尽管此时F可能还没有数据。
与其它产品在N-to-M数据分发过程的设计实现相比,本发明提供的数据 交换方法具有以下一些特点
1、用有向图的形式描述一个数据分发作业,每个节点表示一个参与数据 交换的单位或软件系统,每条边表示一个数据传输任务(如图2所示)。而网 格工作流系统使用DAG时,通常用顶点表示活动,用边表示活动之间序列、 并行和选择关系。对于用户而言,网格工作流系统不是以数据为中心,而是以 传输任务为中心,需要用户去定义传输任务以及它们之间的关系,无疑这种定 义方式并不直观,无法直接体现数据在节点之间的流动,增加了作业定义的难度。本发明采用有向图描述数据分发作业,能够直接描述数据在节点之间的流 动,因而在描述作业的时候显得十分直观、方便。
2、 能够检査作业的合法性,尤其是能够方便的判断传输之间的数据依赖。
3、 能够消除冗余的传输任务,去掉不必要的传输,节约作业的处理时间; 能够分解大传输任务,提高并行度,从而提高了作业的整体性能。
4、 支持自动故障处理,传输失败后能输失败后可以采用重传、重定向机 制,提高传输可靠性。
5、 可以绑定到不同的底层传输协议,实现第三方控制。
权利要求
1、一种基于有向图的数据分发方法,该方法包括以下步骤第一步用有向图定义数据分发作业a)用有向图定义数据分发作业(Job),即Job=(N,D,T,),其中N是节点的集合,每个节点表示一个参与数据交换的单位或软件系统;D是数据元素的集合;T是边的集合,每条边表示一个数据传输任务,包括数据以及数据的流向,每个传输任务T是个三元组(Src,Dest,Data),其中Src∈N,表示源节点;Dest∈N,表示目的节点,Src和Dest构成有向边<Src,Dest>,Data是D的子集,表示本次传输的数据;b)将用有向图定义的数据分发作业转换成相应的作业描述文件;第二步将作业描述文件提交给传输控制服务器,执行数据分发传输作业;第三步传输控制服务器将执行结果通知用户。
2、 根据权利要求1所述的基于有向图的数据分发方法,其特征在于所 述第二步将作业描述文件提交给传输控制服务器,执行数据分发传输作业具 体包括以下步骤a) 将作业描述文件提交给传输控制服务器,传输控制服务器检査作业的有 效性;传输控制服务器接收到作业后,首先对作业进行检査,判断作业的传输任 务之间是否存在依赖关系;然后,利用拓扑排序算法判断依赖关系是否构成环 路,如果某些依赖关系构成了环路,存在环路的作业,则说明这些作业是非法 的,无法被执行;反之,如果这些依赖关系之间不存在环路,则说明这些作业 是合法的,可以被执行;b) 消除作业中的冗余传输;c) 分解粗粒度的传输,使得每个传输任务发送更小的数据;d) 执行数据传输作业。
3、 根据权利要求2所述的基于有向图的数据分发方法,其特征在于所 述步骤a)中传输任务之间依赖关系的确定方法如下(1) 与有向图表示的数据分发作业的每条边T相对应,在依赖关系图中 增加一个相应的顶点Nt,有向图表示的数据分发作业中有多少个传输任务,就 在依赖关系图中增加多少个顶点;(2) 对于有向图表示的数据分发作业中的任意两条边,如果任意两条边有公共的节点,且传输的数据有部分重合,则说明这两条边表示的数据传输任 务之间存在依赖关系,其依赖关系如下令Tl=(Na,Nb, Datal), T2 = (Nc, Nd, Data2), Tl和T2传输的数据有部分是重合的,即Datal和Data2的交集不为 空i )如果Nb=Nc是同一个顶点,那么T2依赖于T1,在依赖关系图中增 加一条从Nt2指向Ntl的边,即边〈Nt2, Ntl〉;ii)如果Nd=Na是同一个顶点,那么Tl依赖于T2,在依赖关系图中 增加一条从Ntl指向Nt2的边,即边〈Ntl, Nt2>。 4、根据权利要求2所述的基于有向图的数据分发方法,其特征在于所 述步骤b)消除作业中冗余传输的方法如下(1) 若TxyET是空的传输,那么从T中删除Txy ;(2) 若Tba=(B, A, Datal)臼T, Tca=(C , A, Data2) eT,且Datal和Data2 有部分重合的数据,那么保留其中一个传输,将另一个传输中重复的数据删除, 假如选择的是Tba,那么Tca不变,Tba改成(B,A,Datal-Datal f!Data2);(3) 重复以上操作,直到Job没有冗余的传输为止。
全文摘要
本发明公开了一种基于有向图的数据分发方法,该方法包括以下步骤A.用有向图定义数据分发作业,将数据分发作业Job定义成有向图定义,即Job=(N,D,T,),其中N是节点的集合,每个节点表示一个参与数据交换的单位或软件系统;D是数据元素的集合;T是边的集合,每条边表示一个数据传输任务,包括数据以及数据的流向,每个传输任务T是个三元组(Src,Dest,Data),其中Src∈N,表示源节点;Dest∈N,表示目的节点,Src和Dest构成有向边<Src,
文档编号H04L12/58GK101179516SQ20061011449
公开日2008年5月14日 申请日期2006年11月10日 优先权日2006年11月10日
发明者刘旭东, 林学练, 王丽凤 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1