基于io解耦的分布式部署应用程序的实现方法及系统的制作方法

文档序号:6383503阅读:249来源:国知局
专利名称:基于io解耦的分布式部署应用程序的实现方法及系统的制作方法
技术领域
本发明涉及虚拟机,特别是涉及一种基于IO (Input Output,输入输出)解f禹的分布式部署应用程序的实现方法及系统。
背景技术
随着云计算技术的日益普及和大量工业化应用,云计算在实现服务的高可用性、处理能力的可扩展性等方面的优势被业界认可。虚拟机(即虚拟计算机)作为云计算技术的重要实现,已经得到广泛的应用。但是,在实际应用的过程中,虚拟机存在以下缺点(I)虚拟机与本地程序的交互不是很好,例如,使用很广泛的虚拟机软件VirtualBox不支持虚拟机和宿主机之间的复制粘贴,虚拟机软件vmware必须在虚拟机上安装增强工具包才支持复制粘贴拖拽等。(2)多个用户同时使用虚拟机时,虚拟机的操作系统所占系统资源的开销较大。

发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种基于IO解耦的分布式部署应用程序的实现方法及系统,将应用程序的逻辑部分与显示、IO部分分离,不改变应用程序的其他部分,使应用程序虚拟化,虚拟的粒度相对较小,虚拟程序执行效果跟本地程序一样,与本地其他程序交互性比较好,减少虚拟机操作系统资源的消耗。本发明提供的 基于IO解耦的分布式部署应用程序的实现方法,包括以下步骤S1、在服务器端的可执行程序和系统动态链接库之间插入一层分离动态链接库,通过远程过程调用协议RPC将关于显示、IO部分的函数调用转移到本地端执行,所述显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数;根据本地计算机上应用程序的可执行程序,得到应用程序的所有加载库信息;S2、拷贝可执行程序及所有加载库作为副本,传输到服务器;S3、修改服务器端可执行程序,分离逻辑部分和显示、IO部分部署分离动态链接库到可执行程序所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表,在可执行程序文件里根据过滤列表查找需要修改的函数入口地址,将这些函数入口地址修改为指向分离动态链接库;S4、在服务器端部署修改后的可执行程序及所有的加载库;S5、在本地端部署客户端软件。在上述技术方案中,所述加载库信息包括加载库名字、函数入口地址、函数名字信
肩、O本发明还提供一种基于IO解耦的分布式部署应用程序的实现系统,包括客户端软件、分离动态链接库和虚拟程序管理单元,其中,所述分离动态链接库位于服务器端的可执行程序和系统动态链接库之间,分离动态链接库通过RPC将关于显示、IO部分的函数调用转移到本地端执行,所述显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数;位于本地计算机的客户端软件通过网络与分离动态链接库连接,接收转发过来的、与IO相关的函数调用,调用系统动态链接库执行这些函数调用,并返回结果给分离动态链接库;位于非本地计算机的分离动态链接库与客户端软件连接,将与IO相关的函数调用转发给客户端软件并接收结果,同时将结果返回给应用程序的可执行文件,并通过调用本计算机的系统动态链接库完成与IO无关的其他功能;虚拟程序管理单元用于修改第三方可执行程序,传输、部署服务器端软件和客户端软件。在上述技术方案中,所述虚拟程序管理单元常驻在计算机内存中,以服务的方式随机启动。在上述技术方案中,每个计算机节点都部署有客户端软件、分离动态链接库和虚拟程序管理单元。在上述技术方案中,所述虚拟程序管理单元包括分析模块、分离模块、传输模块和监控模块,在本地计算机和服务器端启动虚拟程序管理单元后,在本地计算机侧,用户选择应用程序a作为虚拟程序对象;所述分析模块,用于根据应用程序a的可执行文件及所调用的动态链接库查找所有调用的动态链接库,获取需要IO解耦的函数调用信息;所述传输模块,用于将应用程序a及所有的调用的动态链接库拷贝到服务器端;所述分离模块,用于用于修改应用程序a,分离逻辑部分和显示、IO部分部署分离动态链接库到应用程序a所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表;在应用程序a的可执行文件及所有的调用的动态链接库里,根据过滤列表查找需要修改的函数入口地址;将这些函数入口地址修改为指向分离动态链接库,将应用程序a修改成al ; 所述传输模块,用于在本地部署客户端软件及系统动态链接库。在上述技术方案中,所述虚拟程序的运行过程如下在本地以虚拟程序方式启动应用程序a,实质上启动客户端软件,客户端软件通过本地计算机的监控模块传送启动命令给服务器端的监控模块;服务器端的监控模块启动应用程序al,加载所有动态链接库,包括分离动态链接库,与本地客户端软件通过远程过程调用建立连接;用户正常使用客户端软件,本地计算机的监控模块和服务器端的监控模块共同维护线路通畅,处理延时消息、重发消息;本地关闭客户端软件,本地计算机的监控模块传送关闭命令给服务器端的监控模块,服务器端的监控模块传送关闭命令给应用程序al,应用程序al收到关闭命令后关闭进程退出运行,服务器端的监控模块监测到应用程序al的关闭,发送已关闭消息给本地计算机的监控模块,本地计算机的监控模块关闭客户端软件的运行。与现有技术相比,本发明的优点如下(I)本发明针对目前常用的虚拟机技术提出虚拟程序的概念及实现方法,联网条件下,在本地计算机运行应用程序的显示部分及IO部分,在其他计算机上运行应用程序的逻辑部分,将应用程序的逻辑部分与显示、IO部分分离,不改变应用程序的其他部分,使应用程序虚拟化,虚拟的粒度相对较小,虚拟程序执行效果跟本地程序一样,与本地其他程序交互性比较好。 (2)虚拟程序所有对外10,包括文件10、网络IO等都在本地执行,保证了运行效果和执行结果与本地程序一样。(3)应用程序的逻辑部分与显示部分、IO部分运行在不同的计算机上,多个应用程序的逻辑部分可以运行在同一台计算机上,互不干扰,运行结果与本地程序一样,方便用户使用虚拟化技术,提高虚拟资源的共享能力。(4)多个用户使用虚拟程序时,只要操作系统一样,就可以共享同一个服务器的操作系统,与创建若干个虚拟机相比,本发明能够减少虚拟机操作系统资源的消耗。


