CN110489140A - 软件升级方法、装置、计算机设备及计算机存储介质 - Google Patents
软件升级方法、装置、计算机设备及计算机存储介质 Download PDFInfo
- Publication number
- CN110489140A CN110489140A CN201910625561.3A CN201910625561A CN110489140A CN 110489140 A CN110489140 A CN 110489140A CN 201910625561 A CN201910625561 A CN 201910625561A CN 110489140 A CN110489140 A CN 110489140A
- Authority
- CN
- China
- Prior art keywords
- file
- function
- upgrading
- upgraded
- upgrade
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件升级方法、装置及计算机存储介质,涉及计算机技术领域,能够在软件升级过程中,无需重启进程,节省软件升级所耗费的时间。所述方法包括:当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;基于所述用于控制内部资源升级的函数对待升级文件进行升级;在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及到软件升级方法、装置、计算机设备及计算机存储介质。
背景技术
在项目开发过程中,随着续期的变化和信息技术的不断发展,原先的产品已经不能满足客户需求或者产品跟不上新技术的发展,会需要产品的软件升级。升级后的软件通常比原版本具有更优的性能,提高用户的使用体验。
目前,产品的软件升级可以分为整系统升级、程序/进程升级,so文件升级实质上也属于程序/进程升级,在现有so文件的升级过程中,so文件升级只是暴力地将目标so文件替换,然后重启进程,以完成so文件的升级。但替换so文件升级重启进程的方式,需要花费几秒或更多时间,意味着在此期间,前端业务会中断或阻塞若干秒或更长,对于一些时延及其敏感的系统,此升级方式是不适用的。
现有技术通常使用搭建HA集群(双节点/进程构架)来保证系统的可靠性与稳定性,即使其中一个节点的进程挂住,另一个节点的进程可以保持业务进行,可以一定程度上解决so文件升级过程中业务不中断的问题,但是双节点/进程框架需要成倍的硬件/软件资源,成本过大。
发明内容
有鉴于此,本发明提供了一种软件升级方法、装置、计算机设备及计算机存储介质,主要目的在于解决目前软件升级过程中业务不中断的问题。
依据本发明一个方面,提供了一种软件升级方法,该方法包括:
当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;
基于所述用于控制内部资源升级的函数对待升级文件进行升级;
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
进一步地,所述升级指令中包含目标升级文件的路径信息,所述基于所述用于控制内部资源升级的函数对待升级文件进行升级,具体包括:
基于所述控制内部资源升级的函数调用目标升级文件的路径信息,并根据所述路径信息获取所述目标升级文件;
将所述待升级文件在运行过程中所用到的资源数据同步至所述目标升级文件中,更新所述目标升级文件;
向所述待升级文件发送关闭指令,并将所述更新后的目标升级文件作为升级后的文件。
进一步地,所述基于所述用于控制内部资源升级的函数对待升级文件进行升级,具体还包括:
若接收到升级失败提示,则触发升级回退指令,并根据所述升级回退指令调用所述用于控制内部资源升级的函数对应的回退函数对所述待升级文件进行升级回退。
进一步地,所述在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作,具体包括:
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中所用到的资源数据设置为隐藏;
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中提供给外部程序调用的资源数据设置为可见。
进一步地,在所述启动目标进程对应框架结构下的升级框架之后,所述方法还包括:
通过统计外部程序访问引用计数,确定在软件升级之前所有外部程序的访问操作;
若所述所有外部程序的访问操作执行完毕,则基于所述用于控制内部资源升级的函数对待升级文件进行升级。
进一步地,所述目标进程对应框架结构下还包括基础功能实体,所述基础功能实体所使用的功能函数封装在所述待升级文件中,在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,所述方法还包括:
基于所述目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口;
所述基于所述目标进程对应框架结构下的基础功能实体对外部访问请求提供功能接口,具体包括:
从所述待升级文件中提取所述基础功能实体所使用的功能函数;
根据所述基础功能实体所使用的功能函数,对外部操作提供功能接口。
进一步地,在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,所述方法还包括:
按照所述待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到资源数据的函数格式。
依据本发明另一个方面,提供了一种软件升级装置,所述装置包括:
启动单元,用于当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;
升级单元,用于基于所述用于控制内部资源升级的函数对待升级文件进行升级;
阻塞单元,用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
进一步地,所述升级指令中包含目标升级文件的路径信息,所述升级单元包括:
调用模块,用于基于所述控制内部资源升级的函数调用目标升级文件的路径信息,并根据所述路径信息获取所述目标升级文件;
同步模块,用于将所述待升级文件在运行过程中所用到的资源数据同步至所述目标升级文件中,更新所述目标升级文件;
发送模块,用于向所述待升级文件发送关闭指令,并将所述更新后的目标升级文件作为升级后的文件。
进一步地,所述升级单元还包括:
回退模块,用于若接收到升级失败提示,则触发升级回退指令,并根据所述升级回退指令调用所述用于控制内部资源升级的函数对应的回退函数对所述待升级文件进行升级回退。
进一步地,所述阻塞单元包括:
第一设置模块,用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中所用到的资源数据设置为隐藏;
第二设置模块,用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中提供给外部程序调用的资源数据设置为可见。
进一步地,所述装置还包括:
确定单元,用于在所述启动目标进程对应框架结构下的升级框架之后,通过统计外部程序访问引用计数,确定在软件升级之前所有外部程序的访问操作;
所述启动单元,具体用于若所述所有外部程序的访问操作执行完毕,则基于所述用于控制内部资源升级的函数对待升级文件进行升级。
进一步地,所述目标进程对应框架结构下还包括基础功能实体,所述基础功能实体所使用的功能函数封装在所述待升级文件中,所述装置还包括:
生成单元,用于在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,基于所述目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口;
所述生成单元包括:
提取模块,用于从所述待升级文件中提取所述基础功能实体所使用的功能函数;
生成模块,用于根据所述基础功能实体所使用的功能函数,生成外部操作提供功能接口。
进一步地,所述装置还包括:
设置单元,用于在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,按照所述待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到资源数据的函数格式。
依据本发明又一个方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现软件升级方法的步骤。
依据本发明再一个方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现软件升级方法的步骤。
借由上述技术方案,本发明提供一种软件升级方法及装置,当接收到外部升级脚本发送至目标进程的升级指令时,说明目标进程已经符合升级条件,启动目标进程对应框架结构下的升级框架,基于升级框架中用于控制内部资源升级的函数对待升级文件进行升级,并在对待升级文件进行升级的过程中,基于用于控制外部资源访问的函数阻塞外部程序的访问操作。与现有技术中将目标so文件替换后重启进程的软件升级方式相比,本申请通过启动目标进程对应框架结构下的升级框架,该结构可以将基础功能和升级控制框架结构解耦,并轻松控制软件升级过程中的外部资源访问,使得在软件升级的过程中无需重启进程,从而减少软件升级中业务阻塞时间。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种软件升级方法的流程示意图;
图2示出了本发明实施例提供的另一种软件升级方法的流程示意图;
图3示出了本发明实施例提供的软件升级框架的结构图;
图4示出了本发明实施例提供的软件升级的流程图;
图5示出了本发明实施例提供的升级回退的流程图;
图6示出了本发明实施例提供的一种软件升级装置的结构示意图;
图7示出了本发明实施例提供的另一种软件升级装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种软件升级方法,考虑到软件升级过程中重启进程需要耗费时间,提出业务不中断的软件升级框架,一方面可以缩短升级过程中的业务阻塞时间,另一方面可以减少硬件成本,如图1所示,该方法包括:
101、当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架。
其中,升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数,这里的升级指令主要针对so文件进行升级,通过升级框架来控制so文件的升级流程,在so文件的升级过程中,用于控制内部资源升级的函数能够执行对so文件的升级过程,用于控制外部资源访问的函数能够阻塞外部程序的访问操作,直至so文件升级完毕。
应说明的是,这里的目标进程为待升级软件所属进程,目标进程对应框架结构上分为两个部分,一部分是用于软件升级的升级框架,另一部分是对外部访问请求提供功能接口的基础功能实体。
由于so文件的升级是so文件所包含的函数、全局变量等各种资源数据的升级,此时内部资源升级流程和外部程序的访问流程可能同时访问一个函数、全局变量等资源数据,可能引发资源互斥等各种问题,甚至导致so文件的升级失败、外部程序访问结果错误等,本申请通过设置分层式的进程框架来控制so文件的升级流程,无需重启进程,可以解决软件升级过程中业务不中断的问题。
102、基于所述用于控制内部资源升级的函数对待升级文件进行升级。
对于本发明实施例,在目标进程接收到升级指令后,该升级指令中会包含目标升级文件的路径,具体在基于用于控制内部资源升级的函数对待升级文件进行升级的过程,可以根据目标升级文件的路径调用系统函数来打开目标升级文件,并执行目标升级文件的初始化,通过将待升级文件在运行过程中所用到的资源数据同步至目标升级文件中,数据同步后的目标升级文件即作为升级后的文件,启动升级后的文件,并关闭待升级文件,完成软件升级过程。
可以理解的是,这个软件升级过程也就几十毫秒时间,升级过程中无需重启进程,只需通过升级框架执行目标升级文件,并在将待升级文件中的资源数据同步至目标升级文件后关闭待升级文件,大大缩短了软件升级时间,适用于IO敏感型业务进程。
103、在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
对于待升级文件中内部的可见函数,若存在外部程序访问的情况,升级框架为了避免资源互斥,会调用控制外部资源访问的函数阻塞外部程序的访问操作,而整个流程对外部程序是无感知的,外部程序的访问操作和内部软件的升级操作之间的分层,确保了前端业务在软件升级过程中的稳定性和正确性。
本发明实施例提供一种软件升级方法,当接收到外部升级脚本发送至目标进程的升级指令时,说明目标进程已经符合升级条件,启动目标进程对应框架结构下的升级框架,基于升级框架中用于控制内部资源升级的函数对待升级文件进行升级,并在对待升级文件进行升级的过程中,基于用于控制外部资源访问的函数阻塞外部程序的访问操作。与现有技术中将目标so文件替换后重启进程的软件升级方式相比,本申请通过启动目标进程对应框架结构下的升级框架,该结构可以将基础功能和升级控制框架结构解耦,并轻松控制软件升级过程中的外部资源访问,使得在软件升级的过程中无需重启进程,从而减少软件升级中业务阻塞时间。
本发明实施例提供了另一种软件升级方法,在整个软件升级过程中,对业务影响时间耗时极短,相比进程重启的方式,极大减少了软件升级对用户业务的影响,如图2所示,所述方法包括:
201、当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架。
其中,目标进程即为包含待升级so文件的进程,下文中所提及的so文件即为待升级文件,具体目标进程的框架结构主要包括两个部分,如图3所示,升级框架和基础功能实体。升级框架使用的函数都封装在upgradeManage.so中;基础功能实体使用的函数都封装在A.xxx.so文件中,且A.xxx.so文件为待升级的so文件,具体可以通过软连接A.so指向A.xxx.so文件。
具体地,图3示出了本发明实施例提供的软件升级框架的结构图,该升级框架控制着A.xxx.so文件的升级流程,在A.xxx.so文件升级的过程中,此时其他程序访问A.xxx.so文件的函数、全局变量等资源,升级框架会阻塞外部访问,直至A.xxx.so文件升级完毕。基础功能实体为目标进程的功能集合,实现目标进程对外界提供的功能。
202、通过统计外部程序访问引用计数,确定在软件升级之前所有外部程序的访问操作。
可以理解的是,在软件升级之前,如果当前正存在外部程序访问so文件内部可见函数,一旦执行升级操作可能与外部程序访问存在资源互斥,可以通过升级框架统计外部程序访问引用计数,精确得到当前so文件外部程序访问者数量,如果此时下发升级指令,升级框架会等待所有外部程序访问结束,才开始正式升级,而等待so文件升级的过程中,升级框架是不会阻塞前端业务的。
203、若所述所有外部程序的访问操作执行完毕,则基于所述用于控制内部资源升级的函数调用目标升级文件的路径信息,并根据所述路径信息获取所述目标升级文件。
对于本发明实施例,升级框架中用于控制内部资源升级的函数能够对目标进程中待升级文件进行更新,也就是将目标升级文件替换待升级文件,并同步待升级文件中的资源数据。
由于外部升级脚本发送升级指令至目标进程时,该升级指令包含了目标升级文件的路径信息,所以在所有外部程序的访问操作执行完毕后,通过用于控制内部资源的函数可以从升级指令中调用目标升级文件的路径信息。可以理解的是,该路径信息都是针对待升级文件预先设置好的,按照路径信息即可获取目标升级文件。
204、将所述待升级文件在运行过程中所用到的资源数据同步至所述目标升级文件中,更新所述目标升级文件。
对于本发明实施例,待升级文件在运行过程中会产生很多资源数据,例如,全局变量中的内容,请求队列中未处理完的请求等,在对待升级文件进行升级的过程中,待升级文件在运行过程中所用到的资源数据后续在升级后还是有必要的,通过升级框架调用同步函数将待升级文件在运行过程中所用到的资源数据同步至目标升级文件中,保证更新后的目标升级文件在后续执行过程中的可靠性。
205、向所述待升级文件发送关闭指令,并将所述更新后的目标升级文件作为升级后的文件。
对于本发明实施例,具体可以通过升级框架调用待升级文件的关闭函数,释放各种资源,如动态内存等,并调用系统函数关闭待升级文件,使得更新后的目标升级文件作为升级后的文件来执行后续外部程序的访问。
在具体应用场景中,待升级文件为目标进程中的so文件,对so文件的升级流程如图4所示,图4中的老so为待升级文件,新so为目标升级文件,包括如下步骤:(a)目标进程获取升级指令中包含的新so的路径;(b)目标进程基于升级指令中包含的新so文件的路径,调用系统函数dlspen打开新so文件,调用系统函数dlsym导出符号地址;(c)升级框架调用新so文件的int函数,执行新so文件的初始化;(d)升级框架调用老so文件的sync old data函数,通知老so文件准备同步数据,数据为so文件在运行过程中所用到的资源,如保存在全局变量中的内容,请求队列里未处理完的请求等;(e)升级框架调用新so的sync new data函数,执行老so文件向新so文件的数据同步;(f)数据同步完成后,升级框架调用新so文件的start函数,启动新so文件运行引擎,如后台工作线程;(g)start新so文件后,升级框架执行老so文件的stop函数,关闭老so文件的运行引擎;(h)升级框架调用老so文件的finish函数,释放各种资源,如动态内存;(i)升级框架调用系统函数dlclose关闭老so文件。
具体在对待升级文件进行升级的过程中,编译链接流程包括:(a)代码编译链接为原生so文件;(b)对原生so文件里的外部可见函数,在外层添加升级控制代码,加工成最终的待升级so文件;此处的升级控制代码,是为了当so文件处于升级中时,且此时so文件的外部可见函数被访问,升级控制层可以阻塞外部程序的访问,达到资源互斥,等so升级完毕,外部程序才可访问内部可见函数。
应说明的是,升级框架在执行待升级文件以及目标升级文件中相关函数失败的情况,可能会接收到升级失败提示,若接收到升级失败提示,并不在继续执行后续升级流程,则触发升级回退指令,该升级回退指令相当于软件升级的反向流程,结合图4所示的软件升级过程,具体升级回退的流程如图5所示,根据升级回退指令调用用于控制内部资源升级的函数对应的回退函数,开始至后向前执行待升级文件的升级回退。
其中,在软件升级过程中各个函数对应的回退函数如下所示:
206、按照所述待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到资源数据的函数格式。
对于本发明实施例,具体在对待升级文件进行升级的过程中,目标进程若要支持待升级文件的升级方式,从代码开发到待升级文件的编译链接,都要遵循约定的规范和流程,否则无法支持软件的升级。具体的开发规范中需要按照待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到的资源函数的格式。
具体地,对于待升级文件以及目标升级文件中所用到的资源函数,其函数名称、返回值类型、参数类型必须完全一致,且不能新增函数,否则会使得升级后文件与待升级文件中存在函数不一致的现象,导致软件升级后,其他进程访问不了之前可以访问的函数,或者访问不到升级后文件中的新增函数。
另外,待升级文件所用到的内存,尤其大内存,尽量使用动态堆内存,这样在待升级文件在向目标升级文件同步数据时,只需修改指针对象,而无需拷贝内存,减少升级时间。
207、基于所述目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口。
对于本发明实施例,目标进程对应框架结构下还包括基础功能实体,该基础功能实体所使用的功能函数封装在所述待升级文件中。可以基于目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口。
具体地,可以通过从待升级文件中提取所述基础功能实体所使用的功能函数,并根据基础功能实体所使用的功能函数,对外部操作提供功能接口。
208、在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
具体地,在对待升级文件进行升级的过程中,基于用于控制外部资源访问的函数将待升级文件以及目标升级文件在运行过程中所用到的资源数据设置为隐藏。
通过将待升级文件以及目标升级文件的内部资源默认都隐藏,避免外部程序可以随便访问待升级文件的内部资源。
具体地,在对待升级文件进行升级的过程中,基于用于控制外部资源访问的函数将待升级文件以及目标升级文件在运行过程中提供给外部程序调用的资源数据设置为可见。
对于确实需要提供给外部程序调用的函数,通过在此类函数在定义处新增代码:__attribute((visibility(“default”))),该代码代表函数对于外部可见
进一步地,作为图1所述方法的具体实现,本发明实施例提供了一种软件升级装置,如图6所示,所述装置包括启动单元31、升级单元32、阻塞单元33。
启动单元31,可以用于当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;
升级单元32,可以用于基于所述用于控制内部资源升级的函数对待升级文件进行升级;
阻塞单元33,可以用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
本发明提供的一种软件升级装置,当接收到外部升级脚本发送至目标进程的升级指令时,说明目标进程已经符合升级条件,启动目标进程对应框架结构下的升级框架,基于升级框架中用于控制内部资源升级的函数对待升级文件进行升级,并在对待升级文件进行升级的过程中,基于用于控制外部资源访问的函数阻塞外部程序的访问操作。与现有技术中将目标so文件替换后重启进程的软件升级方式相比,本申请通过启动目标进程对应框架结构下的升级框架,该结构可以将基础功能和升级控制框架结构解耦,并轻松控制软件升级过程中的外部资源访问,使得在软件升级的过程中无需重启进程,从而减少软件升级中业务阻塞时间。
作为图6中所示软件升级装置的进一步说明,图7是根据本发明实施例另一种软件升级装置的结构示意图,如图7所示,所述升级指令中包含目标升级文件的路径信息,所述升级单元32包括:
调用模块321,可以用于基于所述控制内部资源升级的函数调用目标升级文件的路径信息,并根据所述路径信息获取所述目标升级文件;
同步模块322,可以用于将所述待升级文件在运行过程中所用到的资源数据同步至所述目标升级文件中,更新所述目标升级文件;
发送模块323,可以用于向所述待升级文件发送关闭指令,并将所述更新后的目标升级文件作为升级后的文件。
进一步地,所述升级单元32还包括:
回退模块324,可以用于若接收到升级失败提示,则触发升级回退指令,并根据所述升级回退指令调用所述用于控制内部资源升级的函数对应的回退函数对所述待升级文件进行升级回退。
进一步地,所述阻塞单元33包括:
第一设置模块331,可以用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中所用到的资源数据设置为隐藏;
第二设置模块332,可以用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中提供给外部程序调用的资源数据设置为可见。
进一步地,所述装置还包括:
确定单元34,可以用于在所述启动目标进程对应框架结构下的升级框架之后,通过统计外部程序访问引用计数,确定在软件升级之前所有外部程序的访问操作;
所述启动单元31,具体可以用于若所述所有外部程序的访问操作执行完毕,则基于所述用于控制内部资源升级的函数对待升级文件进行升级。
进一步地,所述目标进程对应框架结构下还包括基础功能实体,所述基础功能实体所使用的功能函数封装在所述待升级文件中,所述装置还包括:
生成单元35,可以用于在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,基于所述目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口;
所述生成单元35包括:
提取模块351,可以用于从所述待升级文件中提取所述基础功能实体所使用的功能函数;
生成模块352,可以用于根据所述基础功能实体所使用的功能函数,生成外部操作提供功能接口。
进一步地,所述装置还包括:
设置单元36,可以用于在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,按照所述待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到资源数据的函数格式。
需要说明的是,本实施例提供的一种软件升级装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
基于上述如图1和图2所示方法,相应的,本实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的软件升级方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1、图2所示的方法,以及图6、图7所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该实体设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的软件升级方法。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的软件升级装置的实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,与目前现有技术相比,本申请通过启动目标进程对应框架结构下的升级框架,该结构可以将基础功能和升级控制框架结构解耦,并轻松控制软件升级过程中的外部资源访问,使得在软件升级的过程中无需重启进程,从而减少软件升级中业务阻塞时间。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种软件升级方法,其特征在于,所述方法包括:
当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;
基于所述用于控制内部资源升级的函数对待升级文件进行升级;
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
2.根据权利要求1所述的方法,其特征在于,所述升级指令中包含目标升级文件的路径信息,所述基于所述用于控制内部资源升级的函数对待升级文件进行升级,具体包括:
基于所述用于控制内部资源升级的函数调用目标升级文件的路径信息,并根据所述路径信息获取所述目标升级文件;
将所述待升级文件在运行过程中所用到的资源数据同步至所述目标升级文件中,更新所述目标升级文件;
向所述待升级文件发送关闭指令,并将所述更新后的目标升级文件作为升级后的文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述用于控制内部资源升级的函数对待升级文件进行升级,具体还包括:
若接收到升级失败提示,则触发升级回退指令,并根据所述升级回退指令调用所述用于控制内部资源升级的函数对应的回退函数对所述待升级文件进行升级回退。
4.根据权利要求2所述的方法,其特征在于,所述在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作,具体包括:
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中所用到的资源数据设置为隐藏;
在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数将所述待升级文件以及所述目标升级文件在运行过程中提供给外部程序调用的资源数据设置为可见。
5.根据权利要求1所述的方法,其特征在于,在所述启动目标进程对应框架结构下的升级框架之后,所述方法还包括:
通过统计外部程序访问引用计数,确定在软件升级之前所有外部程序的访问操作;
若所述所有外部程序的访问操作执行完毕,则基于所述用于控制内部资源升级的函数对待升级文件进行升级。
6.根据权利要求1所述的方法,其特征在于,所述目标进程对应框架结构下还包括基础功能实体,所述基础功能实体所使用的功能函数封装在所述待升级文件中,在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,所述方法还包括:
基于所述目标进程对应框架结构下的基础功能实体生成外部操作提供功能接口;
所述基于所述目标进程对应框架结构下的基础功能实体对外部访问请求提供功能接口,具体包括:
从所述待升级文件中提取所述基础功能实体所使用的功能函数;
根据所述基础功能实体所使用的功能函数,对外部操作提供功能接口。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述基于所述用于控制内部资源升级的函数对待升级文件进行升级之后,所述方法还包括:
按照所述待升级文件在运行过程中所用到资源函数的函数格式设置目标升级文件在运行过程中所用到资源数据的函数格式。
8.一种软件升级装置,其特征在于,所述装置包括:
启动单元,用于当接收到外部升级脚本发送至目标进程的升级指令时,启动目标进程对应框架结构下的升级框架,所述升级框架中封装有用于控制内部资源升级的函数以及用于控制外部资源访问的函数;
升级单元,用于基于所述用于控制内部资源升级的函数对待升级文件进行升级;
阻塞单元,用于在对所述待升级文件进行升级的过程中,基于所述用于控制外部资源访问的函数阻塞外部程序的访问操作。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910625561.3A CN110489140B (zh) | 2019-07-11 | 2019-07-11 | 软件升级方法、装置、计算机设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910625561.3A CN110489140B (zh) | 2019-07-11 | 2019-07-11 | 软件升级方法、装置、计算机设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489140A true CN110489140A (zh) | 2019-11-22 |
CN110489140B CN110489140B (zh) | 2023-06-06 |
Family
ID=68547052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910625561.3A Active CN110489140B (zh) | 2019-07-11 | 2019-07-11 | 软件升级方法、装置、计算机设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489140B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770108A (zh) * | 2004-11-05 | 2006-05-10 | 华为技术有限公司 | 软件在线升级的方法 |
CN101655801A (zh) * | 2009-09-11 | 2010-02-24 | 华为技术有限公司 | 驱动软件升级的方法及装置 |
CN101964725A (zh) * | 2010-09-01 | 2011-02-02 | 中兴通讯股份有限公司 | 业务不中断升级的方法和系统 |
CN103984585A (zh) * | 2014-06-06 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 一种Linux内核可热插拨内核模块运行时升级方法 |
CN104111848A (zh) * | 2014-06-27 | 2014-10-22 | 华中科技大学 | 一种基于异步检查点的多线程软件动态升级方法 |
US20160098443A1 (en) * | 2014-10-01 | 2016-04-07 | Juergen Specht | Data Access Management During Zero Downtime Upgrade |
CN107357647A (zh) * | 2017-05-24 | 2017-11-17 | 华为技术有限公司 | 一种组件更新的方法以及相关装置 |
CN107526615A (zh) * | 2017-08-31 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种业务运行过程中的单机程序升级方法及装置 |
CN107562434A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 升级文件的制作方法、升级方法、装置及设备 |
CN107748668A (zh) * | 2017-11-27 | 2018-03-02 | 北京奇安信科技有限公司 | 一种应用程序升级的方法及装置 |
CN107920074A (zh) * | 2017-11-17 | 2018-04-17 | 成都天翼空间科技有限公司 | 一种sdk自动升级方法、终端设备及主控服务器 |
CN108427571A (zh) * | 2018-02-07 | 2018-08-21 | 深圳市雁联计算系统有限公司 | 一种动态链接库更新方法及服务器 |
US20180276030A1 (en) * | 2017-03-27 | 2018-09-27 | International Business Machines Corporation | Off-the-shelf software component reuse in a cloud computing environment |
US20190146776A1 (en) * | 2016-04-27 | 2019-05-16 | Huawei Technologies Co., Ltd. | Patch-Upgrade-Based File Processing Method and Apparatus, Terminal, and Storage Medium |
CN109962797A (zh) * | 2017-12-23 | 2019-07-02 | 华为技术有限公司 | 一种存储系统和推送业务视图的方法 |
-
2019
- 2019-07-11 CN CN201910625561.3A patent/CN110489140B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770108A (zh) * | 2004-11-05 | 2006-05-10 | 华为技术有限公司 | 软件在线升级的方法 |
CN101655801A (zh) * | 2009-09-11 | 2010-02-24 | 华为技术有限公司 | 驱动软件升级的方法及装置 |
CN101964725A (zh) * | 2010-09-01 | 2011-02-02 | 中兴通讯股份有限公司 | 业务不中断升级的方法和系统 |
CN103984585A (zh) * | 2014-06-06 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 一种Linux内核可热插拨内核模块运行时升级方法 |
CN104111848A (zh) * | 2014-06-27 | 2014-10-22 | 华中科技大学 | 一种基于异步检查点的多线程软件动态升级方法 |
US20160098443A1 (en) * | 2014-10-01 | 2016-04-07 | Juergen Specht | Data Access Management During Zero Downtime Upgrade |
US20190146776A1 (en) * | 2016-04-27 | 2019-05-16 | Huawei Technologies Co., Ltd. | Patch-Upgrade-Based File Processing Method and Apparatus, Terminal, and Storage Medium |
CN107562434A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 升级文件的制作方法、升级方法、装置及设备 |
US20180276030A1 (en) * | 2017-03-27 | 2018-09-27 | International Business Machines Corporation | Off-the-shelf software component reuse in a cloud computing environment |
CN107357647A (zh) * | 2017-05-24 | 2017-11-17 | 华为技术有限公司 | 一种组件更新的方法以及相关装置 |
CN107526615A (zh) * | 2017-08-31 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种业务运行过程中的单机程序升级方法及装置 |
CN107920074A (zh) * | 2017-11-17 | 2018-04-17 | 成都天翼空间科技有限公司 | 一种sdk自动升级方法、终端设备及主控服务器 |
CN107748668A (zh) * | 2017-11-27 | 2018-03-02 | 北京奇安信科技有限公司 | 一种应用程序升级的方法及装置 |
CN109962797A (zh) * | 2017-12-23 | 2019-07-02 | 华为技术有限公司 | 一种存储系统和推送业务视图的方法 |
CN108427571A (zh) * | 2018-02-07 | 2018-08-21 | 深圳市雁联计算系统有限公司 | 一种动态链接库更新方法及服务器 |
Non-Patent Citations (2)
Title |
---|
纪大峣: "GFUAeD:一种嵌入式设备的通用固件升级方法", 《福建电脑》 * |
纪大峣: "GFUAeD:一种嵌入式设备的通用固件升级方法", 《福建电脑》, no. 06, 28 May 2018 (2018-05-28), pages 122 - 127 * |
Also Published As
Publication number | Publication date |
---|---|
CN110489140B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101963912B1 (ko) | 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법 | |
JP7090657B2 (ja) | アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体 | |
CN106250178B (zh) | 通过多语言云编译实现系统动态功能在线拦截扩展的方法 | |
CN106598667A (zh) | 用于修复内核漏洞的方法和装置 | |
US9928059B1 (en) | Automated deployment of a multi-version application in a network-based computing environment | |
CN106484394B (zh) | 一种双引擎快速软件开发系统 | |
CN103778178A (zh) | 用于重新配置虚拟机的快照的方法和系统 | |
WO2016160204A1 (en) | Application container for live migration of mobile applications | |
CN108141378B (zh) | Vnfd中的休眠vdu | |
CN104267981B (zh) | 一种加载桌面上的应用布局的方法及装置 | |
JP7493053B2 (ja) | イメージファイル生成方法、装置及びコンピュータプログラム | |
CN107077379B (zh) | 一种虚拟机创建方法和装置 | |
WO2012100535A1 (zh) | 超级内核组件的升级方法和计算机系统 | |
CN104834541B (zh) | 功能模块挂载方法、挂载系统及更新挂载系统的方法 | |
CN107368353B (zh) | 一种实现虚拟机内存热添加的方法和装置 | |
CN106953746A (zh) | 集群节点升级系统及方法 | |
US11544044B2 (en) | Methods, blockchain nodes, and storage media for executing smart contract | |
CN108733589A (zh) | 分布式事务热部署的实现方法和装置 | |
CN109240733A (zh) | 一种基于安卓系统更新广告sdk的方法及终端 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
CN109358842A (zh) | 一种服务实现方法、电子设备及存储介质 | |
CN107977243A (zh) | 一种第三方接口调用方法及装置 | |
CN106201584B (zh) | 版本升级方法及终端设备 | |
CN111385661B (zh) | 语音控制全屏播放的方法、装置、终端及存储介质 | |
WO2016177261A1 (zh) | 在线升级基于内核虚拟机模块的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |