CN107357647A - 一种组件更新的方法以及相关装置 - Google Patents
一种组件更新的方法以及相关装置 Download PDFInfo
- Publication number
- CN107357647A CN107357647A CN201710373583.6A CN201710373583A CN107357647A CN 107357647 A CN107357647 A CN 107357647A CN 201710373583 A CN201710373583 A CN 201710373583A CN 107357647 A CN107357647 A CN 107357647A
- Authority
- CN
- China
- Prior art keywords
- component
- assembly
- thread
- updated
- updating device
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种组件更新的方法,包括:接收组件更新指令;根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API;根据所述目标API确定访问所述第一组件的目标线程数量;若所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件。本申请还提供一种组件更新装置。本申请可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种组件更新的方法以及相关装置。
背景技术
如今,互联网行业快速发展,越来越多的在线业务随之涌现。随着业务规模的扩大,通过组件升级,为业务添加相应的新功能或者修复业务中的漏洞已成为了常见的技术手段。
目前一种常见的组件升级方式如图1所示,图1为现有技术中组件升级的方法的一个示意图,如图所示,组件D、组件E和组件F是依赖组件A的组件,将组件A从A0升级到A1(A0和A1是A的两种形式)分为两步,首先将A0卸载,此时所有依赖A0的组件D、组件E和组件F必须同时被卸载,然后再加载A1,同时加载组件D、组件E和组件F,并恢复系统运行。
然而,图1对应的组件升级方式还存在如下缺陷,请参阅图2,图2为现有技术中组件卸载触发进程异常的一个示意图,线程1和线程2恰好运行在A0中,若此时卸载A0,就会触发这线程1和线程2异常,从而引起整个进程的异常。
发明内容
本申请实施例提供了一种组件更新的方法以及相关装置,可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
本申请实施例的第一方面提供一种组件更新的方法,可以包括:
组件更新装置首先接收组件更新指令,其中,该组件更新指令可以是由系统管理员触发的,也可以是组件更新装置自动触发的;
接下来,该组件更新装置根据收到的组件更新指令,获取第一组件以及第一组件对应的目标API,其中,第一组件可以理解为是旧组件,即需要被更新的组件;
组件更新装置可以根据目标API统计得到的访问第一组件的线程数量确定目标线程数量;
如果当前统计到的目标线程数量小于或者等于预置门限,则可以将第一组件更新为第二组件。其中,第二组件可以理解为是新组件,即更新后得到的组件。
可见,通过上述方式,在对第一组件进行更新或升级之前,需要等待运行于第一组件的线程数量小于或等于预置门限,这样可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
在一种可能的设计中,在本申请实施例的第一方面的第一种实现方式中,第一组件可以包括封装层以及第一业务层,第二组件可以包含封装层以及第二业务层,其中,封装层包含用于外部组件调用的函数,第一业务层包含用于内部调用的函数;
组件更新装置将第一组件更新为第二组件的步骤具体包括:
组件更新装置将第一业务层更新为第二业务层,并根据第二业务层与封装层生成第二组件。换言之,在组件更新的过程中,实际上就是把第一业务层更新为第二业务层,而封装层得以沿用,第二组件就是由第二业务层和封装层构成的。
其次,本申请实施例中,将组件分离成封装层和业务层,API在封装层对应一个封装项,该封装项用于调用外部函数。而内部函数没有封装项,可以在业务层中直接调用。通过上述方式,由于API只是少部分,而大部分还是内部函数,因此无需解封装封装项,且可以直接调用内部函数的做法,可以有效地提升组件更新装置的性能。
在一种可能的设计中,在本申请实施例的第一方面的第二种实现方式中,组件更新装置根据组件更新指令获取第一组件以及第一组件对应的目标应用程序编程接口API之后,还可以包括如下步骤:
组件更新装置获取线程阻塞指令,其中,该线程阻塞指令可以是人为触发的,也可以是组件更新装置在获取到第一组件之后自动触发的。组件更新装置根据线程阻塞指令就可以阻止线程访问;
组件更新装置将线程阻塞指令加入至第一组件的封装层,该线程阻塞指令主要用于阻止线程访问第一组件。
再次,本申请实施例中,在组件更新装置根据所述组件更新指令获取第一组件以及第一组件对应的目标API之后,获取线程阻塞指令,并将线程阻塞指令加入至封装层,其中,线程阻塞指令用于阻止线程访问第一组件。通过上述方式,在第一组件更新期间,所有访问第一组件的线程都会被阻塞,从而保证了组件更新时的稳定性和可靠性。
在一种可能的设计中,在本申请实施例的第一方面的第三种实现方式中,将第一组件更新为第二组件之后,还可以包括如下步骤:
组件更新装置获取线程阻塞解除指令,线程阻塞解除指令与线程阻塞指令是相对的,线程阻塞指令用于阻止所有新访问组件(第一组件)的线程,而线程阻塞解除指令是用于唤醒被阻塞的线程,并允许这些线程直接访问组件(第二组件);
组件更新装置将线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示线程访问第二组件。至此完成对组件更新。
进一步地,本申请实施例中,在组件更新装置将第一组件更新为第二组件之后,会进一步获取线程阻塞解除指令,并将线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示当前进来的线程可以访问第二组件。通过上述方式,在组件升级更新完成后,还能够唤醒被阻塞的线程,使得这些线程可以访问第二组件,从而提升方案的可行性和可操作性。
在一种可能的设计中,在本申请实施例的第一方面的第四种实现方式中,组件更新装置根据组件更新指令获取第一组件以及第一组件对应的目标API,具体包括如下步骤:
组件更新装置根据组件更新指令获取第一组件;
与此同时,组件更新装置还可以获取第一组件对应的目标API,其中,目标API用于统计访问第一组件的线程数量;
于是,组件更新装置根据目标API确定访问第一组件的目标线程数量,具体可以包括如下步骤:
组件更新装置根据目标API统计得到的访问第一组件的线程数量确定目标线程数量。
其次,本申请实施例中,组件更新装置首先根据组件更新指令获取第一组件,进而获取第一组件对应的目标API,该目标API用于统计访问所一组件的线程数量,这样的话,也就可以根据目标API了解目标线程数量。通过上述方式,可以使得组件更新装置更准确地确定目标线程数量,为方案的实现提供具体实现方式,以此提升方案的实用性。
在一种可能的设计中,在本申请实施例的第一方面的第五种实现方式中,组件更新装置将第一组件更新为第二组件之前,还可以包括如下步骤:
首先组件更新装置需要存储第一组件中的历史运行数据,历史运行数据主要为依赖于第一组件运行时所产生的数据;
组件更新装置将第一组件更新为第二组件,具体可以包括如下步骤:
在第一组件更新为第二组件的过程中,将第一组件中的历史运行数据发送至第二组件。这样的话,第二组件就能继续沿用第一组件中已经生成的历史运行数据,从而保证系统在运行期间不会发生变化。
其次,本申请实施例中,在组件更新装置将所述第一组件更新为第二组件之前,还需要预先存储第一组件中的历史运行数据,然后在组件更新的过程中,也就行历史运行数据的同步。通过上述方式,可以使得第二组件能够继续沿用第一组件中的历史运行数据,以保证系统的连续运行,从而提升方案的可行性和可操作性。
在一种可能的设计中,在本申请实施例的第一方面的第六种实现方式中若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件,具体包括如下步骤:
如果目标线程数量为0,则将第一组件更新为第二组件。其中,第二组件可以理解为是新组件,即更新后得到的组件。
更进一步地,本申请实施例中,当检测到目标线程数量为0时,说明当前已经没有任何线程调用第一组件了,这时再将第一组件更新为第二组件能够更大程度地提升组件更新的可靠性和安全性。与此同时,本申请在检测到第一组件已经不再被系统访问之后,再加载第二组件,并进行升级替换,可以有效地保证系统的以执行,即更新之前访问的都是第一组件,而更新之后访问的都是第二组件,不存在两个组件同时被访问的情况,从而提升方案的实用性和一致性。
本申请实施例第二方面提供了一种组件更新装置,可以包括:
接收模块,用于接收组件更新指令;
第一获取模块,用于根据接收模块接收的组件更新指令获取第一组件以及第一组件对应的目标应用程序编程接口API;
确定模块,用于根据第一获取模块获取的目标API确定访问第一组件的目标线程数量;
更新模块,用于若确定模块确定的目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。
在一种可能的设计中,在本申请实施例的第二方面的第一种实现方式中,第一组件包括封装层以及第一业务层,第二组件包含封装层以及第二业务层,其中,封装层包含用于外部组件调用的函数,第一业务层包含用于内部调用的函数;
更新模块可以包括:
生成单元,用于将第一业务层更新为第二业务层,并根据第二业务层与封装层生成第二组件。
在一种可能的设计中,在本申请实施例的第二方面的第二种实现方式中,组件更新装置还可以包括:
第二获取模块,用于第一获取模块根据组件更新指令获取第一组件以及第一组件对应的目标API之后,获取线程阻塞指令;
第一加入模块,用于将第二获取模块获取的线程阻塞指令加入至封装层,其中,线程阻塞指令用于阻止线程访问第一组件。
在一种可能的设计中,在本申请实施例的第二方面的第三种实现方式中,组件更新装置还可以包括:
第三获取模块,用于更新模块将第一组件更新为第二组件之后,获取线程阻塞解除指令;
第二加入模块,用于将第三获取模块获取的所线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示线程访问第二组件。
在一种可能的设计中,在本申请实施例的第二方面的第四种实现方式中,第一获取模块可以包括:
第一获取单元,用于根据组件更新指令获取所第一组件;
第二获取单元,用于获取第一获取单元获取的第一组件对应的目标API,其中,目标API用于统计访问第一组件的线程数量;
确定模块可以包括:
确定单元,用于根据目标API统计得到的访问第一组件的线程数量确定目标线程数量。
在一种可能的设计中,在本申请实施例的第二方面的第五种实现方式中,组件更新装置还可以包括:
存储模块,用于更新模块将第一组件更新为第二组件之前,存储第一组件中的历史运行数据;
更新模块包括:
发送单元,用于将第一组件中的历史运行数据发送至第二组件,并完成第二组件的更新。
在一种可能的设计中,在本申请实施例的第二方面的第六种实现方式中,更新模块可以包括:
更新单元,用于若目标线程数量为0,则将第一组件更新为第二组件。
本申请实施例第三方面提供一种计算机设备,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当该服务器运行时,该处理器执行该存储器存储的该计算机执行指令,以使该服务器执行如上述任一方面的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,用于储存为上述方法所用的计算机软件指令,当其在计算机上运行时,使得计算机可以执行上述中任一方面的方法。
本申请实施例第五方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述任一方面的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,提供了一种组件更新的方法,首先接收组件更新指令,然后根据组件更新指令获取第一组件以及第一组件对应的目标应用程序编程接口API,接下来根据目标API确定访问第一组件的目标线程数量,若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。通过上述方式,在对第一组件进行更新或升级之前,需要等待运行于第一组件的线程数量小于或等于预置门限,这样可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
附图说明
图1为现有技术中组件升级的方法的一个示意图;
图2为现有技术中组件卸载触发进程异常的一个示意图;
图3为本申请实施例中组件更新的一个流程示意图;
图4为本申请实施例中组件更新的方法一个实施例示意图;
图5为本申请实施例中组件更新的方法另一个实施例示意图;
图6为本申请实施例中组件更新过程的一个实施例示意图;
图7为本申请应用场景中组件独立更新的一个示意图;
图8为本申请应用场景中组件卸载的一个示意图;
图9为本申请应用场景中组件状态同步的一个示意图;
图10为本申请实施例中组件更新装置一个实施例示意图;
图11为本申请实施例中组件更新装置另一个实施例示意图;
图12为本申请实施例中组件更新装置另一个实施例示意图;
图13为本申请实施例中组件更新装置另一个实施例示意图;
图14为本申请实施例中组件更新装置另一个实施例示意图;
图15为本申请实施例中组件更新装置另一个实施例示意图;
图16为本申请实施例中组件更新装置另一个实施例示意图;
图17为本申请实施例中组件更新装置一个实施例示意图。
具体实施方式
本申请实施例提供了一种组件更新的方法以及相关装置,可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请主要应用于组件的更新或升级,更新或升级的目可以是添加新特性和/或修复漏洞等,对于组件的更新或升级而言,不需要复位进程,可以直接替换组件,通常只需要毫秒级的时间。
在大型软件系统中存在多个进程,有些进程是关键中心节点进程,只能存在一个单实例,一旦复位,会导致整个设备复位,业务中断时间达到分钟级。一个进程通常有几个至几百个组件,每个组件完成独立的功能特性,而且每个组件会提供一些标准且简单的应用接口,允许使用者设置和调整参数和属性。用户可以将不同来源的多个组件有机地结合在一起,快速构成一个符合实际需要的复杂应用程序。
普通的面向过程和面向对象的编程,一般会生成两种类型的软件——针对特定应用的可执行程序和面向通用编程的应用程序编译接口(application programminginterface,API)库。
为了便于理解,请参阅图3,图3为本申请实施例中组件更新的一个流程示意图,如图所示,具体为:
步骤101中,由系统管理员触发升级流程,即向管理器下达升级指令;
步骤102中,管理器安装新的组件;
步骤103中,管理器触发初始化新组件的操作,并且新组件会在步骤104中向管理器发送初始化完成消息;
步骤105中,管理器根据新组件发送的初始化完成消息,向旧组件发送停止指令,准备停止旧组件的运行,旧组件在步骤106中根据停止指令准备停止运行;
步骤107中,管理器等旧组件准备完成后,控制旧组件停止运行,旧组件在步骤108中停止运行,并向管理器发送停止反馈信息;
步骤109中,管理器启动新组件,而旧组件将在步骤110中同步状态数据,使得新组件继续使用旧组件中的状态数据,保证数据的完整性和持续性;
步骤111中,新组件完成启动,在步骤112中管理器将通知系统管理员此时组件的升级或更新已完成。
请参阅图4,本申请实施例中组件更新的处理方法一个实施例包括:
201、接收组件更新指令;
本实施例中,组件更新装置首先接收组件更新指令,其中,该组件更新指令可以是由系统管理员触发的,也可以是组件更新装置自动触发的。组件更新装置自动触发组件更新指令的情况可以是,当检测到存在新组件时自动触发,或者定期进行触发。
202、根据组件更新指令获取第一组件以及第一组件对应的目标API;
本实施例中,组件更新装置根据收到的组件更新指令,获取第一组件以及第一组件对应的目标API。其中,第一组件可以理解为是旧组件,即需要被更新的组件。
第一组件包含了两个重要的部分,即封装层和第一业务层,封装层包含了用于外部组件调用的函数,而第一业务层包含用于内部调用的函数。
具体地,封装层是由第一组件中所有对外API列表生成的,每个API生成一项内容,每项内容包含线程阻塞指令、入口加法计数、钩子调用以及出口减法计数。其中,线程阻塞指令用于在第一组件升级时,自动阻塞访问第一组件的线程。入口加法计数用于在真正调用第一业务层中的函数之前进行调用次数统计,即做加法计算。钩子调用用于实现对第一业务层中函数的调用。出口减法计数用于在调用第一业务层中的函数之后进行调用次数统计,即做减法计算。
组件更新装置根据组件更新指令获取第一组件以及第一组件对应的目标API的具体过程为,组件更新装置先获取第一组件,然后从第一组件中得到封装层和第一业务层。根据封装层对应的API列表进一步获取目标API,目标API是用于统计访问第一组件线程数量的。根据入口加法计数和出口减法计数,就可以统计当前访问第一组件的线程数量。
203、根据目标API确定访问第一组件的目标线程数量;
本实施例中,组件更新装置获取第一组件对应的目标API之后,可以根据目标API统计得到的访问第一组件的线程数量确定目标线程数量。
具体地,通过目标API统计得到的访问第一组件的线程数量,就能够快速准确地得到当前目标线程数量。
204、若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。
本实施例中,如果当前统计到的目标线程数量小于或者等于预置门限,那么就可以将第一组件更新为第二组件。
通常情况下,为了提升组件升级的可靠性,可以将预置门限设置为0,这样的话,如果目标线程数量为0,则将第一组件更新为第二组件。其中,第二组件可以理解为是新组件,即更新后得到的组件。
第二组件也包含了两个重要的部分,即封装层和第二业务层,封装层包含了用于外部组件调用的函数,而第二业务层包含用于内部调用的函数。在组件更新的过程中,实际上就是把第一业务层更新为第二业务层,而封装层得以沿用,第二组件就是由第二业务层和封装层构成的。
可以理解的是,在组件更新装置将第一组件更新为第二组件之前,需要存储第一组件中的历史运行数据。历史运行数据主要为依赖于第一组件运行时所产生的数据,然后在第一组件更新为第二组件的过程中,将第一组件中的历史运行数据发送至第二组件。这样的话,第二组件就能继续沿用第一组件中已经生成的历史运行数据,从而保证系统在运行期间不会发生变化。
本申请实施例中,提供了一种组件更新的方法,首先接收组件更新指令,然后根据组件更新指令获取第一组件以及第一组件对应的目标应用程序编程接口API,接下来根据目标API确定访问第一组件的目标线程数量,若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。通过上述方式,在对第一组件进行更新或升级之前,需要等待运行于第一组件的线程数量小于或等于预置门限,这样可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
请参阅图5,本申请实施例中组件更新的处理方法一个实施例包括:
301、接收组件更新指令;
本实施例中,组件更新装置首先接收组件更新指令,其中,该组件更新指令可以是由系统管理员触发的,也可以是组件更新装置自动触发的。组件更新装置自动触发组件更新指令的情况可以是,当检测到存在新组件时自动触发,或者定期进行触发。
302、根据组件更新指令获取第一组件以及第一组件对应的目标API;
本实施例中,组件更新装置根据收到的组件更新指令,获取第一组件以及第一组件对应的目标API。其中,第一组件可以理解为是旧组件,即需要被更新的组件。
第一组件包含了两个重要的部分,即封装层和第一业务层,封装层包含了用于外部组件调用的函数,而第一业务层包含用于内部调用的函数。关于封装层的相关内容可参阅上述步骤202,此处不做赘述。
组件更新装置根据组件更新指令获取第一组件以及第一组件对应的目标API的具体过程为,组件更新装置先获取第一组件,然后从第一组件中得到封装层和第一业务层。根据封装层对应的API列表进一步获取目标API,目标API是用于统计访问第一组件线程数量的。根据入口加法计数和出口减法计数,就可以统计当前访问第一组件的线程数量。
303、获取线程阻塞指令;
本实施例中,组件更新装置获取线程阻塞指令,其中,该线程阻塞指令可以是人为触发的,也可以是组件更新装置在获取到第一组件之后自动触发的。组件更新装置根据线程阻塞指令就可以阻止线程访问。
304、将线程阻塞指令加入至封装层,其中,线程阻塞指令用于阻止线程访问第一组件;
本实施例中,组件更新装置将线程阻塞指令加入至第一组件的封装层,该线程阻塞指令主要用于阻止线程访问第一组件。
305、根据目标API确定访问第一组件的目标线程数量;
本实施例中,组件更新装置获取第一组件对应的目标API之后,可以根据目标API统计得到的访问第一组件的线程数量确定目标线程数量。具体地,通过目标API统计得到的访问第一组件的线程数量,就能够快速准确地得到当前目标线程数量。
需要说明的是,步骤305可以在步骤302之后实现,也可以在步骤304之后实现,此处不对步骤305的执行顺序进行限定。
306、若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件;
本实施例中,如果当前统计到的目标线程数量小于或者等于预置门限,那么就可以将第一组件更新为第二组件。通常情况下,为了提升组件升级的可靠性,可以将预置门限设置为0,这样的话,如果目标线程数量为0,则将第一组件更新为第二组件。其中,第二组件可以理解为是新组件,即更新后得到的组件。
第二组件也包含了两个重要的部分,即封装层和第二业务层,封装层包含了用于外部组件调用的函数,而第二业务层包含用于内部调用的函数。在组件更新的过程中,实际上就是把第一业务层更新为第二业务层,而封装层得以沿用,第二组件就是由第二业务层和封装层构成的。
可以理解的是,在组件更新装置将第一组件更新为第二组件之前,需要存储第一组件中的历史运行数据。历史运行数据主要为依赖于第一组件运行时所产生的数据,然后在第一组件更新为第二组件的过程中,将第一组件中的历史运行数据发送至第二组件。这样的话,第二组件就能继续沿用第一组件中已经生成的历史运行数据,从而保证系统在运行期间不会发生变化。
307、获取线程阻塞解除指令;
本实施例中,组件更新装置在完成组件更新后,进而获取线程阻塞解除指令。线程阻塞解除指令与线程阻塞指令是相对的,线程阻塞指令用于阻止所有新访问组件(第一组件)的线程,而线程阻塞解除指令是用于唤醒被阻塞的线程,并允许这些线程直接访问组件(第二组件)。
308、将线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示线程访问第二组件。
本实施例中,最后组件更新装置将线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示线程访问第二组件。至此完成对组件更新。
为便于理解,下面将结合图6接介绍组件更新的具体过程,请参阅图6,图6为本申请实施例中组件更新过程的一个实施例示意图,具体地:
组件X包含了两个部分,即封装层X’以及第一业务层X0(升级后为X1)。其中封装层X’由组件X中所有对外API列表生成,每个API生成一个封装项,每个封装项包含以下内容:
(1)阻塞指令,即若组件X在升级,自动阻塞访问X的线程;
(2)入口计数加,在真正调用X0中的函数前,进行调用计数,标识开始对组件X的函数调用开始;
(3)钩子调用,实现对X0中函数的调用(即如图6中的Afunc01);
(4)出口计数减,出口处对计数减,标识对组件X的函数调用结束。组件X0为真正的组件实现,定义了组件的数据状态和指令代码。其中,出口和入口操作的是同一个计数,且一个API对应于一个计数。
需要说明的是,对于入口计数和出口计数而言,可以是从入口进来一个线程就做“+1”的处理,从出口处结束一个线程就做“-1”的处理,也可以进行多个线程的处理,例如,从入口进来N个线程就做“+N”的处理,从出口处结束M个线程就做“-M”的处理,此处不对计数方式进行限定。
组件X从X0更新到X1,组件Y依赖组件X,并且组件Y的函数Bfunc01在步骤401中调用了组件X的函数Afunc01,调用流程需要经过组件X的封装层X’,封装层X’的作用是为了隔离Y和X0,以及隔离Y和X1。更新期间,封装层X’不变化,将X0替换为X1,组件Y完全不感知,从而实现组件独立更新。
更新开始后,所有即将访问组件X的线程都会被封装层线程阻塞指令暂停,保证更新期间不会有新的线程访问组件X。对于已经在访问组件X的线程,通过入口的计数和出口的计数判断是否还在访问组件X,当计数为零,则不再访问,否则仍然在。若组件X的封装层X’所有API的计数均为零,则组件X0当前没有被系统访问,因访问入口被阻塞,后续也不会再访问X0,此时X0可以被安全可靠卸载。
对于数据状态同步,在确认X0不会被系统访问后,X0的数据状态保持不变,此时加载X1并初始化,然后将数据状态处理后同步到X1即可。然后卸载X0,将X’的阻塞解除,系统自动访问X1,完成组件更新。
升级期间,X’阻塞了系统的访问,X0和X1不会同时被访问,实现了升级一致性。
封装层对性能有一定损耗,为了最小化影响,将组件X的函数分为两部分:API和内部函数。API只可能被外部组件直接调用的函数;内部函数指只能被组件X直接调用的函数。对于API才在组件X’存在对应的封装项,而内部函数不存在对应的封装项,因此可以直接调用。
为便于理解,下面可以以一个具体应用场景对本申请中对组件升级的流程进行详细描述,具体为:
请参阅图7,图7为本申请应用场景中组件独立更新的一个示意图,如图所示,组件独立更新的方案可以分为两个步骤,首先卸载A0(A0和A1是组件A的两种形态),但是依赖A0的组件D、组件E和组件F无变化,不进行卸载。然后加载A1,保证组件独立升级,避免耦合,同时提升升级效率。
请参阅图8,图8为本申请应用场景中组件卸载的一个示意图,组件卸载流程如图8,首先对A0插入阻塞,不允许系统中线程再访问A0,然后检测等待所有已经访问A0的线程(如图8中的线程1和线程2)离开。最后卸载A0,此时系统中没有任何线程访问A0,因此卸载时安全可靠的。
请参阅图9,图9为本申请应用场景中组件状态同步的一个示意图,组件可分为两部分,一是数据状态,二是代码指令。从A0升级到A1,A0保存了组件的历史运行数据状态,需要经过一定处理然后同步到A1,以保持系统正确运行。否则升级A1处于初始化状态,这通常对于连续运行的系统,是错误的状态,会导致系统异常。对于代码指令,正式需要升级的部分,而且系统运行期间不会变化,可以直接升级。
对于组件一致性,本申请中,可以先使组件A0完全隔离,不会被访问,然后再加载新组件A1并启动,从而保证一致性。
下面对本申请中的组件更新装置进行详细描述,请参阅图10,本申请实施例中的组件更新装置40包括:
接收模块401,用于接收组件更新指令;
第一获取模块402,用于根据所述接收模块401接收的所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API;
确定模块403,用于根据所述第一获取模块402获取的所述目标API确定访问所述第一组件的目标线程数量;
更新模块404,用于若所述确定模块403确定的所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件。
本实施例中,接收模块401接收组件更新指令,第一获取模块402根据所述接收模块401接收的所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API,确定模块403根据所述第一获取模块402获取的所述目标API确定访问所述第一组件的目标线程数量,若所述确定模块403确定的所述目标线程数量小于或等于预置门限,则更新模块404将所述第一组件更新为第二组件。
本申请实施例中,提供了一种组件更新装置,首先组件更新装置接收组件更新指令,然后组件更新装置根据组件更新指令获取第一组件以及第一组件对应的目标应用程序编程接口API,接下来根据目标API确定访问第一组件的目标线程数量,若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。通过上述方式,在对第一组件进行更新或升级之前,需要等待运行于第一组件的线程数量小于或等于预置门限,这样可以有效地防止因为卸载第一组件而导致较多线程出现异常,从而提升组件更新和升级的可靠性和安全性。
可选地,在上述图10所对应的实施例的基础上,请参阅图11,本申请实施例提供的组件更新装置40的另一实施例中,所述第一组件包括封装层以及第一业务层,所述第二组件包含所述封装层以及第二业务层,其中,所述封装层包含用于外部组件调用的函数,所述第一业务层包含用于内部调用的函数;
所述更新模块404包括:
生成单元4041,用于将所述第一业务层更新为第二业务层,并根据所述第二业务层与所述封装层生成所述第二组件。
其次,本申请实施例中,将组件分离成封装层和业务层,API在封装层对应一个封装项,该封装项用于调用外部函数。而内部函数没有封装项,可以在业务层中直接调用。通过上述方式,由于API只是少部分,而大部分还是内部函数,因此无需解封装封装项,且可以直接调用内部函数的做法,可以有效地提升组件更新装置的性能。
可选地,在上述图11所对应的实施例的基础上,请参阅图12,本申请实施例提供的组件更新装置40的另一实施例中,
所述组件更新装置40还包括:
第二获取模块405,用于所述第一获取模块402根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API之后,获取线程阻塞指令;
第一加入模块406,用于将所述第二获取模块405获取的所述线程阻塞指令加入至所述封装层,其中,所述线程阻塞指令用于阻止线程访问所述第一组件。
再次,本申请实施例中,在组件更新装置根据所述组件更新指令获取第一组件以及第一组件对应的目标API之后,获取线程阻塞指令,并将线程阻塞指令加入至封装层,其中,线程阻塞指令用于阻止线程访问第一组件。通过上述方式,在第一组件更新期间,所有访问第一组件的线程都会被阻塞,从而保证了组件更新时的稳定性和可靠性。
可选地,在上述图12所对应的实施例的基础上,请参阅图13,本申请实施例提供的组件更新装置40的另一实施例中,
所述组件更新装置40还包括:
第三获取模块407,用于所述更新模块404将所述第一组件更新为第二组件之后,获取线程阻塞解除指令;
第二加入模块408,用于将所述第三获取模块407获取的所述线程阻塞解除指令加入至所述封装层,其中,所述线程阻塞解除指令用于指示线程访问所述第二组件。
进一步地,本申请实施例中,在组件更新装置将第一组件更新为第二组件之后,会进一步获取线程阻塞解除指令,并将线程阻塞解除指令加入至封装层,其中,线程阻塞解除指令用于指示当前进来的线程可以访问第二组件。通过上述方式,在组件升级更新完成后,还能够唤醒被阻塞的线程,使得这些线程可以访问第二组件,从而提升方案的可行性和可操作性。
可选地,在上述图10所对应的实施例的基础上,请参阅图14,本申请实施例提供的组件更新装置40的另一实施例中,
所述第一获取模块402包括:
第一获取单元4021,用于根据所述组件更新指令获取所述第一组件;
第二获取单元4022,用于获取所述第一获取单元4021获取的所述第一组件对应的目标API,其中,所述目标API用于统计访问所述第一组件的线程数量;
所述确定模块403包括:
确定单元4031,用于根据所述目标API统计得到的访问所述第一组件的线程数量确定所述目标线程数量。
其次,本申请实施例中,组件更新装置首先根据组件更新指令获取第一组件,进而获取第一组件对应的目标API,该目标API用于统计访问所一组件的线程数量,这样的话,也就可以根据目标API了解目标线程数量。通过上述方式,可以使得组件更新装置更准确地确定目标线程数量,为方案的实现提供具体实现方式,以此提升方案的实用性。
可选地,在上述图10所对应的实施例的基础上,请参阅图15,本申请实施例提供的组件更新装置40的另一实施例中,
所述组件更新装置40还包括:
存储模块409,用于所述更新模块404将所述第一组件更新为第二组件之前,存储所述第一组件中的历史运行数据;
所述更新模块404包括:
发送单元4042,用于将所述第一组件中的所述历史运行数据发送至所述第二组件,并完成所述第二组件的更新。
其次,本申请实施例中,在组件更新装置将所述第一组件更新为第二组件之前,还需要预先存储第一组件中的历史运行数据,然后在组件更新的过程中,也就行历史运行数据的同步。通过上述方式,可以使得第二组件能够继续沿用第一组件中的历史运行数据,以保证系统的连续运行,从而提升方案的可行性和可操作性。
可选地,在上述图10至图15中任一项所对应的实施例的基础上,请参阅图16,本申请实施例提供的组件更新装置40的另一实施例中,
所述更新模块404包括:
更新单元4043,用于若所述目标线程数量为0,则将所述第一组件更新为第二组件。
更进一步地,本申请实施例中,当检测到目标线程数量为0时,说明当前已经没有任何线程调用第一组件了,这时再将第一组件更新为第二组件能够更大程度地提升组件更新的可靠性和安全性。与此同时,本申请在检测到第一组件已经不再被系统访问之后,再加载第二组件,并进行升级替换,可以有效地保证系统的以执行,即更新之前访问的都是第一组件,而更新之后访问的都是第二组件,不存在两个组件同时被访问的情况,从而提升方案的实用性和一致性。
图17是本申请实施例组件更新装置50的结构示意图。组件更新装置50可包括输入设备510、输出设备520、处理器530和存储器540。本申请实施例中的输出设备可以是显示设备。
存储器540可以包括只读存储器和随机存取存储器,并向处理器530提供指令和数据。存储器540的一部分还可以包括非易失性随机存取存储器(Non-Volatile RandomAccess Memory,NVRAM)。
存储器540存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
本申请实施例中处理器530用于:
控制输入设备510接收组件更新指令;
根据组件更新指令获取第一组件以及第一组件对应的目标API;
根据目标API确定访问第一组件的目标线程数量;
若目标线程数量小于或等于预置门限,则将第一组件更新为第二组件。
处理器530控制组件更新装置50的操作,处理器530还可以称为中央处理单元(Central Processing Unit,CPU)。存储器540可以包括只读存储器和随机存取存储器,并向处理器530提供指令和数据。存储器540的一部分还可以包括NVRAM。具体的应用中,组件更新装置50的各个组件通过总线系统550耦合在一起,其中总线系统550除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统550。
上述本申请实施例揭示的方法可以应用于处理器530中,或者由处理器530实现。处理器530可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器530中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器530可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器540,处理器530读取存储器540中的信息,结合其硬件完成上述方法的步骤。
图17的相关描述可以参阅方法部分的相关描述和效果进行理解,本处不做过多赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种组件更新的方法,其特征在于,包括:
接收组件更新指令;
根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API;
根据所述目标API确定访问所述第一组件的目标线程数量;
若所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件。
2.根据权利要求1所述的方法,其特征在于,所述第一组件包括封装层以及第一业务层,所述第二组件包含所述封装层以及第二业务层,其中,所述封装层包含用于外部组件调用的函数,所述第一业务层包含用于内部调用的函数;
所述将所述第一组件更新为第二组件,包括:
将所述第一业务层更新为第二业务层,并根据所述第二业务层与所述封装层生成所述第二组件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API之后,所述方法还包括:
获取线程阻塞指令;
将所述线程阻塞指令加入至所述封装层,其中,所述线程阻塞指令用于阻止线程访问所述第一组件。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一组件更新为第二组件之后,所述方法还包括:
获取线程阻塞解除指令;
将所述线程阻塞解除指令加入至所述封装层,其中,所述线程阻塞解除指令用于指示线程访问所述第二组件。
5.根据权利要求1所述的方法,其特征在于,所述根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API,包括:
根据所述组件更新指令获取所述第一组件;
获取所述第一组件对应的目标API,其中,所述目标API用于统计访问所述第一组件的线程数量;
所述根据所述目标API确定访问所述第一组件的目标线程数量,包括:
根据所述目标API统计得到的访问所述第一组件的线程数量确定所述目标线程数量。
6.根据权利要求1所述的方法,其特征在于,所述将所述第一组件更新为第二组件之前,所述方法还包括:
存储所述第一组件中的历史运行数据;
所述将所述第一组件更新为第二组件,包括:
将所述第一组件中的所述历史运行数据发送至所述第二组件,并完成所述第二组件的更新。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述若所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件,包括:
若所述目标线程数量为0,则将所述第一组件更新为第二组件。
8.一种组件更新装置,其特征在于,包括:
接收模块,用于接收组件更新指令;
第一获取模块,用于根据所述接收模块接收的所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API;
确定模块,用于根据所述第一获取模块获取的所述目标API确定访问所述第一组件的目标线程数量;
更新模块,用于若所述确定模块确定的所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件。
9.根据权利要求8所述的组件更新装置,其特征在于,所述第一组件包括封装层以及第一业务层,所述第二组件包含所述封装层以及第二业务层,其中,所述封装层包含用于外部组件调用的函数,所述第一业务层包含用于内部调用的函数;
所述更新模块包括:
生成单元,用于将所述第一业务层更新为第二业务层,并根据所述第二业务层与所述封装层生成所述第二组件。
10.根据权利要求9所述的组件更新装置,其特征在于,所述组件更新装置还包括:
第二获取模块,用于所述第一获取模块根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API之后,获取线程阻塞指令;
第一加入模块,用于将所述第二获取模块获取的所述线程阻塞指令加入至所述封装层,其中,所述线程阻塞指令用于阻止线程访问所述第一组件。
11.根据权利要求10所述的组件更新装置,其特征在于,所述组件更新装置还包括:
第三获取模块,用于所述更新模块将所述第一组件更新为第二组件之后,获取线程阻塞解除指令;
第二加入模块,用于将所述第三获取模块获取的所述线程阻塞解除指令加入至所述封装层,其中,所述线程阻塞解除指令用于指示线程访问所述第二组件。
12.根据权利要求8所述的组件更新装置,其特征在于,所述第一获取模块包括:
第一获取单元,用于根据所述组件更新指令获取所述第一组件;
第二获取单元,用于获取所述第一获取单元获取的所述第一组件对应的目标API,其中,所述目标API用于统计访问所述第一组件的线程数量;
所述确定模块包括:
确定单元,用于根据所述目标API统计得到的访问所述第一组件的线程数量确定所述目标线程数量。
13.根据权利要求8所述的组件更新装置,其特征在于,所述组件更新装置还包括:
存储模块,用于所述更新模块将所述第一组件更新为第二组件之前,存储所述第一组件中的历史运行数据;
所述更新模块包括:
发送单元,用于将所述第一组件中的所述历史运行数据发送至所述第二组件,并完成所述第二组件的更新。
14.根据权利要求8至13中任一项所述的组件更新装置,其特征在于,所述更新模块包括:
更新单元,用于若所述目标线程数量为0,则将所述第一组件更新为第二组件。
15.一种组件更新装置,其特征在于,包括存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,具体包括如下步骤:
控制所述收发器接收组件更新指令;
根据所述组件更新指令获取第一组件以及所述第一组件对应的目标应用程序编程接口API;
根据所述目标API确定访问所述第一组件的目标线程数量;
若所述目标线程数量小于或等于预置门限,则将所述第一组件更新为第二组件;
所述总线系统用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信。
16.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710373583.6A CN107357647A (zh) | 2017-05-24 | 2017-05-24 | 一种组件更新的方法以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710373583.6A CN107357647A (zh) | 2017-05-24 | 2017-05-24 | 一种组件更新的方法以及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107357647A true CN107357647A (zh) | 2017-11-17 |
Family
ID=60271356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710373583.6A Pending CN107357647A (zh) | 2017-05-24 | 2017-05-24 | 一种组件更新的方法以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107357647A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489140A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 软件升级方法、装置、计算机设备及计算机存储介质 |
CN112596761A (zh) * | 2020-12-15 | 2021-04-02 | 泰康保险集团股份有限公司 | 服务的更新发布方法、装置及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110000A (zh) * | 2009-12-25 | 2011-06-29 | 康佳集团股份有限公司 | 一种软件自动升级控制方法、装置及设备 |
CN103699631A (zh) * | 2013-12-20 | 2014-04-02 | 贝壳网际(北京)安全技术有限公司 | 一种桌面组件中功能部件的显示方法、桌面组件及移动终端 |
CN103885806A (zh) * | 2014-04-02 | 2014-06-25 | 深圳市兰丁科技有限公司 | 机顶盒的系统软件在线升级的实现方法和装置 |
CN104899057A (zh) * | 2015-05-13 | 2015-09-09 | 北京金山安全软件有限公司 | 软件模块的更新方法和装置 |
CN106528204A (zh) * | 2016-10-12 | 2017-03-22 | 杭州华为数字技术有限公司 | 用于升级系统的方法和装置 |
-
2017
- 2017-05-24 CN CN201710373583.6A patent/CN107357647A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110000A (zh) * | 2009-12-25 | 2011-06-29 | 康佳集团股份有限公司 | 一种软件自动升级控制方法、装置及设备 |
CN103699631A (zh) * | 2013-12-20 | 2014-04-02 | 贝壳网际(北京)安全技术有限公司 | 一种桌面组件中功能部件的显示方法、桌面组件及移动终端 |
CN103885806A (zh) * | 2014-04-02 | 2014-06-25 | 深圳市兰丁科技有限公司 | 机顶盒的系统软件在线升级的实现方法和装置 |
CN104899057A (zh) * | 2015-05-13 | 2015-09-09 | 北京金山安全软件有限公司 | 软件模块的更新方法和装置 |
CN106528204A (zh) * | 2016-10-12 | 2017-03-22 | 杭州华为数字技术有限公司 | 用于升级系统的方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489140A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 软件升级方法、装置、计算机设备及计算机存储介质 |
CN112596761A (zh) * | 2020-12-15 | 2021-04-02 | 泰康保险集团股份有限公司 | 服务的更新发布方法、装置及相关设备 |
CN112596761B (zh) * | 2020-12-15 | 2023-09-22 | 泰康保险集团股份有限公司 | 服务的更新发布方法、装置及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7337311B2 (en) | Method for controlling upgrade of firmware | |
CN103399840B (zh) | 一种计算机配置文件的带外修改方法及计算机 | |
KR20120052406A (ko) | 펌웨어 이미지 갱신 및 관리 | |
JP2001325150A (ja) | アクセス監視装置及びアクセス監視方法 | |
CN110324400A (zh) | 经由逻辑架构意识的即开即用解决方案级管理的系统和方法 | |
CN106325857B (zh) | 一种电子设备及电子设备控制方法 | |
CN109828772A (zh) | 热更新方法、操作系统、终端设备和存储介质 | |
US9336022B2 (en) | Universal serial bus (USB) device and a USB system including the same | |
CN107273169A (zh) | 一种存储控制器集群的软件在线升级方法及系统 | |
CN107608705A (zh) | 一种无线wifi视频设备及其固件升级方法 | |
CN107479937A (zh) | 一种多节点集群交叉升级的方法 | |
CN107656750A (zh) | 插件更新方法及装置 | |
CN107357647A (zh) | 一种组件更新的方法以及相关装置 | |
CN109165034A (zh) | 基于ota的pos机升级方法、装置、设备及存储介质 | |
US11579977B2 (en) | Data storage device restoring method | |
US20080010315A1 (en) | Platform management of high-availability computer systems | |
CN103902383A (zh) | 一种基于继承机制的资源管理器设计方法 | |
CN104657685A (zh) | 保护非易失性存储器中存储的程序代码的装置 | |
CN110868310A (zh) | Cdn边缘节点的上下线方法、装置、系统 | |
CN109491951B (zh) | 一种配置数据的方法以及计算设备 | |
CN110442493A (zh) | 一种自动化服务管理系统及方法 | |
CN109189444A (zh) | 一种服务器虚拟化系统的管理节点的升级控制方法及装置 | |
CN115729573A (zh) | 固件升级方法、装置、芯片及计算机存储介质 | |
US20180024614A1 (en) | Autonomous hardware for application power usage optimization | |
CN113127257B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171117 |
|
WD01 | Invention patent application deemed withdrawn after publication |