一种用于分布式环境下的数据传输方法技术

技术编号:18735382 阅读:27 留言:0更新日期:2018-08-22 04:21
本发明专利技术涉及一种用于分布式环境下的数据传输方法,属于分布式环境下的数据传输领域。本发明专利技术通过获取当前节点的前驱节点数和后继节点数决定执行不同的传输策略。本发明专利技术定义了分布式环境中节点间的数据传输关系,这样有助于减少当前节点传输的不确定性;其次,所有节点之间传输模式都采用混合推拉的模式,每个节点根据实际情况来进行混合推拉并行传输,这样可以减少数据的传输时间,提高整体的传输效率。

【技术实现步骤摘要】
一种用于分布式环境下的数据传输方法
本专利技术涉及一种用于分布式环境下的数据传输方法,属于分布式环境下的数据传输领域。
技术介绍
随计算机网络技术和信息处理技术的不断发展和完善,用户对信息处理的需求也在不断加强。在分布式环境中,许多系统要求各站点具有高度自治性,但同时也经常进行必要的数据传输。而目前最常用的数据传输模式即为推拉模式。推、拉模式由生产者、消费者、目录服务三部分组成。生产者收集监控资源的状态信息,消费者利用这些状态信息。目录服务负责定位消费者和生产者,辅助双方互相通信。在消费者与生产者有推的模式、拉的模式两种基本的通信方式。在分布式环境下,现有方法只考虑了文件之类的传输从源节点到目的节点之间做多路径并行传输,并没有通过混合推拉应用到整体节点去做数据传输,比如说一对多,多对多情况的数据传输下。
技术实现思路
针对现有技术存在的不足,本专利技术提供了一种用于分布式环境下的数据传输方法,。本专利技术的技术方案是:一种用于分布式环境下的数据传输方法,所述方法的具体步骤如下:S1、首先获取当前节点的前驱节点数PreNum和后继节点数SubNum:将分布式环境下节点拓扑结构由有向图组成,通过有向图的邻接矩阵来存储分布式节点拓扑结构图,根据当前节点Vcurrent∈V找到其在邻接矩阵中对应的列,查找值为1对应的行名即为Vcurrent的前驱节点;根据当前节点Vcurrent找到其在邻接矩阵中对应的行,查找值为1对应的列名即为Vcurrent的后继节点;最后获得的前驱节点数PreNum即为前驱节点集合Vpre中元素的个数,获得后继节点数SubNum即为后继节点集合Vnext中元素的个数;其中,V代表图中顶点的非空有限集合,0表示两个相邻节点没有传输关系,1表示两个相邻节点有传输关系;S2、如果PreNum=0并且SubNum≥1时,执行步骤S2.0;S2.0、初始化i=1,j=1,保持Vcurrent上一次推送的数据:c_now=0.0;S2.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S2.2;S2.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S2.3;否则,执行S2.8;S2.3、判断i≤SubNum:如果是,执行S2.4;否则,执行S2.12;S2.4、并行获取Vcurrent的Vnext_i的拉请求reqFlag;执行S2.5;S2.5、判断Vnext_i的reqFlag=“pull”:如果是,执行S2.6;否则,执行S2.7;S2.6、Datacurrent被Vnext_i拉取,i++,执行S2.3;S2.7、Vcurrent将Datacurrent向Vnext_i进行推送;i++;执行S2.3;S2.8、判断j≤SubNum:如果是,执行S2.9;否则,执行S2.12;S2.9、并行获取Vcurrent的Vnext_j的拉请求reqFlag;执行S2.10;S2.10、判断Vnext_j的reqFlag=“pull”:如果是,执行S2.11;否则,j++,执行S2.8;S2.11、Datacurrent被Vnext_j拉取;j++;执行S2.8;S2.12、c_now=Datacurrent;结束;其中,Vcurrent表示当前节点,Vpre代表Vcurrent的前驱节点集合,Vnext代表Vcurrent的后继节点集合;Vpre集合中的元素:Vpre={Vpre_t|Vpre_t∈V},t=1,2,…,PreNum;Vnext集合中的元素:Vnext={Vnext_s|Vnext_s∈V},s=1,2,…,SubNum;前驱节点数PreNum即为前驱节点集合Vpre中元素的个数;后继节点数SubNum即为后继节点集合Vnext中元素的个数;exist表示数据就绪标记;reqFlag表示监听拉请求标记,Datacurrent表示Vcurrent获取的当前数据;S3、如果PreNum≥1并且SubNum≥1时,执行步骤S3.0;S3.0、初始化p=1,k=1,m=1,n=1;保持Vcurrent上一次推送的数据:c_now=0.0;S3.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S3.2;S3.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S3.3;否则,执行S3.12;S3.3、判断p≤PreNum;如果是,执行S3.4;否则,执行S3.7;S3.4、判断Vpre_p的recFlag=0:如果是,执行S3.5;否则,执行S3.6;S3.5、向Vpre_p发送“pull”请求拉取数据,将拉取Vpre_p本身的数据存入receivePullDataList,Vpre_p的recFlag=1,p++;执行S3.3;S3.6、将Vpre_p接收到的数据存入receivePushDataList;p++;执行S3.3;S3.7、判断m≤SubNum:如果是,执行S3.8;否则,执行S3.21;S3.8、并行获取Vcurrent的Vnext_m的拉请求reqFlag,执行S3.9;S3.9、判断Vnext_m的reqFlag=“pull”:如果是,执行S3.10;否则,执行S3.11;S3.10、Datacurrent和receivePullDataList集合以及receivePushDataList集合的数据同时被Vnext_m拉取;m++;执行S3.7;S3.11、Vcurrent将Datacurrent和receivePullDataList集合以及receivePushDataList集合中的数据同时推送到Vnext_m;m++;执行S3.7;S3.12、判断k≤PreNum:如果是,执行S3.13;否则,执行S3.16;S3.13、判断Vpre_k的recFlag=0:如果是,执行S3.14;否则,执行S3.15;S3.14、向Vpre_k发送“pull”请求拉取数据;将拉取Vpre_k的数据存入receivePullDataList;Vpre_k的recFlag=1;k++;执行S3.12;S3.15、将接收到Vpre_k的数据存入receivePushDataList;k++;执行S3.12;S3.16、判断n≤SubNum:如果是,执行S3.17;否则,执行S3.22;S3.17、并行获取Vcurrent的Vnext_n的拉请求reqFlag;执行S3.18;S3.18、Vnext_n的reqFlag=“pull”:如果是,执行S3.19;否则,执行S3.20;S3.19、receivePullDataList集合以及receivePushDataList中的数据被Vnext_n拉取;n++;执行S3.16;S3.20、Vcurrent将receivePullDataList集合以及receivePushDataList中的数据推送到Vnext_n;n++;执行S3.16;S3.21、c_now=Datacurrent;执行S3.22;S.22、清空两个集合中的数据以及Datacurrent;执行S.23;S.23、结束;其中,re本文档来自技高网...

