CN104410687B - 一种基于管道的多组进程间数据传递方法 - Google Patents
一种基于管道的多组进程间数据传递方法 Download PDFInfo
- Publication number
- CN104410687B CN104410687B CN201410693465.XA CN201410693465A CN104410687B CN 104410687 B CN104410687 B CN 104410687B CN 201410693465 A CN201410693465 A CN 201410693465A CN 104410687 B CN104410687 B CN 104410687B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- linkage record
- triple
- connection
- record file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于管道的多组进程间数据传递方法,包括:1)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新;2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接;3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中;4)第三方应用进程通过管道与客户端进程进行数据传输;5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。与现有技术相比,本发明具有实现了数据发送的高效性和占用资源的低消耗性等优点。
Description
技术领域
本发明涉及计算机数据传输技术领域,尤其是涉及一种基于管道的多组进程间数据传递方法。
背景技术
根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:控制信息的通信和大批数据信息的通信.前者称为低级通信,后者称为高级通信。
低级通信主要用于进程之间的同步、互斥、终止、挂起等等控制信息的传递。
高级通信主要用于进程间数据块的交换和共享,常见的高级通信有管道(PIPE)、消息队列(MESSAGE)、共享内存(SHARED MEM0RY)等。
随着信息时代数据容量和速度的指数式增长,灾备***中所存储的数据规模越来越大。那么大量的数据传递不可避免,并且灾备***中传输的数据来源一般都是第三方的应用。那么必然存在以下的问题:
1、采用何种数据传输方式,才能最大限度的提高数据的传输效率,并且最大限度的减少对原有环境的影响(减少资源的占用)。
2、如何有效地开启多个传输通道,协调好多个第三方进程同时进行数据的传递。
3、如何有效地预防数据传递过程中有可能产生的数据坏块问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于管道的多组进程间数据传递方法,实现数据发送的高效性和占用资源的低消耗性,适用于各种应用之间的高效安全的大数据传递。
本发明的目的可以通过以下技术方案来实现:
一种基于管道的多组进程间数据传递方法,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件和用于保存连接三元组的已配对连接记录文件,所述数据传递方法包括:
1)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新;
2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接;
3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中;
4)第三方应用进程通过管道与客户端进程进行数据传输;
5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
所述步骤1)中,对初始化连接记录文件中的初始三元组进行更新具体为:
101)判断初始化连接记录文件中是否存在与客户端进程的PID相应的初始三元组,若是,则该取该初始三元组,执行步骤103),若否,则执行步骤102);
102)创建与客户端进程相应的管道,将客户端进程的PID、管道名称和创建时间作为一个初始三元组保存到初始化连接记录文件中,更新完毕,根据设定的等待时间进入等待状态;
103)读取初始三元组中的创建时间,根据设定的超时时间判断该三元组是否超时,若是,则清除该初始三元组,执行步骤102),若否,则更新完毕,进入等待状态。
所述等待时间大于或等于超时时间。
所述步骤3)中,获取发起连接的客户端进程设置的管道具体为:
301)第三方应用读取调度管理模块的已配对连接记录文件,查找是否存在与自己的PID相应的连接三元组,若是,则获取该连接三元组中的管道名称,若否,则执行步骤302);
302)读取初始化连接记录文件,提取与发起连接的进程相对应的初始三元组的创建时间,判断是否超时,若是,则连接失败,若否,则获取该初始三元组中的管道名称,并执行步骤303);
303)将第三方应用的PID替换创建时间,形成连接三元组,并保存至已配对连接记录文件,同时清除初始化连接记录文件的初始三元组。
所述步骤4)中,第三方应用进程通过管道与客户端进程进行数据传输时,管道至少设有一个,各管道并行传输数据,通过不同的消息ID,完成不同数据的传输。
所述数据传输的过程中,第三方应用进程实时检测连接是否断开,若是,则进行重新连接,所述重新连接具体为:
第三方应用进程调用调度管理模块,读取已配对连接记录文件,查找到与自己的PID相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
与现有技术相比,本发明可以适用于不同数据对象的并行发送,或者数据分段并行发送,具有以下有益效果:
1、本发明采用命名管道技术,实现了数据发送的高效性、数据发送和消息发送的准确性、占用资源的低消耗性和异常处理恢复的容错性等特点;
2、本发明通过管道可实现多任务并发备份恢复,在数据膨胀的今天,简单高效的解决了数据传递的问题。
附图说明
图1为本发明的原理示意图;
图2为本发明的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本发明实施例提供一种基于管道的多组进程间数据传递方法,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件(等待连接记录)和用于保存连接三元组的已配对连接记录文件(已连接记录),所述初始三元组由发起连接的进程的PID、管道名称和创建时间组成,所述连接三元组由发起连接的进程的PID、管道名称和完成连接的第三方应用的PID组成。客户端和第三方应用均包括连接管理模块和数据处理模块。
本实施例将上述方法用于解决同一客户端下多个oracle实例同时发起备份(存在先后顺序,相差在秒级别上),以节约备份时间的问题。如图2所示,该方法具体步骤如下:
在步骤S1中,控制台发起任务,客户端进程通过调用管理API调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新,具体为:
101)判断初始化连接记录文件中是否存在与客户端进程的PID相应的初始三元组,若是,则读取该初始三元组,执行步骤103),若否,则执行步骤102);
102)创建与客户端进程相应的管道,将客户端进程的PID、管道名称和创建时间作为一个初始三元组保存到初始化连接记录文件中,更新完毕,根据设定的等待时间进入等待状态;
103)读取初始三元组中的创建时间,根据设定的超时时间判断该三元组是否超时,若是,则清除该初始三元组,执行步骤102),若否,则更新完毕,进入等待状态。
优选地,所述等待时间大于或等于超时时间,
在步骤S2中,客户端进程根据控制台的任务调用相应的第三方应用进程发起连接。本实施例中,客户端使用脚本调用oracle的rman发送对应的实例的数据。
在步骤S3中,第三方应用进程通过调用管理API调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中。
获取发起连接的客户端进程设置的管道具体为:
301)第三方应用读取调度管理模块的已配对连接记录文件,查找是否存在与自己的PID相应的连接三元组,若是,则获取该连接三元组中的管道名称,若否,则执行步骤302):
302)读取初始化连接记录文件,提取与发起连接的进程相对应的初始三元组的创建时间,判断是否超时,若是,则连接失败,若否,则获取该初始三元组中的管道名称,并执行步骤303);
303)将第三方应用的PID替换创建时间,形成连接三元组,并保存至已配对连接记录文件,同时清除初始化连接记录文件的初始三元组,等待下一个连接的发起。
在步骤S4中,第三方应用进程通过管道与客户端进程进行数据传输,管道至少设有一个,采用多通道传输的好处就是可以并行的传输数据,那么不同的连接有可能传输的数据对象不同。Oracle发送数据到客户端时,通过不同的消息ID,完成不同数据的发送,不同的消息ID标明不同的状态,用于协调数据的传递。
例如首先发送数据文件,将数据文件记录到对应的备份片中,数据文件单独形成一个备份集。然后消息通知数据文件发送完成,将开始下一个数据源的发送,如此循环。下面是一个例子:
首先,(1)发送数据对象的类型,(2)发送每个数据对象的大小,(3)发送数据块,(4)发送完毕后,发送一个新的消息ID,用于通知数据的接收端是否还有数据需要接收,如果还有那么重复(2)、(3)两个步骤,如果没有那么发送一个数据传送结束的消息,如果后续还需要传递数据,那么只是断开连接,否则再发送一个释放管道的消息通知接收端数据发送完毕,请求释放管道资源。
数据传输的过程中,第三方应用进程实时检测连接是否断开,包括异常断开连接或者正常的暂时断开连接,若是,则进行重新连接,所述重新连接具体为:
第三方应用进程调用调度管理模块,读取已配对连接记录文件,查找到与自己的PID相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
在步骤S5中,数据传输完毕后,发送消息通知客户端数据发送结束,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
控制台同时发起其他oracle实例的备份,执行如流程如S1~S3,连接记录到已配对连接记录文件后就与新发起的连接脱离联系,简化了连接流程。所有的实例的数据都发送完毕,任务结束。
图2所述流程图只描述了一个连接的具体实现过程和其中的规则,对应多个连接过程,那么可以考虑为多次重复此过程,只是其中彼此会有一些影响。
对上述方法进行性能测试如下。
测试环境:
控制台(存储):inforworks虚拟机,4G内存,2核CPU,千兆网卡。
客户端:windows 764位,4G内存,2核CPU,百兆网卡。
客户端上部署了两个实例,分别为orcl,test。
单独备份orcl时,22.36M/s,备份5G,用时3分49秒。
单独备份test时,24.73M/s,备份3.24G,用时2分14秒。
同时备份时:
orcl 19.06M/s,备份5G,用时4分28秒。
Test 15.5M/s,备份3.24G,用时3分34秒。
单从速度上说:orcl速度同比下降14.6%;test同比下降38.5%。
但是从总的时间上说:总时间减少1分13秒,同比减少26.2%。
这个还只是虚拟机的测试结果,如果是实体机,那么并发的任务之间的影响由于硬件的原因会大大降低,那么速度会逐步回升,最终备份的时间将大大的缩短。
Claims (6)
1.一种基于管道的多组进程间数据传递方法,其特征在于,通过调度管理模块实现多组进程间的数据传递,所述调度管理模块内设有用于保存初始三元组的初始化连接记录文件和用于保存连接三元组的已配对连接记录文件,所述数据传递方法包括以下步骤:
1)控制台发起任务,客户端进程调用调度管理模块,对初始化连接记录文件中与该客户端进程相应的初始三元组进行更新;
2)客户端进程根据控制台的任务调用相应的第三方应用进程发起连接;
3)第三方应用进程调用调度管理模块,获取发起连接的客户端进程设置的管道,实现连接,并将此次连接记录保存至已配对连接记录文件中;
4)第三方应用进程通过管道与客户端进程进行数据传输;
5)数据传输完毕后,释放相应的管道资源,客户端进程调用调度管理模块,清除已配对连接记录文件中相应的连接记录。
2.根据权利要求1所述的基于管道的多组进程间数据传递方法,其特征在于,所述步骤1)中,对初始化连接记录文件中的初始三元组进行更新具体为:
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相应的连接三元组,获取该连接三元组的管道名称,重新进行连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410693465.XA CN104410687B (zh) | 2014-11-26 | 2014-11-26 | 一种基于管道的多组进程间数据传递方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410693465.XA CN104410687B (zh) | 2014-11-26 | 2014-11-26 | 一种基于管道的多组进程间数据传递方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104410687A CN104410687A (zh) | 2015-03-11 |
CN104410687B true CN104410687B (zh) | 2018-01-19 |
Family
ID=52648284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410693465.XA Active CN104410687B (zh) | 2014-11-26 | 2014-11-26 | 一种基于管道的多组进程间数据传递方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104410687B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104702627B (zh) * | 2015-04-01 | 2017-12-26 | 南京天溯自动化控制***有限公司 | 一种基于报文分类的同步并发通信方法及*** |
CN105045681A (zh) * | 2015-07-10 | 2015-11-11 | 上海爱数软件有限公司 | 一种Oracle多通道并行备份及恢复方法 |
CN107493483A (zh) * | 2016-06-13 | 2017-12-19 | 杭州海康威视数字技术股份有限公司 | 一种信息传输方法、装置和数字硬盘录像机 |
CN108038006B (zh) * | 2017-11-14 | 2022-02-08 | 北京小鸟看看科技有限公司 | 头戴显示设备的控制方法、设备及*** |
CN112181682B (zh) * | 2020-09-23 | 2023-03-31 | 上海爱数信息技术股份有限公司 | 一种多任务并发场景下的数据传输控制***及其方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644306B2 (en) * | 2006-12-15 | 2010-01-05 | Boeing Company | Method and system for synchronous operation of an application by a purality of processing units |
CN101777012A (zh) * | 2009-12-31 | 2010-07-14 | 深圳市蓝韵实业有限公司 | 一种三维图像服务器多任务管理调度方法 |
CN102508765A (zh) * | 2011-11-17 | 2012-06-20 | 深圳市中兴移动通信有限公司 | 一种通过进程间通信实现软件日志实时监控的方法 |
CN103577469A (zh) * | 2012-08-03 | 2014-02-12 | 深圳市腾讯计算机***有限公司 | 数据库连接复用方法和装置 |
CN103593247A (zh) * | 2013-11-18 | 2014-02-19 | 腾讯科技(成都)有限公司 | 一种数据传递方法、及装置 |
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7379959B2 (en) * | 2002-09-07 | 2008-05-27 | Appistry, Inc. | Processing information using a hive of computing engines including request handlers and process handlers |
-
2014
- 2014-11-26 CN CN201410693465.XA patent/CN104410687B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644306B2 (en) * | 2006-12-15 | 2010-01-05 | Boeing Company | Method and system for synchronous operation of an application by a purality of processing units |
CN101777012A (zh) * | 2009-12-31 | 2010-07-14 | 深圳市蓝韵实业有限公司 | 一种三维图像服务器多任务管理调度方法 |
CN102508765A (zh) * | 2011-11-17 | 2012-06-20 | 深圳市中兴移动通信有限公司 | 一种通过进程间通信实现软件日志实时监控的方法 |
CN103577469A (zh) * | 2012-08-03 | 2014-02-12 | 深圳市腾讯计算机***有限公司 | 数据库连接复用方法和装置 |
CN103605529A (zh) * | 2013-05-17 | 2014-02-26 | 华为终端有限公司 | 应用程序的处理方法和装置 |
CN103593247A (zh) * | 2013-11-18 | 2014-02-19 | 腾讯科技(成都)有限公司 | 一种数据传递方法、及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104410687A (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104410687B (zh) | 一种基于管道的多组进程间数据传递方法 | |
CN102521083B (zh) | 一种云计算***中虚拟机备份方法和*** | |
CN105975579B (zh) | 一种内存数据库的主备复制方法及内存数据库*** | |
CN105260238B (zh) | 一种多进程提升性能部署的方法 | |
RU2014125081A (ru) | Согласованные с приложениями снимки общего тома | |
CN102571850B (zh) | 事务提交***、方法及设备 | |
CN103064761B (zh) | 一种数据同步方法、设备和*** | |
CN105260485A (zh) | 一种数据加载的方法和装置 | |
CN107688512A (zh) | 一种优化虚拟机数据备份方法和*** | |
CN104750596A (zh) | 一种告警信息处理方法及服务子*** | |
CN105518641A (zh) | 点对点数据复制方法、设备和***以及主节点切换方法、设备和*** | |
CN109245926A (zh) | 智能网卡、智能网卡***及控制方法 | |
CN110825562B (zh) | 数据备份方法、装置、***和存储介质 | |
CN108519918A (zh) | 一种基于事务链的分布式事务处理方法 | |
CN114675983A (zh) | 业务数据处理方法、装置、存储介质以及电子设备 | |
CN105808345B (zh) | 数据处理方法、加速引擎、控制板和*** | |
CN106572137A (zh) | 一种分布式服务资源管理方法和装置 | |
CN105142235B (zh) | 空调机组的通讯方法及装置 | |
CN104410698B (zh) | 一种share nothing集群下的发起节点异常处理方法及装置 | |
CN101855839B (zh) | 用于异步地双重备份文件的方法 | |
CN104821889B (zh) | 一种备份报文的处理方法和设备 | |
CN106657076B (zh) | 一种网络命名空间的tcp服务实现方法及装置 | |
CN105721342B (zh) | 多进程设备的网络连接方法和*** | |
CN101145955A (zh) | 网管软件热备份的方法、网管及网管*** | |
CN109491768A (zh) | 一种基于子事务流的分布式事务动态处理方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD. Address before: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8 Applicant before: Shanghai Eisoo Software Co.,Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |