一种基于管道的多组进程间数据传递方法

文档序号:7820894阅读:161来源:国知局
一种基于管道的多组进程间数据传递方法
【专利摘要】本发明涉及一种基于管道的多组进程间数据传递方法,包括:1)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新;2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接;3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中;4)第三方应用进程通过管道与客户端进程进行数据传输;5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。与现有技术相比,本发明具有实现了数据发送的高效性和占用资源的低消耗性等优点。
【专利说明】
一种基于管道的多组进程间数据传递方法

【技术领域】
[0001]本发明涉及计算机数据传输【技术领域】,尤其是涉及一种基于管道的多组进程间数据传递方法。

【背景技术】
[0002]根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:控制信息的通信和大批数据信息的通信.前者称为低级通信,后者称为高级通信。
[0003]低级通信主要用于进程之间的同步、互斥、终止、挂起等等控制信息的传递。
[0004]高级通信主要用于进程间数据块的交换和共享,常见的高级通信有管道(PIPE)、消息队列(MESSAGE)、共享内存(SHARED MEMORY)等。
[0005]随着信息时代数据容量和速度的指数式增长,灾备系统中所存储的数据规模越来越大。那么大量的数据传递不可避免,并且灾备系统中传输的数据来源一般都是第三方的应用。那么必然存在以下的问题:
[0006]1、采用何种数据传输方式,才能最大限度的提高数据的传输效率,并且最大限度的减少对原有环境的影响(减少资源的占用)。
[0007]2、如何有效地开启多个传输通道,协调好多个第三方进程同时进行数据的传递。
[0008]3、如何有效地预防数据传递过程中有可能产生的数据坏块问题。


【发明内容】

[0009]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于管道的多组进程间数据传递方法,实现数据发送的高效性和占用资源的低消耗性,适用于各种应用之间的高效安全的大数据传递。
[0010]本发明的目的可以通过以下技术方案来实现:
[0011]一种基于管道的多组进程间数据传递方法,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件和用于保存连接三元组的已配对连接记录文件,所述数据传递方法包括:
[0012]I)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新;
[0013]2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接;
[0014]3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中;
[0015]4)第三方应用进程通过管道与客户端进程进行数据传输;
[0016]5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
[0017]所述步骤I)中,对初始化连接记录文件中的初始三元组进行更新具体为:
[0018]101)判断初始化连接记录文件中是否存在与客户端进程的PID相应的初始三元组,若是,则该取该初始三元组,执行步骤103),若否,则执行步骤102);
[0019]102)创建与客户端进程相应的管道,将客户端进程的PID、管道名称和创建时间作为一个初始三元组保存到初始化连接记录文件中,更新完毕,根据设定的等待时间进入等待状态;
[0020]103)读取初始三元组中的创建时间,根据设定的超时时间判断该三元组是否超时,若是,则清除该初始三元组,执行步骤102),若否,则更新完毕,进入等待状态。
[0021]所述等待时间大于或等于超时时间。
[0022]所述步骤3)中,获取发起连接的客户端进程设置的管道具体为:
[0023]301)第三方应用读取调度管理模块的已配对连接记录文件,查找是否存在与自己的PID相应的连接三元组,若是,则获取该连接三元组中的管道名称,若否,则执行步骤302);
[0024]302)读取初始化连接记录文件,提取与发起连接的进程相对应的初始三元组的创建时间,判断是否超时,若是,则连接失败,若否,则获取该初始三元组中的管道名称,并执行步骤303);
[0025]303)将第三方应用的PID替换创建时间,形成连接三元组,并保存至已配对连接记录文件,同时清除初始化连接记录文件的初始三元组。
[0026]所述步骤4)中,第三方应用进程通过管道与客户端进程进行数据传输时,管道至少设有一个,各管道并行传输数据,通过不同的消息ID,完成不同数据的传输。
[0027]所述数据传输的过程中,第三方应用进程实时检测连接是否断开,若是,则进行重新连接,所述重新连接具体为:
[0028]第三方应用进程调用调度管理模块,读取已配对连接记录文件,查找到与自己的PID相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
[0029]与现有技术相比,本发明可以适用于不同数据对象的并行发送,或者数据分段并行发送,具有以下有益效果:
[0030]1、本发明采用命名管道技术,实现了数据发送的高效性、数据发送和消息发送的准确性、占用资源的低消耗性和异常处理恢复的容错性等特点;
[0031]2、本发明通过管道可实现多任务并发备份恢复,在数据膨胀的今天,简单高效的解决了数据传递的问题。