图1是现有技术中一般应用程序的运行场景。图2是本发明实施例中虚拟应用程序的运行场景。图3是本发明实施例中虚拟程序的部署示意图。图4是本发明实施例中虚拟程序管理单元的结构框图。
具体实施例方式下面结合附图及具体实施例对本发明作进一步的详细描述。参见图1所示,一般的应用程序在运行过程中通过调用包括系统动态链接库在内的各种动态链接库,实现读写各种文件、与用户交互等功能。现有应用程序的逻辑部分和显示、IO部分一般是集中在一台计算机里执行,逻辑部分和显示、IO部分的连接通过执行系统动态链接库里部分与显示、IO相关的函数调用来实现的。本发明实施例提供一种基于IO解耦的分布式部署应用程序的实现方法,包括以下步骤S1、参见图2所示,在服务器端的可执行程序和系统动态链接库之间插入一层分离动态链接库,通过RPC(Remote Procedure Call Protocol,远程过程调用协议)将关于显示、IO部分的函数调用转移到本地端执行,显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数。由于应用程序必须通过调用系统函数接口,即系统动态链接库来实现,因此在应用程序和系统动态链接库之间插入一层分离动态链接库,通过远程调用方式将所有于对外出入口有关的函数调用转移到本地计算机实现,就能实现应用程序的虚拟化,必须要求所有对外的出入口在本地计算机执行,否则会影响程序运行结果的正确性,对外的出入口包括所有与人机界面交互、图形显示、网络10、文件IO有关的函数调用。以下统称这些对外的出入口为10。根据本地计算机上应用程序的可执行程序,得到应用程序的所有加载库信息,包括加载库名字、函数入口地址、函数名字信息等。S2、拷贝可执行程序及所有加载库作为副本, 传输到服务器。S3、修改服务器端可执行程序,分离逻辑部分和显示、IO部分部署分离动态链接库到可执行程序所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表,在可执行程序文件里根据过滤列表查找需要修改的函数入口地址,将这些函数入口地址修改为指向分离动态链接库。S4、在服务器端部署修改后的可执行程序及所有的加载库。S5、在本地端部署客户端软件。本发明实施例提供一种基于IO解耦的分布式部署应用程序的实现系统,包括客户端软件、分离动态链接库和虚拟程序管理单元,其中,分离动态链接库位于服务器端的可执行程序和系统动态链接库之间,分离动态链接库通过RPC将关于显示、IO部分的函数调用转移到本地端执行,显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数;位于本地计算机的客户端软件通过网络与分离动态链接库连接,接收转发过来的、与IO相关的函数调用,调用系统动态链接库执行这些函数调用,并返回结果给分离动态链接库;位于非本地计算机的分离动态链接库与客户端软件连接,将与IO相关的函数调用转发给客户端软件并接收结果,同时将结果返回给应用程序的可执行文件,并通过调用本计算机的系统动态链接库完成与IO无关的其他功能;虚拟程序管理单元用于修改第三方可执行程序,传输、部署服务器端软件和客户端软件,虚拟程序管理单元常驻在计算机内存中,以服务的方式随机启动。参见图3所示,每个计算机节点都部署有客户端软件、分离动态链接库和虚拟程序管理单元,这样就既可以将本节点的应用程序虚拟化,也可以当作非本节点应用程序虚拟化的服务器端。参见图4所示,虚拟程序管理单元包括分析模块、分离模块、传输模块和监控模块,在本地计算机和服务器端启动虚拟程序管理单元后,在本地计算机侧,用户选择应用程序a作为虚拟程序对象;分析模块根据应用程序a的可执行文件及所调用的动态链接库查找所有调用的动态链接库,获取需要IO解耦的函数调用信息;