【技术保护点】
1.一种用于分布式环境下的数据传输方法,其特征在于:所述方法的具体步骤如下:S1、首先获取当前节点的前驱节点数PreNum和后继节点数SubNum:将分布式环境下节点拓扑结构由有向图组成,通过有向图的邻接矩阵来存储分布式节点拓扑结构图,根据当前节点Vcurrent∈V找到其在邻接矩阵中对应的列,查找值为1对应的行名即为Vcurrent的前驱节点;根据当前节点Vcurrent找到其在邻接矩阵中对应的行,查找值为1对应的列名即为Vcurrent的后继节点;最后获得的前驱节点数PreNum即为前驱节点集合Vpre中元素的个数,获得后继节点数SubNum即为后继节点集合Vnext中元素的个数;其中,V代表图中顶点的非空有限集合,0表示两个相邻节点没有传输关系,1表示两个相邻节点有传输关系;S2、如果PreNum=0并且SubNum≥1时,执行步骤S2.0;S2.0、初始化i=1,j=1,保持Vcurrent上一次推送的数据:c_now=0.0;S2.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S2.2;S2.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S2.3;否则,执行S2.8;S2.3、判断i≤SubNum:如果是,执行S2.4;否则,执行S2.12;S2.4、并行获取Vcurrent的Vnext_i的拉请求reqFlag;执行S2.5;S2.5、判断Vnext_i的reqFlag=“pull”:如果是,执行S2.6;否则,执行S2.7;S2.6、Datacurrent被Vnext_i拉取,i++,执行S2.3;S2.7、Vcurrent将Datacurrent向Vnext_i进行推送;i++;执行S2.3;S2.8、判断j≤SubNum:如果是,执行S2.9;否则,执行S2.12;S2.9、并行获取Vcurrent的Vnext_j的拉请求reqFlag;执行S2.10;S2.10、判断Vnext_j的reqFlag=“pull”:如果是,执行S2.11;否则,j++,执行S2.8;S2.11、Datacurrent被Vnext_j拉取;j++;执行S2.8;S2.12、c_now=Datacurrent;结束;其中,Vcurrent表示当前节点,Vpre代表Vcurrent的前驱节点集合,Vnext代表Vcurrent的后继节点集合;Vpre集合中的元素:Vpre={Vpre_t|Vpre_t∈V},t=1,2,…,PreNum;Vnext集合中的元素:Vnext={Vnext_s|Vnext_s∈V},s=1,2,…,SubNum;前驱节点数PreNum即为前驱节点集合Vpre中元素的个数;后继节点数SubNum即为后继节点集合Vnext中元素的个数;exist表示数据就绪标记;reqFlag表示监听拉请求标记,Datacurrent表示Vcurrent获取的当前数据;S3、如果PreNum≥1并且SubNum≥1时,执行步骤S3.0;S3.0、初始化p=1,k=1,m=1,n=1;保持Vcurrent上一次推送的数据:c_now=0.0;S3.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S3.2;S3.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S3.3;否则,执行S3.12;S3.3、判断p≤PreNum;如果是,执行S3.4;否则,执行S3.7;S3.4、判断Vpre_p的recFlag=0:如果是,执行S3.5;否则,执行S3.6;S3.5、向Vpre_p发送“pull”请求拉取数据,将拉取Vpre_p本身的数据存入receivePullDataList,Vpre_p的recFlag=1,p++;执行S3.3;S3.6、将Vpre_p接收到的数据存入receivePushDataList;p++;执行S3.3;S3.7、判断m≤SubNum:如果是,执行S3.8;否则,执行S3.21;S3.8、并行获取Vcurrent的Vnext_m的拉请求reqFlag,执行S3.9;S3.9、判断Vnext_m的reqFlag=“pull”:如果是,执行S3.10;否则,执行S3.11;S3.10、Datacurrent和receivePullDataList集合以及receivePushDataList集合的数据同时被Vnext_m拉取;m++;执行S3.7;S3.11、Vcurrent将Datacurrent和receivePullDataList集合以及receivePushDataList集合中的数据同时推送到Vnext_m;m++;执行S3.7;S3.12、判断k...

