The invention discloses a resource recovery method and a device for solving the resource leakage problem when the prior art is used for the thermal deployment and upgrading of an application. Methods include: for application deployment in the container, creating the corresponding application in the virtual machine to run the container in the tenants, to enable the application using the tenant resources to run on the virtual machine; hot deployment in the application of the upgrade, according to the corresponding application tenants, recovery of the resources used by the application.
【技术实现步骤摘要】
一种资源回收方法及装置
本申请涉及计算机
,尤其涉及一种资源回收方法及装置。
技术介绍
目前,JavaEE的应用往往是运行在应用对应的容器中的,同一个容器中可能运行有很多不同的应用,例如,如图1所示,运行在JAVA虚拟机(JAVAVirtualMachine,JVM)上的JAVA容器中部署了三个应用,此时假设需要对其中的应用3进行版本升级,在对应用3进行版本升级时,往往需要对运行该JAVA容器的JVM进行重启,而对JVM的重启将会影响JAVA容器中其他应用的使用。为了避免在对运行在容器中的某一应用进行升级时需要重启虚拟机,而影响该容器中其他应用的运行的问题,在现有技术中,大部分容器均支持采用热部署的方式对运行在容器中的应用进行版本升级。其中,热部署是指在不重启运行容器的虚拟机的情况下,完成对运行在该容器上的某个应用的版本升级。在对应用进行热部署时,首先需要对该应用已经部署到容器中的旧版本进行退部署,即对已经部署到容器上的旧版本应用进行删除。然而部署在容器中的应用运行时所需的资源均保存在运行该容器的虚拟机上,应用在运行时可以通过容器调用虚拟机中相关资源,即应用在运行时将会使用虚拟机中的相关资源,由于在现有技术中应用通过容器调用虚拟机中的资源运行时,虚拟机无法确定该次调用是容器中哪个应用发起的,因而在对应用进行退部署后,可能无法对已经退部署的应用在运行中所使用的虚拟机资源进行回收,从而产生资源泄露问题。由于热部署过程中存在资源泄露的问题,应用在经过多次热部署后,在退部署旧版本应用的过程中产生的资源泄露将会越来越严重,进而造成操作系统可分配给应用运行的资源 ...
【技术保护点】
一种资源回收方法,其特征在于,包括:针对部署在容器中的应用,在运行所述容器的虚拟机中创建所述应用对应的租户,以使所述应用使用所述租户在所述虚拟机中的资源运行;在对所述应用进行热部署升级时,根据所述应用对应的租户,对所述应用使用的所述资源进行回收。
【技术特征摘要】
1.一种资源回收方法,其特征在于,包括:针对部署在容器中的应用,在运行所述容器的虚拟机中创建所述应用对应的租户,以使所述应用使用所述租户在所述虚拟机中的资源运行;在对所述应用进行热部署升级时,根据所述应用对应的租户,对所述应用使用的所述资源进行回收。2.如权利要求1所述的方法,其特征在于,在运行所述容器的虚拟机中创建所述应用对应的租户,具体包括:通过所述容器,在所述虚拟机中创建与所述应用对应的租户上下文,所述租户上下文用于表征所述应用对应的租户。3.如权利要求1所述的方法,其特征在于,所述虚拟机中还包含根租户,所述根租户用于向所述应用对应的租户提供运行所述应用所需的部分或全部资源。4.如权利要求1所述的方法,其特征在于,所述应用使用的资源,包括以下至少一种:所述应用使用的所述虚拟机中的线程;所述应用打开的所述虚拟机中的文件句柄;所述应用使用的所述虚拟机中的共享变量对象。5.如权利要求4所述的方法,其特征在于,所述应用使用的所述虚拟机中的线程,包括以下至少一种:由所述根租户的线程切换得到的线程;所述应用自身创建的线程。6.如权利要求5所述的方法,其特征在于,当所述虚拟机中的线程为由所述根租户的线程切换得到的线程时,使所述应用使用所述虚拟机中的线程,具体包括:通过所述容器,将所述虚拟机根租户的线程切换到所述应用对应的租户上下文中运行。7.如权利要求4所述的方法,其特征在于,根据所述应用对应的租户,对所述应用使用的所述虚拟机中的线程进行回收,具体包括:根据所述应用对应的租户,对所述租户中运行的线程抛出异常对象;根据异常处理机制,对抛出异常对象的线程进行关闭。8.如权利要求7所述的方法,其特征在于,当所述应用使用的线程为所述应用自身创建的线程时,根据所述应用对应的租户,对所述租户中运行的线程抛出异常对象,具体包括:对所述应用对应的租户中应用自身创建的线程进行标记;针对携带有所述标记的线程抛出异常对象;修改携带有标记的线程栈上所有方法的异常处理机制,以使得根据所述异常处理机制无法查询到与所述抛出异常对象对应的异常类型;根据异常处理机制,对抛出异常对象的线程进行关闭,具体包括:根据异常处理机制,对所述抛出异常对象的线程进行退栈。9.如权利要求7所述的方法,其特征在于,当所述应用使用的线程为由所述根租户的线程切换得到的线程时,针对所述应用使用的虚拟机中的线程抛出异常对象,具体包括:针对所述应用对应的租户中由根租户的线程切换得到的线程抛出异常对象;修改由根租户的线程切换得到的线程的异常处理机制,以使得根据所述异常处理机制无法查询到与所述抛出异常对象对应的异常类型;对所述由根租户的线程切换得到的线程中、表示应用对应的租户入口的方法进行标记,以使得携带有所述标记的方法中存的异常对象能够被异常处理机制捕捉;根据异常处理机制,对抛出异常对象的线程进行关闭,具体包括:根据异常处理机制,对携带有所述标记的方法中存的异常对象进行抓取,并将所述方法表示的线程切换回所述根租户的上下文中。10.如权利要求4所述的方法,其特征在于,根据所述应用对应的租户,对所述应用使用的所述虚拟机中的共享变量对象进行回收前,所述方法还包括:当所述应用使用所述虚拟机中的共享变量对象时,对所述共享变量对象进行复制,获得所述共享变量对象的副本;将所述共享变量对象的副本保存到与所述应用对应租户的存储空间,以使得所述应用运行时使用保存在所述存储空间中的共享变量对象副本。11.如权利要求10所述的方法,其特征在于,根据所述应用对应的租户,对所述应用使用的所述虚拟机中的共享变量对象进行回收,具体包括:删除保存在与所述应用对应的租户的存储空间中的共享变量对象副本;回收所述存储空间。12.如权利要求4所述的方法,其特征在于,根据所述应用对应的租户,对所述应用打开的所述虚拟机中的文件句柄进行回收前,所述方法还包括:追踪所述应用的文件句柄打开操作;将追踪到的所述应用打开的文件句柄...
【专利技术属性】
技术研发人员:李三红,陆传胜,宁志伟,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。