CN114237677A - 应用更新文件的热更新方法、装置、计算机设备 - Google Patents
应用更新文件的热更新方法、装置、计算机设备 Download PDFInfo
- Publication number
- CN114237677A CN114237677A CN202111331634.1A CN202111331634A CN114237677A CN 114237677 A CN114237677 A CN 114237677A CN 202111331634 A CN202111331634 A CN 202111331634A CN 114237677 A CN114237677 A CN 114237677A
- Authority
- CN
- China
- Prior art keywords
- application
- file
- plug
- update file
- updating
- 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
Images
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
- G06F8/656—Updates while running
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
技术领域
本公开涉及终端应用数据处理技术领域,特别是涉及一种应用更新文件的热更新方法、装置、计算机设备。
背景技术
随着互联网技术的发展,互联网应用的用户量和数据规模迅速正在扩大,所以对应用的开发团队的发行版本对应的要求也越来越高。传统的发行新的版本后需要重启应用,影响用户的应用的使用体验,因此需要提前约定发行版本的时间并通知该应用的用户,在重启应用时,尤其是当前应用的更新点较多的情况下,可能存在着重启后会导致应用不能够使用的情况。针对重启应用的发行版本方式存在的问题,出现了热更新方式,目前常用的热更新方案的流程为:将配置文件统一放到配置管理平台;将配置信息读取到本地内存,保存到相应类中;通过定时任务获取配置信息;如果配置信息发生改变则触发热更新。
然而,目前的热更新方式中,将配置信息读取到本地内存,保存到对应类后,想要触发热更新还需要通过定时任务去检查,并没有做到完全的实时更新,并且在时间差很短的情况下还会对应用造成负担。目前的热更新技术大多是针对配置文件的热更新,并未存在插件程序集热更新方面的方法。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实时更新应用程序中插件的应用更新文件的热更新方法、装置、计算机设备。
第一方面,本公开提供了一种应用更新文件的热更新方法。所述方法包括:
动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件;
当检测到所述应用更新文件变化时,判断所述应用更新文件的类别;
在所述应用更新文件的类别为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
在其中一个实施例中,所述检测到所述应用更新文件变化时,包括:
将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比;
当对比的结果为:所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,和/或,所述对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
在其中一个实施例中,所述通过反射调用所述插件程序集对应的插件,包括:
动态获取所述对象存储中的所述插件程序集;
通过Java反射获取调用的所述插件程序集对应的类的方法;
通过调用方法调用所述插件程序集对应的类的方法。
在其中一个实施例中,其特征在于,所述方法,还包括:
在所述应用更新文件的类别为配置文件的情况下,读取并应用所述配置文件。
在其中一个实施例中,所述动态读取存储在对象存储中的应用更新文件,之前还包括:
将所述应用更新文件上传至所述对象存储中;
当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
第二方面,本公开还提供了一种应用更新文件的热更新装置。所述装置包括:
动态读取模块,用于动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件;
检测判断模块,用于当检测到所述应用更新文件变化时,判断所述应用更新文件的类别;
插件更新模块,用于在所述应用更新文件为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
在其中一个实施例中,所述检测判断模块包括:对比模块和文件变化检测模块;
所述对比模块,用于将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比;
所述文件变化检测模块,用于当所述对比模块进行对比的结果为:所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,和/或,对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
在其中一个实施例中,所述插件更新模块包括:插件程序集获取模块、类方法获取模块、类方法调用模块;
所述插件程序集获取模块,用于动态获取所述对象存储中的所述插件程序集;
所述类方法获取模块,用于通过Java反射获取调用的所述插件程序集对应的类的方法;
所述类方法调用模块,用于通过调用方法调用所述插件程序集对应的类的方法。
在其中一个实施例中,所述装置还包括:
配置文件更新模块,用于在所述应用更新文件为配置文件的情况下,读取并应用所述配置文件。
在其中一个实施例中,所述装置还包括:
上传模块,用于将所述应用更新文件上传至所述对象存储中;
对象存储更新模块,用于当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
第三方面,本公开还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本公开还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
第五方面,本公开还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
上述应用更新文件的热更新方法、装置、计算机设备,能够通过动态读取的方式,尤其是在应用程序调用次数少且设置的定时任务间隔时间短的情况下,相较于普通热更新方式中通过定时任务进行检查不会造成资源的浪费,且能够实现实时更新。而通过反射调用的方式更新插件,使得分布式系统中应用程序的插件能够进行热更新,且可以做到不改动应用程序的代码的情况下应用更新后的插件,提升了应用程序的通用性和扩展性。
附图说明
图1为一个实施例中应用更新文件的热更新方法的应用环境示意图;
图2为一个实施例中应用更新文件的热更新方法的流程示意图;
图3为一个实施例中S204步骤的流程示意图;
图4为一个实施例中S206步骤的流程示意图;
图5为一个实施例中S202步骤之前的流程示意图;
图6为另一个实施例中应用更新文件的热更新方法的流程示意图;
图7为一个实施例中应用更新文件的热更新装置的结构示意框图;
图8为一个实施例中计算机设备的内部结构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本公开,并不用于限定本公开。
需要说明的是,本文的说明书和权利要求书及上述附图中的,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
热更新:是指在不发版的情况或无需重新应用启动来实现更新的方式,热更新实质上就是不停机实时更新。
本公开实施例提供的应用更新文件的热更新方法,可以应用于如图1所示的应用环境中。其中,应用程序102通过网络与服务器104进行通信。对象存储可以存储服务器104需要更新的数据,可以包括应用更新文件。数据存储系统可以放在云上。服务器104动态读取存储在对象存储中的应用更新文件,其中动态读取包括根据应用程序使用的情况读取存储在对象存储中的应用更新文件。当服务器104检测到对象存储中的应用更新文件发生变化时,证明应用更新文件需要更新,此时服务器104判断程序更新的类别。在服务器104判断应用更新文件的类别为插件程序集的情况下,服务器104通过反射调用插件程序集对应的插件,更新应用程序102中的对应的插件。其中,应用程序102可以但不限于是安装在各种个人计算机、笔记本电脑、智能手机、平板电脑中。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。需要说明的是,该方法也单独应用于应用程序,并通过应用程序来实现。
在一个实施例中,如图2所示,提供了一种应用更新文件的热更新方法,以该方法应可以用于分布式系统。以图1中的服务器104为例进行说明,所述方法的一个实施例中,可以包括以下步骤:
S202,动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件。
其中,动态读取可以是类似动态更新的方式,通常是根据应用程序的需要读取,如:应用程序调用/打开的次数多则读取存储在对象存储中的应用更新文件的次数多,应用程序调用/打开的次数少则读取存储在对象存储中的应用更新文件的次数少的一种方式。对象存储可以是Azure Blob存储。Azure Blob存储是Azure用来存储大量松散数据的一种服务,例如文本数据或者二进制数据。通过这一服务,可以从全世界各地通过HTTP(HyperText Transfer Protocol)或者HTTPS(Hyper Text Transfer Protocol overSecureSocket Layer)来访问数据。包括对外开放的或者私有的数据。通常会使用AzureBlob存储的用户包括:(1)需要直接从浏览器来访问文档或者图片。(2)需要分布式访问来存储文件的。(3)流媒体或者视频。(4)安全备份或者灾难恢复。(5)Azure托管的服务来存储分析数据。应用更新文件可以是应用程序中需要更新的文件,可以包括插件程序集、配置文件等等。
具体地,当每调用或打开部署在微软云上的应用程序一次时,对应的读取存储在Azure Blob存储中的应用更新文件一次。
S204,当检测到所述应用更新文件变化时,判断所述应用更新文件的类别。
具体地,每读取存储在Azure Blob存储中的应用更新文件一次时,对应的检测一次Azure Blob存储中的应用更新文件是否变化,当检测到Azure Blob存储中的应用更新文件发生变化时,证明需要更新应用程序中的对应的应用更新文件了,此时进行判断变化的应用更新文件的类别。
S206,在所述应用更新文件的类别为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
具体地,在变化的程序更新的文件的类别为插件程序集的情况下,证明需要更新应用程序中的插件,所以此时通过反射调用插件程序集中对应的插件,来更新应用程序中的插件。
上述应用更新文件的热更新方法中,选择使用Azure Blob作为应用更新文件的管理平台,是因为其很适合存储巨量的非结构化数据。另一方面,它提供了不同的访问层:Hot层对频繁访问的数据选择热存储;Cool层针对很少访问的数据和存储时间较长的数据;Archive层针对很少访问的数据和存储至少180天的数据,方便项目组对数据文件进行分级别存储。且因为应用程序本身是部署在微软云上,而AzureBlob作为微软云原生的对象存储解决方案,与应用的服务体系互通,使用起来更为便捷,可管理性强。且通过动态读取的方式,尤其是在应用程序调用次数少且设置的定时任务间隔时间短的情况下,相较于普通热更新方式中通过定时任务进行检查不会造成资源的浪费,且能够实现实时更新。而通过反射调用的方式更新插件,使得分布式系统中应用程序的插件能够进行热更新,且可以做到不改动应用程序的代码的情况下应用更新后的插件,很大程度上提升了应用程序的通用性和扩展性。
在一个实施例中,如图3所示,所述检测到所述应用更新文件变化时,包括:
S302,将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比。
S304,当对比的结果为所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,和/或所述对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
其中,时间戳是程序更新中必定存在的。时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。
具体地,当读取应用更新文件后,会判断应用更新文件是否发生变化,会将对象存储中的应用更新文件和应用程序中的本地的应用更新文件进行对比。而当需要更新应用程序中的应用更新文件时,除了修改应用更新文件中的代码,通常都要修改应用更新文件的版本号,以此作为应用程序调用时判断前后两者是否不同的标识,当没有版本号时,也可以通过时间戳进行对比。所以当对比结果为:对象存储中的应用更新文件的版本号和应用程序中的应用更新文件的版本号不相同的情况下,证明检测到了对象存储中的应用更新文件发生变化,证明需要更新应用程序中的应用更新文件。当对象存储中没有存储对应的应用更新文件的版本号时,可以应用更新文件的时间戳进行判断对象存储中的应用更新文件是否发生变化,所以当对比结果为:对象存储中的应用更新文件的时间戳和应用程序中的应用更新文件的时间戳不相同的情况下,证明检测到对象存储中的应用更新文件发生变化,证明需要更新对象存储中的应用更新文件。当对象存储中既存储了应用更新文件的版本号,又存储了应用更新文件的时间戳的情况下,可以通过版本号和时间戳一起来进行检测应用更新文件是否发生变化,通过版本号和时间戳检测应用更新文件是否发生变化的实施方式可以参见上述描述,在此不进行详细赘述。
本实施例中,通过使用应用更新文件的版本号或者时间戳进行判断对象存储中的应用更新文件是否发生改变,能够在应用更新文件没有版本号的情况下,通过时间戳进行对比,能够从多方面检测应用更新文件是否发生变化。
在一个实施例中,如图4所示,所述通过反射调用所述插件程序集对应的插件,包括:
S402,动态获取所述对象存储中的所述插件程序集。
具体地,当检测到应用更新文件变化时,且程序更新的文件的类别为插件程序集时,此时动态获取对象存储中的所述插件程序集,即检测到应用更新文件变化一次时,且程序更新的文件的类别为插件程序集时,则对应的获取一次对象存储中的所述插件程序集,保证实时更新。
S404,通过Java反射获取调用的所述插件程序集对应的类的方法。
其中,Java反射调用,一般应用在编译时根本无法知道该对象或类可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息的环境中。通过反射可以使程序代码访问装载到JVM中的类的内部信息,获取已装载类的属性信息,获取已装载类的方法,获取已装载类的构造方法信息。
S406,通过调用方法调用所述插件程序集对应的类的方法。
具体地,可以通过Java程序得到要调用的插件程序集的类的class,然后得到要调用的类中的方法(Method),最后进行方法调用(invoke)。在一些实施方式中,通过Class.forName(“包名+方法的类名”)拿到方法的对象;如:Class<?>clazz=Class.forName("ReflectionTest");也可以通过实例,获取方法的对象类,如:String str="test,reflection";Class<?>clazz=str.getClass();明确反射方法名称,明确方法的参数类型,就可以拿到对象的方法。如:Method method=clazz.getMethod("test",String.class,int.class);其次接着就是invoke()调用方法了,实例化对象,可以直接调用已创建的对象,也可以通过newInstance()创建方法创建,然后确定具体方法的参数。
在本实施例中,通过使用Java反射,当改动对象存储上的插件程序集时,调用它的功能就可以做到不改动代码的情况下应用更新后的插件,提高了应用程序的灵活性和扩展性,降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类,而通过反射调用更新插件的方式是在程序集层面控制版本。
在一个实施例中,所述方法,还包括:
在所述应用更新文件的类别为配置文件的情况下,读取并应用所述配置文件。
具体地,在应用程序调用配置文件,且应用更新文件的类别为配置文件的情况下,证明需要更新的文件为配置文件,所以可以直接在文件的自身层面控制版本,即应用程序读取需要更新的配置文件的信息,通过应用程序应用更新的配置文件中的信息。
在本实施例中,若是通过版本号检测出的应用更新文件发生变化,且应用更新文件包括配置文件时,因为是在文件的自身层面控制版本,所以可以人为控制配置文件不更新,更加灵活,可控性强。
在一个实施例中,检测到应用更新文件变化时,应用更新文件的类别为插件程序集和配置文件的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件以及读取并应用所述配置文件。关于更新插件和读取并应用配置文件的实施方式可以参见上述实施例在此不进行详细赘述。
在本实施例中,能够同时实时的更新插件和配置文件,达到应用程序中插件和配置文件同步更新的效果。
在一个实施例中,如图5所示,所述动态读取存储在对象存储中的应用更新文件,之前还包括:
S502,将所述应用更新文件上传至所述对象存储中。
S504,当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
具体地,将应用更新文件,可以包括插件程序集、配置文件等,上传至Azure Blob对象存储中。当有修改插件程序集和/或配置文件的需求时,修改Azure Blob对象存储上的插件程序集和/或配置文件,无需重启应用程序,能够实现热更新的方式。
在一个实施例中,如图6所示,本公开还提供了一种应用更新文件的热更新方法,以该方法应用于图1中的服务器为例进行说明,还方法可以应用于分布式系统,所述方法包括:
S602,将所述应用更新文件上传至所述对象存储中。
S604,当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
S606,动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件。
S608,当检测到所述应用更新文件变化时,判断所述应用更新文件的类别。
S610,在所述应用更新文件的类别为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
S612,在所述应用更新文件的类别为配置文件的情况下,读取并应用所述配置文件。
关于本实施例中具体实施方式可参见上述实施例,在此不进行详细赘述。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本公开实施例还提供了一种用于实现上述所涉及的应用更新文件的热更新方法的应用更新文件的热更新装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个应用更新文件的热更新装置实施例中的具体限定和实施方式可以参见上文中对于应用更新文件的热更新方法的实施例,在此不再赘述。
在一个实施例中,如图7所示,提供了一种应用更新文件的热更新装置700,包括:动态读取模块702、检测判断模块704和插件更新模块706,其中:
动态读取模块702,用于动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件;
检测判断模块704,用于当检测到所述应用更新文件变化时,判断所述应用更新文件的类别;
插件更新模块706,用于在所述应用更新文件为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
在一个实施例中,所述检测判断模块704包括:对比模块和文件变化检测模块;
所述对比模块,用于将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比;
所述文件变化检测模块,用于当所述对比模块进行对比的结果为:所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,
和/或
对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
在一个实施例中,所述插件更新模块706包括:插件程序集获取模块、类方法获取模块、类方法调用模块;
所述插件程序集获取模块,用于动态获取所述对象存储中的所述插件程序集;
所述类方法获取模块,用于通过Java反射获取调用的所述插件程序集对应的类的方法;
所述类方法调用模块,用于通过调用方法调用所述插件程序集对应的类的方法。
在一个实施例中,所述装置还包括:
配置文件更新模块,用于在所述应用更新文件为配置文件的情况下,读取并应用所述配置文件。
在一个实施例中,所述装置还包括:
上传模块,用于将所述应用更新文件上传至所述对象存储中;
对象存储更新模块,用于当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
上述应用更新文件的热更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种应用更新文件的热更新方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本公开所涉及的应用更新文件中的信息,均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本公开所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本公开所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本公开的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本公开专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开构思的前提下,还可以做出若干变形和改进,这些都属于本公开的保护范围。因此,本公开的保护范围应以所附权利要求为准。
Claims (13)
1.一种应用更新文件的热更新方法,其特征在于,应用于分布式系统,所述方法包括:
动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件;
当检测到所述应用更新文件变化时,判断所述应用更新文件的类别;
在所述应用更新文件的类别为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
2.根据权利要求1所述的应用更新文件的热更新方法,其特征在于,所述检测到所述应用更新文件变化,包括:
将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比;
当对比的结果为所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,和/或,所述对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
3.根据权利要求1所述的应用更新文件的热更新方法,其特征在于,所述通过反射调用所述插件程序集对应的插件,包括:
动态获取所述对象存储中的所述插件程序集;
通过Java反射获取调用的所述插件程序集对应的类的方法;
通过调用方法调用所述插件程序集对应的类的方法。
4.根据权利要求1-3任一项所述的应用更新文件的热更新方法,其特征在于,所述方法,还包括:
在所述应用更新文件的类别为配置文件的情况下,读取并应用所述配置文件。
5.根据权利要求1所述的应用更新文件的热更新方法,其特征在于,所述动态读取存储在对象存储中的应用更新文件,之前还包括:
将所述应用更新文件上传至所述对象存储中;
当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
6.一种应用更新文件的热更新装置,其特征在于,所述装置包括:
动态读取模块,用于动态读取存储在对象存储中的应用更新文件,所述动态读取包括根据应用程序使用的情况读取所述应用更新文件;
检测判断模块,用于当检测到所述应用更新文件变化时,判断所述应用更新文件的类别;
插件更新模块,用于在所述应用更新文件为插件程序集的情况下,通过反射调用所述插件程序集对应的插件,更新所述应用程序中的插件。
7.根据权利要求6所述的应用更新文件的热更新装置,其特征在于,所述检测判断模块包括:对比模块和文件变化检测模块;
所述对比模块,用于将所述对象存储中的应用更新文件与应用程序中的应用更新文件进行对比;
所述文件变化检测模块,用于当所述对比模块进行对比的结果为:所述对象存储中的应用更新文件的版本号与应用程序中的应用更新文件的版本号不相同,
和/或
对象存储中的应用更新文件的时间戳与应用程序中的应用更新文件的时间戳不相同时,检测到所述对象存储中的应用更新文件发生变化。
8.根据权利要求6所述的应用更新文件的热更新装置,其特征在于,所述插件更新模块包括:插件程序集获取模块、类方法获取模块、类方法调用模块;
所述插件程序集获取模块,用于动态获取所述对象存储中的所述插件程序集;
所述类方法获取模块,用于通过Java反射获取调用的所述插件程序集对应的类的方法;
所述类方法调用模块,用于通过调用方法调用所述插件程序集对应的类的方法。
9.根据权利要求6所述的应用更新文件的热更新装置,其特征在于,所述装置还包括:
配置文件更新模块,用于在所述应用更新文件为配置文件的情况下,读取并应用所述配置文件。
10.根据权利要求6所述的应用更新文件的热更新装置,其特征在于,所述装置还包括:
上传模块,用于将所述应用更新文件上传至所述对象存储中;
对象存储更新模块,用于当存在更新所述应用更新文件的需求时,更新所述对象存储中的所述应用更新文件。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
13.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111331634.1A CN114237677A (zh) | 2021-11-11 | 2021-11-11 | 应用更新文件的热更新方法、装置、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111331634.1A CN114237677A (zh) | 2021-11-11 | 2021-11-11 | 应用更新文件的热更新方法、装置、计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237677A true CN114237677A (zh) | 2022-03-25 |
Family
ID=80749026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111331634.1A Pending CN114237677A (zh) | 2021-11-11 | 2021-11-11 | 应用更新文件的热更新方法、装置、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237677A (zh) |
-
2021
- 2021-11-11 CN CN202111331634.1A patent/CN114237677A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008118B (zh) | 页面数据测试方法、装置、计算机设备和存储介质 | |
US9621634B2 (en) | Dependency management with atomic decay | |
US20070192700A1 (en) | Support of remote software applications | |
US10545991B2 (en) | Synchronizing local and remote data | |
CN107766252A (zh) | 测试脚本自动化执行方法、装置、设备以及存储介质 | |
CN111209120A (zh) | 微服务的数据同步方法、装置及计算机可读存储介质 | |
CN111222153B (zh) | 应用程序权限管理方法、装置和存储介质 | |
CN113778442A (zh) | 一种系统菜单生成方法、装置、设备及存储介质 | |
CN108984339A (zh) | 数据恢复方法及相关产品 | |
CN114218156A (zh) | 数据导出方法、装置、计算机设备和存储介质 | |
CN107409086B (zh) | 通过多个邮箱在通信应用中进行海量数据管理 | |
CN112783580A (zh) | 基于子应用的路由控制方法、装置和计算机设备 | |
CN109766084B (zh) | 支付应用的定制开发方法、装置、计算机设备和存储介质 | |
CN114237677A (zh) | 应用更新文件的热更新方法、装置、计算机设备 | |
US20230409710A1 (en) | Allow list of container images based on deployment configuration at a container orchestration service | |
EP3759603B1 (en) | In-line event handlers across domains | |
CN109739812A (zh) | 一种显示资源文件的方法及装置 | |
US10268698B2 (en) | Synchronizing different representations of content | |
CN117270880A (zh) | 插件服务私有化部署方法、装置、计算机设备和存储介质 | |
CN115604667B (zh) | 消息发送方法、装置、计算机设备和存储介质 | |
Deng et al. | Development of mobile Intercloud applications | |
CN115687375A (zh) | 数据库更新方法、装置、计算机设备和存储介质 | |
CN118200314A (zh) | 文件交互方法、装置、计算机设备和存储介质 | |
CN117407620A (zh) | 页面数据处理方法、装置、计算机设备、存储介质和产品 | |
CN115269065A (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 |