【技术特征摘要】
1.一种用于分布式环境下的数据传输方法,其特征在于:所述方法的具体步骤如下:S1、首先获取当前节点的前驱节点数PreNum和后继节点数SubNum:将分布式环境下节点拓扑结构由有向图组成,通过有向图的邻接矩阵来存储分布式节点拓扑结构图,根据当前节点Vcurrent∈V找到其在邻接矩阵中对应的列,查找值为1对应的行名即为Vcurrent的前驱节点;根据当前节点Vcurrent找到其在邻接矩阵中对应的行,查找值为1对应的列名即为Vcurrent的后继节点;最后获得的前驱节点数PreNum即为前驱节点集合Vpre中元素的个数,获得后继节点数SubNum即为后继节点集合Vnext中元素的个数;其中,V代表图中顶点的非空有限集合,0表示两个相邻节点没有传输关系,1表示两个相邻节点有传输关系;S2、如果PreNum=0并且SubNum≥1时,执行步骤S2.0;S2.0、初始化i=1,j=1,保持Vcurrent上一次推送的数据:c_now=0.0;S2.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S2.2;S2.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S2.3;否则,执行S2.8;S2.3、判断i≤SubNum:如果是,执行S2.4;否则,执行S2.12;S2.4、并行获取Vcurrent的Vnext_i的拉请求reqFlag;执行S2.5;S2.5、判断Vnext_i的reqFlag=“pull”:如果是,执行S2.6;否则,执行S2.7;S2.6、Datacurrent被Vnext_i拉取,i++,执行S2.3;S2.7、Vcurrent将Datacurrent向Vnext_i进行推送;i++;执行S2.3;S2.8、判断j≤SubNum:如果是,执行S2.9;否则,执行S2.12;S2.9、并行获取Vcurrent的Vnext_j的拉请求reqFlag;执行S2.10;S2.10、判断Vnext_j的reqFlag=“pull”:如果是,执行S2.11;否则,j++,执行S2.8;S2.11、Datacurrent被Vnext_j拉取;j++;执行S2.8;S2.12、c_now=Datacurrent;结束;其中,Vcurrent表示当前节点,Vpre代表Vcurrent的前驱节点集合,Vnext代表Vcurrent的后继节点集合;Vpre集合中的元素:Vpre={Vpre_t|Vpre_t∈V},t=1,2,…,PreNum;Vnext集合中的元素:Vnext={Vnext_s|Vnext_s∈V},s=1,2,…,SubNum;前驱节点数PreNum即为前驱节点集合Vpre中元素的个数;后继节点数SubNum即为后继节点集合Vnext中元素的个数;exist表示数据就绪标记;reqFlag表示监听拉请求标记,Datacurrent表示Vcurrent获取的当前数据;S3、如果PreNum≥1并且SubNum≥1时,执行步骤S3.0;S3.0、初始化p=1,k=1,m=1,n=1;保持Vcurrent上一次推送的数据:c_now=0.0;S3.1、根据获取的前驱节点数PreNum和后继节点数SubNum,执行S3.2;S3.2、判断Vcurrent的Datacurrent是否符合推送:如果符合推送,exist=true,执行S3.3;否则,执行S3.12;S3.3、判断p≤PreNum;如果是,执行S3.4;否则,执行S3.7;S3.4、判断Vpre_p的recFlag=0:如果是,执行S3.5;否则,执行S3.6;S3.5、向Vpre_p发送“pull”请求拉取数据,将拉取Vpre_p本身的数据存入receivePullDataList,Vpre_p的recFlag=1,p++;执行S3.3;S3.6、将Vpre_p接收到的数据存入receivePushDataList;p++;执行S3.3;S3.7、判断m≤SubNum:如果是,执行S3.8;否则,执行S3.21;S...

【专利技术属性】
技术研发人员:姜瑛戴媛清丁家满汪海涛刘英莉李凌宇
申请(专利权)人:昆明理工大学
类型:发明
国别省市:云南,53

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1