传输模块将应用程序a及所有的调用的动态链接库拷贝到服务器端;分离模块用于修改应用程序a,分离逻辑部分和显示、IO部分部署分离动态链接库到应用程序a所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表;在应用程序a的可执行文件及所有的调用的动态链接库里,根据过滤列表查找需要修改的函数入口地址;将这些函数入口地址修改为指向分离动态链接库,将应用程序a修改成al。传输模块在本地部署客户端软件及系统动态链接库。虚拟程序运行过程如下在本地以虚拟程序方式启动应用程序a,实质上启动客户端软件,客户端软件通过本地计算机的监控模块传送启动命令给服务器端的监控模块;服务器端的监控模块启动应用程序al,加载所有动态链接库,包括分离动态链接库,与本地客户端软件通过远程过程调用建立连接;用户正常使用客户端软件,本地计算机的监控模块和服务器端的监控模块共同维护线路通畅,处理延时消息、重发消息等;本地关闭客户端软件,本地计算机的监控模块传送关闭命令给服务器端的监控模块,服务器端的监控模块传送关闭命令给应用程序al,应用程序al收到关闭命令后关闭进程退出运行,服务器端的监控模块监测到应用程序al的关闭,发送已关闭消息给本地计算机的监控模块,本地计算机的监控模块关闭客户端软件的运行。本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型属在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。说明书中未详细描述的内容为本领域技术人员公知的现有技术。
权利要求
1.一种基于IO解耦的分布式部署应用程序的实现方法,其特征在于,包括以下步骤51、在服务器端的可执行程序和系统动态链接库之间插入一层分离动态链接库,通过远程过程调用协议RPC将关于显示、IO部分的函数调用转移到本地端执行,所述显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数;根据本地计算机上应用程序的可执行程序,得到应用程序的所有加载库信息;52、拷贝可执行程序及所有加载库作为副本,传输到服务器;53、修改服务器端可执行程序,分离逻辑部分和显示、IO部分部署分离动态链接库到可执行程序所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表,在可执行程序文件里根据过滤列表查找需要修改的函数入口地址,将这些函数入口地址修改为指向分离动态链接库;54、在服务器端部署修改后的可执行程序及所有的加载库;55、在本地端部署客户端软件。
2.如权利要求1所述的基于IO解耦的分布式部署应用程序的实现方法,其特征在于 所述加载库信息包括加载库名字、函数入口地址、函数名字信息。
3.一种基于IO解耦的分布式部署应用程序的实现系统,其特征在于包括客户端软件、分离动态链接库和虚拟程序管理单元,其中,所述分离动态链接库位于服务器端的可执行程序和系统动态链接库之间,分离动态链接库通过RPC将关于显示、IO部分的函数调用转移到本地端执行,所述显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件 IO和网络IO的函数;位于本地计算机的客户端软件通过网络与分离动态链接库连接,接收转发过来的、与IO相关的函数调用,调用系统动态链接库执行这些函数调用,并返回结果给分离动态链接库;位于非本地计算机的分离动态链接库与客户端软件连接,将与IO相关的函数调用转发给客户端软件并接收结果,同时将结果返回给应用程序的可执行文件,并通过调用本计算机的系统动态链接库完成与IO无关的其他功能;虚拟程序管理单元用于修改第三方可执行程序,传输、部署服务器端软件和客户端软件。
4.如权利要求3所述的基于IO解耦的分布式部署应用程序的实现系统,其特征在于 所述虚拟程序管理单元常驻在计算机内存中,以服务的方式随机启动。
5.如权利要求4所述的基于IO解耦的分布式部署应用程序的实现系统,其特征在于 每个计算机节点都部署有客户端软件、分离动态链接库和虚拟程序管理单元。
6.如权利要求5所述的基于IO解耦的分布式部署应用程序的实现系统,其特征在于 所述虚拟程序管理单元包括分析模块、分离模块、传输模块和监控模块,在本地计算机和服务器端启动虚拟程序管理单元后,在本地计算机侧,用户选择应用程序a作为虚拟程序对象;所述分析模块,用于根据应用程序a的可执行文件及所调用的动态链接库查找所有调用的动态链接库,获取需要IO解耦的函数调用信息;所述传输模块,用于将应用程序a及所有的调用的动态链接库拷贝到服务器端;所述分离模块,用于用于修改应用程序a,分离逻辑部分和显示、IO部分部署分离动态链接库到应用程序a所在的目录下,根据所有与人机交互、图形显示、网络10、文件IO有关的函数调用来创建一个过滤列表;在应用程序a的可执行文件及所有的调用的动态链接库里,根据过滤列表查找需要修改的函数入口地址;将这些函数入口地址修改为指向分离动态链接库,将应用程序a修改成al ;所述传输模块,用于在本地部署客户端软件及系统动态链接库。
7.如权利要求6所述的基于IO解耦的分布式部署应用程序的实现系统,其特征在于 所述虚拟程序的运行过程如下在本地以虚拟程序方式启动应用程序a,实质上启动客户端软件,客户端软件通过本地计算机的监控模块传送启动命令给服务器端的监控模块;服务器端的监控模块启动应用程序al,加载所有动态链接库,包括分离动态链接库,与本地客户端软件通过远程过程调用建立连接;用户正常使用客户端软件,本地计算机的监控模块和服务器端的监控模块共同维护线路通畅,处理延时消息、重发消息;本地关闭客户端软件,本地计算机的监控模块传送关闭命令给服务器端的监控模块,服务器端的监控模块传送关闭命令给应用程序al,应用程序al收到关闭命令后关闭进程退出运行,服务器端的监控模块监测到应用程序al的关闭,发送已关闭消息给本地计算机的监控模块,本地计算机的监控模块关闭客户端软件的运行。
全文摘要
本发明公开了一种基于IO解耦的分布式部署应用程序的实现方法及系统,涉及虚拟机,该实现系统包括客户端软件、分离动态链接库和虚拟程序管理单元,分离动态链接库位于服务器端的可执行程序和系统动态链接库之间,分离动态链接库通过RPC将关于显示、IO部分的函数调用转移到本地端执行,显示、IO部分的函数包括所有涉及人机界面交互、图形显示、文件IO和网络IO的函数。本发明将应用程序的逻辑部分与显示、IO部分分离,不改变应用程序的其他部分,使应用程序虚拟化,虚拟的粒度相对较小,虚拟程序执行效果跟本地程序一样,与本地其他程序交互性比较好,减少虚拟机操作系统资源的消耗。
文档编号G06F9/455GK103036959SQ20121052376
公开日2013年4月10日 申请日期2012年12月7日 优先权日2012年12月7日
发明者陈浩, 陈亮, 王若舟, 肖凌 申请人:武汉邮电科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1