一种运行应用程序的多个实例的方法和系统技术方案

技术编号:7898067 阅读:214 留言:0更新日期:2012-10-23 04:18
本发明专利技术公开了一种运行应用程序的多个实例的方法和系统,该方法包括:开始运行所述应用程序的根实例,该根实例包含至少一个线程;响应于所述根实例的一个线程运行到应用程序中预先设置的冻结点,停止所述根实例的全部线程的运行;响应于开始运行该应用程序的一个实例,复制所述根实例的全部线程的运行状态作为该实例的全部线程的运行状态;以及继续运行该应用程序的所述实例的全部线程。该方法和系统在多租户的云计算环境下能够节省程序运行空间和数据存储空间。

【技术实现步骤摘要】

本专利技术一般涉及计算机应用程序的运行,更具体地,涉及一种运行应用程序的多个实例的方法和系统
技术介绍
云计算是一种新兴的网络服务模式,IDC的一份分析报告指出,2009年全球3590亿美元的IT支出中有170亿美元出自云计算投资。其它调查也表明,有三分之二的企业计划扩展对于公有云的使用。 “多租户”架构(Multi-tenancy)是云计算中最重要的体系架构,“多租户”借鉴和发展了很多主机计算的概念,并把这些概念带到了 x86服务器的生态系统中,而且对原来的概念进行很多延展,以支持数以千计的企业内和企业外的“租户”。这种“租户”可以是任何企业中的任何一个应用程序(既可以是企业内部也可以是企业外部),这个应用程序有自己的安全需求和专用虚拟计算环境,这个环境可能包含企业IT架构中的几层或者全部,从存储到用户界面。实际上,所有的交互式应用在本质上应该都是面向多用户或者说是“多租户”的。“多租户”简言之就是一个单独的软件实例可以为多个组织(或者说用户)服务。一个支持多租户的软件需要在设计上能够使得每个使用这个软件的组织能使用到一个单独的虚拟实例,并且可以对这个虚拟实例进行定制化。多租户的优点在于通过一个软件实例被多个组织共享,从而减低了整体资源的消耗,也同时减低应用运行的成本;另外,由于,所有组织都共享同一套核心代码,所以能够让软件更新和开发更简单;此外,通过使用了多租户架构能减少物理资源和软件资源,能够简化管理、提高效率。在一些云计算环境中,为了满足多租户(用户)安全/隔离的需求,云计算环境的管理员需要为每一个用户创建应用程序的一个单独的实例。尽管应用程序的多个实例都是运行在相同的基础代码之上,但是,目前却很难利用这些相同的基础代码,造成不必要的资源消耗,例如多次载入相同的代码占用的内存空间;另外在应用程序的不同实例中,使用了相同的全局数据结构,又造成重复占用了数据存储空间,等等。在现有的“多租户”体系结构中,例如对于Java应用程序,是通过复制JVM来解决这个问题,该方法是通过复制现有的JVM,来重新启动一个新的复制的JVM,共享内存页,并且在复制的JVM中再运行另一相同的Java应用程序。但是上述的方法是在进程级别的共享,共享的粒度较粗,节省的空间有限。
技术实现思路
因此,需要一种新的运行应用程序的多个实例的方法和系统,来节省应用程序占用的存储空间。根据本专利技术的一个方面,提供了一种运行应用程序的多个实例的方法,该方法包括开始运行所述应用程序的根实例,该根实例包含至少一个线程;响应于所述根实例的一个线程运行到应用程序中预先设置的冻结点,停止所述根实例的全部线程的运行;响应于开始运行该应用程序的一个实例,复制所述根实例的全部线程的运行状态作为该实例的全部线程的运行状态;以及继续运行该应用程序的所述实例的全部线程。根据本专利技术的另一个方面提供了一种运行应用程序的多个实例的系统,该系统包括根实例启动装置,被配置为开始运行所述应用程序的根实例,该根实例包含至少一个线程; 根实例停止装置,被配置为响应于所述根实例的一个线程运行到应用程序中预先设置的冻结点,停止所述根实例的全部线程的运行;复制装置,被配置为响应于开始运行该应用程序的一个实例,复制所述根实例的全部线程的运行状态作为该实例的全部线程的运行状态;以及继续运行装置,被配置为继续运行该应用程序的所述实例的全部线程。附图说明通过对附图中本专利技术示例实施例方式的更详细描述,本专利技术的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本专利技术示例实施例方式中的相同部件。图I示出了根据本专利技术的一种实施方式的一种运行应用程序的多个实例的方法的流程;图2以Java语言为例示例性地进一步阐述了运行应用程序的多个实例的方法;图3示出了实例进行写操作的过程;图4示出了另一种实例进行写操作的过程;以及图5示意性示出了一种运行应用程序的多个实例的系统的结构框图。具体实施例方式将参照附图更加详细地描述本专利技术的优选实施方式,在附图中显示了本专利技术的优选实施例。然而,本专利技术可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本专利技术更加透彻和完整,并且,完全将本专利技术的范围传达给本领域的技术人员。程序设计人员一般把正在计算机中执行的程序叫做进程(Process),每一个进程都有自己独立的内存空间。例如对于IE浏览器程序,每打开一个IE浏览器窗口,就启动了一个IE浏览器进程。而线程(Thread),是指进程中的一个执行流程,有时也称为执行情景。一个进程可以由多个线程组成,即在一个进程中可以同时运行多个不同的线程,它们分别执行不同的任务。当进程内的多个线程同时运行,这种运行方式称为并发运行。线程与进程的主要区别在于每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源,t匕如共享一个对象或者共享已经打开的一个文件。现有的操作系统,如Mac、Windows等,一般都采用多线程的概念,把线程视为基本执行单位。在现有的云计算环境中,为了实现多租户的体系结构,对于诸如Java语言之类的应用程序,是通过复制虚拟机,再在复制的虚拟机中运行另一份相同的应用程序,虚拟机是一个进程,复制的虚拟机进程与原来的虚拟机进程可以共享一些内存页,内存页在内存中是较大的存储单位,因此这种共享的粒度很粗,节省的存储空间有限。另外,在很多场景下,经常需要运行一个应用程序的多个实例(Instance),实例是指一个应用程序的一次运行,例如运行多个Eclipse实例,指运行Eclipse应用程序多次;或者运行多个Java应用程序的实例,指在Java虚拟机进程中运行该Java应用程序多次等等,实例本是是一个虚的概念,并没有程序上的实体与之对应,一个实例可能包含多个线程,如果多个实例运行在一个进程中,这些实例间是可以共享内存空间的。每个实例可能包含多个线程,目前多租户解决方案中只有虚拟机进程级别的复制,即进程间共享内存页,但 是,多个实例包含的多个线程之间没有共享,而这些实例内部的多个线程都有大量的相似性,但是由于各实例进程之间的存储空间是独立的,使用进程共享,内存页常常因为微小的差异而不能共享,共享的粒度过粗,浪费了大量的应用程序运行空间。因此,本专利技术考虑到可以在云计算环境中,采用运行多个应用程序实例的方式来实现多租户的体系结构,并且对于该应用程序中的多个实例的重复的数据结构共享,来节省该应用程序运行的空间。本专利技术提出一种运行应用程序的多个实例的方法,本领域技术人员通过对方法过程的描述,可以知道,这种方法对于使用面向对象的语言,运行在虚拟机之上的应用程序都是适用的,这种应用程序有很多种,例如Java语言的应用程序,可以运行在Java的虚拟机(JVM)之上,Ruby语言的应用程序,可以运行在Ruby的虚拟机之上,以及Python语言的应用程序,可以运行在Python的虚拟机之上,C#语言的应用程序,可以运行在C#的虚拟机之h坐坐I . 9 -T^ O图I示出了根据本专利技术的一种实施方式的一种运行应用程序的多个实例的方法的流程,根据图1,在步骤S101,开始运行所述应用程序的根实例,该根实例包含至少一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:蔡俊杰王恒
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1