【专利附图】

【附图说明】
[0032]图1为本发明的原理示意图;
[0033]图2为本发明的流程示意图。

【具体实施方式】
[0034]下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0035]如图1所示,本发明实施例提供一种基于管道的多组进程间数据传递方法,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件(等待连接记录)和用于保存连接三元组的已配对连接记录文件(已连接记录),所述初始三元组由发起连接的进程的PID、管道名称和创建时间组成,所述连接三元组由发起连接的进程的PID、管道名称和完成连接的第三方应用的PID组成。客户端和第三方应用均包括连接管理模块和数据处理模块。
[0036]本实施例将上述方法用于解决同一客户端下多个oracle实例同时发起备份(存在先后顺序,相差在秒级别上),以节约备份时间的问题。如图2所示,该方法具体步骤如下:
[0037]在步骤S1中,控制台发起任务,客户端进程通过调用管理API调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新,具体为:
[0038]101)判断初始化连接记录文件中是否存在与客户端进程的PID相应的初始三元组,若是,则读取该初始三元组,执行步骤103),若否,则执行步骤102);
[0039]102)创建与客户端进程相应的管道,将客户端进程的PID、管道名称和创建时间作为一个初始三元组保存到初始化连接记录文件中,更新完毕,根据设定的等待时间进入等待状态;
[0040]103)读取初始三元组中的创建时间,根据设定的超时时间判断该三元组是否超时,若是,则清除该初始三元组,执行步骤102),若否,则更新完毕,进入等待状态。
[0041]优选地,所述等待时间大于或等于超时时间,
[0042]在步骤S2中,客户端进程根据控制台的任务调用相应的第三方应用进程发起连接。本实施例中,客户端使用脚本调用oracle的rman发送对应的实例的数据。
[0043]在步骤S3中,第三方应用进程通过调用管理API调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中。
[0044]获取发起连接的客户端进程设置的管道具体为:
[0045]301)第三方应用读取调度管理模块的已配对连接记录文件,查找是否存在与自己的PID相应的连接三元组,若是,则获取该连接三元组中的管道名称,若否,则执行步骤302):
[0046]302)读取初始化连接记录文件,提取与发起连接的进程相对应的初始三元组的创建时间,判断是否超时,若是,则连接失败,若否,则获取该初始三元组中的管道名称,并执行步骤303);
[0047]303)将第三方应用的PID替换创建时间,形成连接三元组,并保存至已配对连接记录文件,同时清除初始化连接记录文件的初始三元组,等待下一个连接的发起。
[0048]在步骤S4中,第三方应用进程通过管道与客户端进程进行数据传输,管道至少设有一个,采用多通道传输的好处就是可以并行的传输数据,那么不同的连接有可能传输的数据对象不同。Oracle发送数据到客户端时,通过不同的消息ID,完成不同数据的发送,不同的消息ID标明不同的状态,用于协调数据的传递。
[0049]例如首先发送数据文件,将数据文件记录到对应的备份片中,数据文件单独形成一个备份集。然后消息通知数据文件发送完成,将开始下一个数据源的发送,如此循环。下面是一个例子:
[0050]首先,(1)发送数据对象的类型,(2)发送每个数据对象的大小,(3)发送数据块,
(4)发送完毕后,发送一个新的消息ID,用于通知数据的接收端是否还有数据需要接收,如果还有那么重复(2)、(3)两个步骤,如果没有那么发送一个数据传送结束的消息,如果后续还需要传递数据,那么只是断开连接,否则再发送一个释放管道的消息通知接收端数据发送完毕,请求释放管道资源。
[0051]数据传输的过程中,第三方应用进程实时检测连接是否断开,包括异常断开连接或者正常的暂时断开连接,若是,则进行重新连接,所述重新连接具体为:
[0052]第三方应用进程调用调度管理模块,读取已配对连接记录文件,查找到与自己的PID相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
[0053]在步骤S5中,数据传输完毕后,发送消息通知客户端数据发送结束,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
[0054]控制台同时发起其他oracle实例的备份,执行如流程如SI?S3,连接记录到已配对连接记录文件后就与新发起的连接脱离联系,简化了连接流程。所有的实例的数据都发送完毕,任务结束。
[0055]图2所述流程图只描述了一个连接的具体实现过程和其中的规则,对应多个连接过程,那么可以考虑为多次重复此过程,只是其中彼此会有一些影响。
[0056]对上述方法进行性能测试如下。
[0057]测试环境:
[0058]控制台(存储):1nforworks虚拟机,4G内存,2核CPU,千兆网卡。
[0059]客户端:windows 764位,4G内存,2核CPU,百兆网卡。
[0060]客户端上部署了两个实例,分别为orcl,test。
[0061]单独备份orcl时,22.36M/S,备份5G,用时3分49秒。
[0062]单独备份test时,24.73M/s,备份3.24G,用时2分14秒。
[0063]同时备份时:
[0064]orcl 19.06M/s,备份 5G,用时 4 分 28 秒。
[0065]Test 15.5M/s,备份 3.24G,用时 3 分 34 秒。
[0066]单从速度上说:orcl速度同比下降14.6% ;test同比下降38.5%。
[0067]但是从总的时间上说:总时间减少I分13秒,同比减少26.2%。
[0068]这个还只是虚拟机的测试结果,如果是实体机,那么并发的任务之间的影响由于硬件的原因会大大降低,那么速度会逐步回升,最终备份的时间将大大的缩短。
【权利要求】
1.一种基于管道的多组进程间数据传递方法,其特征在于,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件和用于保存连接三元组的已配对连接记录文件,所述数据传递方法包括: 1)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新; 2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接; 3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中; 4)第三方应用进程通过管道与客户端进程进行数据传输; 5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
2.根据权利要求1所述的基于管道的多组进程间数据传递方法,其特征在于,所述步骤I)中,对初始化连接记录文件中的初始三元组进行更新具体为: 101)判断初始化连接记录文件中是否存在与客户端进程的PID相应的初始三元组,若是,则读取该初始三元组,执行步骤103),若否,则执行步骤102); 102)创建与客户端进程相应的管道,将客户端进程的PID、管道名称和创建时间作为一个初始三元组保存到初始化连接记录文件中,更新完毕,根据设定的等待时间进入等待状态; 103)读取初始三元组中的创建时间,根据设定的超时时间判断该三元组是否超时,若是,则清除该初始三元组,执行步骤102),若否,则更新完毕,进入等待状态。
3.根据权利要求2所述的基于管道的多组进程间数据传递方法,其特征在于,所述等待时间大于或等于超时时间。
4.根据权利要求2所述的基于管道的多组进程间数据传递方法,其特征在于,所述步骤3)中,获取发起连接的客户端进程设置的管道具体为: 301)第三方应用读取调度管理模块的已配对连接记录文件,查找是否存在与自己的PID相应的连接三元组,若是,则获取该连接三元组中的管道名称,若否,则执行步骤302); 302)读取初始化连接记录文件,提取与发起连接的进程相对应的初始三元组的创建时间,判断是否超时,若是,则连接失败,若否,则获取该初始三元组中的管道名称,并执行步骤 303); 303)将第三方应用的PID替换创建时间,形成连接三元组,并保存至已配对连接记录文件,同时清除初始化连接记录文件的初始三元组。
5.根据权利要求1所述的基于管道的多组进程间数据传递方法,其特征在于,所述步骤4)中,第三方应用进程通过管道与客户端进程进行数据传输时,管道至少设有一个,各管道并行传输数据,通过不同的消息ID,完成不同数据的传输。
6.根据权利要求1或5所述的基于管道的多组进程间数据传递方法,其特征在于,所述数据传输的过程中,第三方应用进程实时检测连接是否断开,若是,则进行重新连接,所述重新连接具体为: 第三方应用进程调用调度管理模块,读取已配对连接记录文件,查找到与自己的PID相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
【文档编号】H04L29/08GK104410687SQ201410693465
【公开日】2015年3月11日 申请日期:2014年11月26日 优先权日:2014年11月26日
【发明者】黄开德 申请人:上海爱数软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1