CN108108180A - 一种运行时动态更新应用的方法和装置 - Google Patents

一种运行时动态更新应用的方法和装置 Download PDF

Info

Publication number
CN108108180A
CN108108180A CN201611045188.7A CN201611045188A CN108108180A CN 108108180 A CN108108180 A CN 108108180A CN 201611045188 A CN201611045188 A CN 201611045188A CN 108108180 A CN108108180 A CN 108108180A
Authority
CN
China
Prior art keywords
application
updated
buffer zone
subregion
sub
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
Application number
CN201611045188.7A
Other languages
English (en)
Other versions
CN108108180B (zh
Inventor
姜威
贺鹏
陈博
刘晓媛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201611045188.7A priority Critical patent/CN108108180B/zh
Publication of CN108108180A publication Critical patent/CN108108180A/zh
Application granted granted Critical
Publication of CN108108180B publication Critical patent/CN108108180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种运行时动态更新应用的方法和装置,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域;所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。本发明实现了更新程序对应的子区域进行部署时,可以不影响待更新应用的正常运行,并且用户在访问某一应用的时候,可以通过更新后的位置变量易于访问到更新后的应用。

Description

一种运行时动态更新应用的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种运行时动态更新应用的热部署技术。
背景技术
互联网时代,越来越多的工作依赖于访问互联网网页完成,因此网页的系统稳定性、持续可访问性变得越来越重要。在访问网页应用时,应用升级过程中的服务暂停,给用户带来了极大不便。
现有的Web服务器在运行过程中热部署的方案普遍存在以下问题:
1)对于处理后端逻辑的类文件的更新,需要类加载器将更新后的文件重新加载到内存中。但是这个触发机制经常失效,以至于内存中的代码并没有更新。
2)在拷贝新代码到web服务器的过程中,尽管过程比较短暂,但是由于有些前端静态资源(比如css、js文件)的暂时缺失,还是会造成有些页面访问不了。
鉴于上述两个原因,在实际运行环境中,现有技术在应用运行时动态发布页面(又称热部署)的效果并不好,因此几乎没有人使用热部署,大多数还是先把服务停掉,重新发布应用后,再重启web服务器的方式。这样势必会造成服务的暂停,影响用户的使用和体验。
因此,如何提供一种在应用运行过程中对应用进行更新的热部署技术,成为本领域技术人员亟需解决的技术问题之一。
发明内容
本发明的目的是提供一种运行时动态更新应用的方法和装置。
根据本发明的一个方面,提供一种运行时动态更新应用的方法,其中,该方法包括以下步骤:
a.对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
b.根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域;
c.所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。
优选地,该方法包括:
采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
其中,所述步骤b包括:
若所述待更新应用位于子区域A,执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;
其中,所述步骤c包括:
所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。
优选地,该方法还包括:
定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。
优选地,该方法还包括:
获取用户欲访问的应用的应用信息;
根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;
根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。
优选地,所述步骤a包括:
通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述容器模块和所述管理中心均位于Web服务器中。
优选地,多个所述Web服务器共用所述缓存区域。
根据本发明的另一个方面,还提供了一种运行时动态更新应用的更新装置,其中,该更新装置包括以下装置:
确定装置,用于对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
部署装置,用于根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域;
获得装置,用于所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。
优选地,该更新装置还包括:
划分装置,用于采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
其中,所述部署装置还用于:
若所述待更新应用位于子区域A,执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;
其中,所述获得装置还用于:
所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。
优选地,该更新装置还包括:
检测装置,用于定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。
优选地,该更新装置还包括访问装置,用于:
获取用户欲访问的应用的应用信息;
根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;
根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。
优选地,所述确定装置用于:
通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中子区域位置;
其中,所述容器模块和所述管理中心均位于Web服务器中。
优选地,多个所述Web服务器共用所述缓存区域。
根据本发明的又一个方面,还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的方法。
与现有技术相比,本发明具有以下优点:
本发明将所述缓存区域划分成至少两个子区域,可以将各应用分配放置于不同的子区域中,将待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域,使得更新程序在对应的子区域进行部署时,可以不影响待更新应用的正常运行;在部署操作完成之后,所述更新后的应用的位置变量同样被更新,使得用户在访问某一应用的时候,通过更新后的位置变量易于访问到更新后的应用。
进一步地,本发明通过容器模块通过首先访问待更新应用的位置变量,确认需要访问的子区域,然后到缓存区域相应的子区域而非内存中访问对应的应用程序代码,可以保证每次访问时都能直接访问更新后的最新应用页面数据。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本发明一个方面的一种运行时动态更新应用的更新装置的结构示意图;
图2示出根据本发明另一个方面的一种运行时动态更新应用的方法的流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1示出根据本发明一个方面的一种运行时动态更新应用的更新装置的结构示意图。更新装置1包括:确定装置101、部署装置102和获得装置103。
在此,更新装置1例如可以位于计算机设备中,特别地,位于网络设备中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云。以下以该更新装置1位于网络设备中为例进行详细描述。
其中,确定装置101对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置。具体地,为了实现运行时动态发布新的应用更新,应用程序开发人员将缓存模块对应的缓存区域划分为至少两个子区域,不同的应用程序按照预定的规则或者按照每个子区域的存储空间,分别放置在不同的子区域中,并通过采用特定的代码或者其他设置方法,为每个应用分别设置一个位置变量,用于标识各应用在所述缓存区域中的子区域位置,确定装置101对正在运行的待更新应用进行更新时,首先从缓存中读取该待更新应用的位置变量,根据该位置变量判断所述待更新应用位于哪个子区域,以便根据所述待更新应用在缓存区域中的当前子区域位置实现热部署,其中,所述热部署即对正在运行中的待更新应用进行更新的过程。
例如,缓存模块对应的缓存区域被划分为A1、B1、C1三个子区域,为缓存区域中的每个应用设置一个位置变量,若所述待更新应用,例如为百度hi,位于子区域B1,百度hi的位置变量标记为子区域B1,确定装置101通过对应的读取指令,调用预定的应用编程接口(API)从缓存区域中读取百度hi的位置变量,得知其位于缓存区域的子区域B1,然后更新装置1在不影响百度hi正常运行的情况下对其进行相应的热部署,例如,将所述百度hi的更新程序部署于子区域C1中,或者将所述百度hi的更新程序部署到子区域A1中。
在此,所述缓存区域被划分成至少两个子区域,可以将各应用分配放置于不同的子区域中,以便对位于其中的应用进行热部署。
部署装置102根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域。具体地,部署装置102根据确定装置101确定的所述待更新应用在缓存区域中的当前子区域位置,即所述待更新应用目前位于缓存区域的哪个子区域,将与所述待更新应用对应的更新程序上传至除该子区域之外的其他子区域,即,1)当对某一运行中的应用进行更新时,将对应的更新程序与正在运行的该应用的原始程序放置于不同的子区域中,使得新部署的更新程序不影响该应用原始程序的正常运行,又能保证该应用得到及时的更新;2)当对某一处于空闲状态的应用进行更新时,也将对应的更新程序与正在运行的该应用的原始程序放置于不同的子区域中,以避免用户在所述更新程序部署过程中打开对应的应用时,造成所述应用的页面不能访问。其中,所述更新程序的版本号可以根据前一个版本号自动生成下一个版本号,也可以人为的按版本号规则命名。在上传更新程序的时候,例如,可以用一个map.xml的文件描述整个程序的目录结构。
例如,缓存模块对应的缓存区域被划分为A2、B2、C2和D2四个子区域,缓存区域中的每个应用各设置一个位置变量,所述待更新应用例如为“百度糯米”,位于子区域D2时,“百度糯米”的位置变量标记所述应用“百度糯米”位于子区域D2中,确定装置101确定“百度糯米”在缓存区域中的当前子区域位置为子区域D2,部署装置102将“百度糯米”对应的更新程序部署至子区域B2中,因为“百度糯米”正在运行的原始程序位于子区域D2中,与子区域B2中的更新程序不会发生冲突,待重启百度hi时,系统会去子区域B2中获取更新后的页面数据,从而实现百度hi的热部署。具体地,在部署装置102进行部署操作的过程中,所述待更新应用-“百度糯米”的位置变量标识的仍然是子区域D2。
在此,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域,使得更新程序在对应的子区域进行部署时,可以在不影响待更新应用的正常运行,例如,用户访问web页面时,无需停止正常的Web服务,进行web页面的升级,不影响用户的访问,提升了用户体验和工作效率。
本领域技术人员应能理解,上述将缓存模块对应的缓存区域划分为四个子区域的情况仅为举例,只要满足将缓存区域划分为至少两个子区域即在本发明的保护范围内。
所述部署操作完成之后,获得装置103获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。具体地,部署装置102完成所述部署操作之后,所述更新后的应用的位置变量被更新为更新程序部署到的所述子区域,获得装置103通过调用预定的应用编程接口(API)获得更新后的应用,不断监测所述更新后的应用是否已经被用户正常使用,若果是,则删除所述待更新应用的原始程序,否则暂时不删除;优选地,获得装置获得更新后的应用后,向用户设备端发送一条提醒消息,提示用户所述应用的更新已经被部署,重新打开所述待更新应用可以获得更新后的应用页面数据;优选地,所述提醒消息还可以提示用户:本次应用的更新完善了哪些内容,增加了哪些功能等。例如,若所述待更新应用位于子区域E中,对应的更新程序位于子区域F中,所述更新后的应用的位置变量被更新为标识子区域F,获得装置103获得更新后的应用。
在此,在部署操作完成之后,所述更新后的应用的位置变量同样被更新,使得用户在访问某一应用的时候,可以通过更新后的位置变量易于访问到更新后的应用。
优选地,更新装置1还包括:划分装置104(未示出)。
其中,划分装置104采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;其中,所述部署装置102还用于:若所述待更新应用位于子区域A,执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;其中,所述获得装置103还用于:所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。具体地,若所述缓存模块对应的缓存区域采用“A/B”存储技术,将缓存区域划分为两个子区域:子区域A和子区域B,每个应用各对应有一个位置变量,用于记录或者标识所述应用的当前最新代码在A区域还是B区域,为正在运行的待更新应用进行热部署时,首先要通过对应的接口获取所述待更新应用的位置变量,确定所述待更新应用位于哪个子区域,当确定装置101确定所述待更新应用位于子区域A时,部署装置102执行部署操作,将所述待更新应用对应的更新程序上传到子区域B中进行部署操作,部署操作完成之后,获得装置103获得所述更新后的应用,将更新后的应用的位置变量更新为子区域B,并且持续监测所述更新后的应用是否已被用户设备端正常获取到对应的页面数据,删除掉所述待更新应用的原始程序。
优选地,更新装置1还包括:检测装置105(未示出)。
其中,检测装置105定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。具体地,每个缓存子区域中分别有一个应用列表,用以记载不同的子区域中分别放置有哪些应用程序,为了防止缓存区域中的应用程序被误删或者清除,检测装置105定期检测所述缓存区域中是否还有该应用,若没有则根据缓存区域中记载的各应用所分别对应的子区域位置重新加载所述应用。优选地,若所述检测装置105检测到所述缓存区域的不同子区域中同时存在某一应用的原始应用程序和能够正常运行的对应的更新应用程序时,根据版本号或者更新时间等信息鉴别出所述原始应用程序,并将其删除。
优选地,更新装置1还包括访问装置106(未示出)。
访问装置106获取用户欲访问的应用的应用信息;根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。具体地,用户通过与用户设备的互动,欲访问某一应用,访问装置106获取该应用的应用信息,自该应用信息中查找所述应用的位置变量,确定所述应用在缓存区域中的当前子区域位置,然后访问装置106通过容器模块,去缓存模块对应的缓存区域中,该应用所对应当前子区域中,访问该应用;若该应用进行了热更新,则该应用对应的当前子区域也相应进行了更新,访问装置106通过容器模块,自该缓存区域的该应用所对应的更新后的当前子区域中,获取更新后的最新的应用页面数据,而不是去取加载到内存中的数据。
在此,容器模块通过首先访问待更新应用的查询位置变量,确认需要访问的子区域,然后到缓存区域相应的子区域而非内存中访问对应的应用程序代码,可以保证每次访问时都能直接访问更新后的最新应用页面数据。
优选地,所述确定装置101通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中子区域位置;其中,所述容器模块和所述管理中心均位于Web服务器中。具体地,确定装置101对正在运行的待更新应用进行更新时,通过管理中心例如,iPage(页面配置运行平台)管理中心,进行正在运行的待更新应用的热部署,根据所述待更新应用的位置变量确定所述待更新应用在缓存模块对应的缓存区域中子区域位置,然后部署装置102根据所述当前子区域位置将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域,然后将更新后的应用的位置变量更新为所述更新后的应用所在的子区域。其中,所述容器模块和所述管理中心均位于Web服务器中,所述缓存模块例如为一个分布式缓存模块。其中,所述iPage是一种使用xml配置文件编写网页的技术,网页编写完成后,通过iPage管理中心进行发布上线的时候,完全不影响用户的访问,对用户来说,完全感知不到服务有暂停,提升了用户体验。
优选地,所述更新装置1将缓存模块对应的缓存区域划分为至少两个子区域,然后通过管理中心在对应的子区域(未存放所述待更新应用的子区域)上对正在运行或者即将被运行(在热部署过程中被用户访问)的应用进行热部署,部署完成之后将所述更新后的应用对应的位置变量进行对应更新,其后用户访问页面时,更新装置1通过容器模块去缓存模块对应的子区域获取最新的更新后的页面数据,因此,采用所述更新装置1对正在运行的应用或者即将被运行的应用进行热部署时,各种应用的应用程序代码不是直接存放于Web服务器中的,而是通过容器模块、缓存模块和管理中心辅助更新装置1的各个装置,例如确定装置101、部署装置102、获得装置103以及划分装置104、访问装置106,完成运行时动态更新应用的热部署操作。其中,多个所述Web服务器共用所述缓存区域,所述缓存区域可以供不同的多个web服务器使用,辅助更新装置1完成运行的应用的热部署操作。
在此,更新装置1在引入的容器模块、缓存模块和管理中心的辅助下,当需要发布应用的更新应用程序代码时,可以通过管理中心将所述代码部署到缓存模块;当有应用页面请求时,首先通过位置变量确认访问的子区域,Web服务器通过容器模块去访问缓存模块中对应的子区域中的应用页面。
图2示出根据本发明另一个方面的一种运行时动态更新应用的方法的流程示意图。
其中,在步骤S201中,更新装置1对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置。具体地,为了实现运行时动态发布新的应用更新,应用程序开发人员将缓存模块对应的缓存区域划分为至少两个子区域,不同的应用程序按照预定的规则或者按照每个子区域的存储空间,分别放置在不同的子区域中,并通过采用特定的代码或者其他设置方法,为每个应用分别设置一个位置变量,用于标识各应用在所述缓存区域中的子区域位置,在步骤S201中,更新装置1对正在运行的待更新应用进行更新时,首先从缓存中读取该待更新应用的位置变量,根据该位置变量判断所述待更新应用位于哪个子区域,以便根据所述待更新应用在缓存区域中的当前子区域位置实现热部署,其中,所述热部署即对正在运行中的待更新应用进行更新的过程。
例如,缓存模块对应的缓存区域被划分为A1、B1、C1三个子区域,为缓存区域中的每个应用设置一个位置变量,若所述待更新应用,例如为百度hi,位于子区域B1,百度hi的位置变量标记为子区域B1,在步骤S201中,更新装置1通过对应的读取指令,调用预定的应用编程接口(API)从缓存区域中读取百度hi的位置变量,得知其位于缓存区域的子区域B1,然后更新装置1在不影响百度hi正常运行的情况下对其进行相应的热部署,例如,将所述百度hi的更新程序部署于子区域C1中,或者将所述百度hi的更新程序部署到子区域A1中。
在此,所述缓存区域被划分成至少两个子区域,可以将各应用分配放置于不同的子区域中,以便对位于其中的应用进行热部署。
在步骤S202中,更新装置1根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域。具体地,在步骤S202中,更新装置1根据在步骤S201中确定的所述待更新应用在缓存区域中的当前子区域位置,即所述待更新应用目前位于缓存区域的哪个子区域,将与所述待更新应用对应的更新程序上传至除该子区域之外的其他子区域,即,1)当对某一运行中的应用进行更新时,将对应的更新程序与正在运行的该应用的原始程序放置于不同的子区域中,使得新部署的更新程序不影响该应用原始程序的正常运行,又能保证该应用得到及时的更新;2)当对某一处于空闲状态的应用进行更新时,也将对应的更新程序与正在运行的该应用的原始程序放置于不同的子区域中,以避免用户在所述更新程序部署过程中打开对应的应用时,造成所述应用的页面不能访问。其中,所述更新程序的版本号可以根据前一个版本号自动生成下一个版本号,也可以人为的按版本号规则命名。在上传更新程序的时候,例如,可以用一个map.xml的文件描述整个程序的目录结构。
例如,缓存模块对应的缓存区域被划分为A2、B2、C2和D2四个子区域,缓存区域中的每个应用各设置一个位置变量,所述待更新应用例如为“百度糯米”,位于子区域D2时,“百度糯米”的位置变量标记所述应用“百度糯米”位于子区域D2中,在步骤S201中,更新装置1确定“百度糯米”在缓存区域中的当前子区域位置为子区域D2,在步骤S202中,更新装置1将“百度糯米”对应的更新程序部署至子区域B2中,因为“百度糯米”正在运行的原始程序位于子区域D2中,与子区域B2中的更新程序不会发生冲突,待重启百度hi时,系统会去子区域B2中获取更新后的页面数据,从而实现百度hi的热部署。具体地,在步骤S202中,更新装置1进行部署操作的过程中,所述待更新应用-“百度糯米”的位置变量标识的仍然是子区域D2。
在此,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域,使得更新程序在对应的子区域进行部署时,可以在不影响待更新应用的正常运行,例如,用户访问web页面时,无需停止正常的Web服务,进行web页面的升级,不影响用户的访问,提升了用户体验和工作效率。
本领域技术人员应能理解,上述将缓存模块对应的缓存区域划分为四个子区域的情况仅为举例,只要满足将缓存区域划分为至少两个子区域即在本发明的保护范围内。
所述部署操作完成之后,在步骤S203中,更新装置1获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。具体地,在步骤S202中,更新装置1完成所述部署操作之后,所述更新后的应用的位置变量被更新为更新程序部署到的所述子区域,在步骤S203中,更新装置1通过调用预定的应用编程接口(API)获得更新后的应用,不断监测所述更新后的应用是否已经被用户正常使用,若果是,则删除所述待更新应用的原始程序,否则暂时不删除;优选地,在步骤S201中,更新装置1获得更新后的应用后,向用户设备端发送一条提醒消息,提示用户所述应用的更新已经被部署,重新打开所述待更新应用可以获得更新后的应用页面数据;优选地,所述提醒消息还可以提示用户:本次应用的更新完善了哪些内容,增加了哪些功能等。例如,若所述待更新应用位于子区域E中,对应的更新程序位于子区域F中,所述更新后的应用的位置变量被更新为标识子区域F,在步骤S203中,更新装置1获得更新后的应用。
在此,在部署操作完成之后,所述更新后的应用的位置变量同样被更新,使得用户在访问某一应用的时候,可以通过更新后的位置变量易于访问到更新后的应用。
优选地,该方法还包括:步骤S204(未示出)。
其中,在步骤S204中,更新装置1采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;其中,所述在步骤S202中,若所述待更新应用位于子区域A,更新装置1执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;其中,所述在步骤S203中,所述部署操作完成之后,更新装置1获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。具体地,若所述缓存模块对应的缓存区域采用“A/B”存储技术,将缓存区域划分为两个子区域:子区域A和子区域B,每个应用各对应有一个位置变量,用于记录或者标识所述应用的当前最新代码在A区域还是B区域,为正在运行的待更新应用进行热部署时,首先要通过对应的接口获取所述待更新应用的位置变量,确定所述待更新应用位于哪个子区域,当确定所述待更新应用位于子区域A时,所述在步骤S202中,更新装置1执行部署操作,将所述待更新应用对应的更新程序上传到子区域B中进行部署操作,部署操作完成之后,在步骤S203中,更新装置1获得所述更新后的应用,将更新后的应用的位置变量更新为子区域B,并且持续监测所述更新后的应用是否已被用户设备端正常获取到对应的页面数据,删除掉所述待更新应用的原始程序。
优选地,该方法还包括:步骤S205(未示出)。
其中,在步骤S205中,更新装置1定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。具体地,每个缓存子区域中分别有一个应用列表,用以记载不同的子区域中分别放置有哪些应用程序,为了防止缓存区域中的应用程序被误删或者清除,在步骤S205中,更新装置1定期检测所述缓存区域中是否还有该应用,若没有则根据缓存区域中记载的各应用所分别对应的子区域位置重新加载所述应用。优选地,若检测到所述缓存区域的不同子区域中同时存在某一应用的原始应用程序和能够正常运行的对应的更新应用程序时,根据版本号或者更新时间等信息鉴别出所述原始应用程序,并将其删除。
优选地,该方法还包括步骤S206(未示出)。
在步骤S206中,更新装置1获取用户欲访问的应用的应用信息;根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。具体地,用户通过与用户设备的互动,欲访问某一应用,在步骤S206中,更新装置1获取该应用的应用信息,自该应用信息中查找所述应用的位置变量,确定所述应用在缓存区域中的当前子区域位置,然后在步骤S206中,更新装置1通过容器模块,去缓存模块对应的缓存区域中,该应用所对应当前子区域中,访问该应用;若该应用进行了热更新,则该应用对应的当前子区域也相应进行了更新,在步骤S206中,更新装置1通过容器模块,自该缓存区域的该应用所对应的更新后的当前子区域中,获取更新后的最新的应用页面数据,而不是去取加载到内存中的数据。
在此,容器模块通过首先访问待更新应用的查询位置变量,确认需要访问的子区域,然后到缓存区域相应的子区域而非内存中访问对应的应用程序代码,可以保证每次访问时都能直接访问更新后的最新应用页面数据。
优选地,所述在步骤S201中,更新装置1通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中子区域位置;其中,所述容器模块和所述管理中心均位于Web服务器中。具体地,在步骤S201中,更新装置1对正在运行的待更新应用进行更新时,通过管理中心例如,iPage(页面配置运行平台)管理中心,进行正在运行的待更新应用的热部署,根据所述待更新应用的位置变量确定所述待更新应用在缓存模块对应的缓存区域中子区域位置,在步骤S202中,更新装置1根据所述当前子区域位置将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域,然后将更新后的应用的位置变量更新为所述更新后的应用所在的子区域。其中,所述容器模块和所述管理中心均位于Web服务器中,所述缓存模块例如为一个分布式缓存模块。其中,所述iPage是一种使用xml配置文件编写网页的技术,网页编写完成后,通过iPage管理中心进行发布上线的时候,完全不影响用户的访问,对用户来说,完全感知不到服务有暂停,提升了用户体验。
优选地,所述更新装置1将缓存模块对应的缓存区域划分为至少两个子区域,然后通过管理中心在对应的子区域(未存放所述待更新应用的子区域)上对正在运行或者即将被运行(在热部署过程中被用户访问)的应用进行热部署,部署完成之后将所述更新后的应用对应的位置变量进行对应更新,其后用户访问页面时,更新装置1通过容器模块去缓存模块对应的子区域获取最新的更新后的页面数据,因此,采用所述更新装置1对正在运行的应用或者即将被运行的应用进行热部署时,各种应用的应用程序代码不是直接存放于Web服务器中的,而是通过容器模块、缓存模块和管理中心辅助更新装置1完成运行时动态更新应用的热部署操作。其中,多个所述Web服务器共用所述缓存区域,所述缓存区域可以供不同的多个web服务器使用,辅助更新装置1完成运行的应用的热部署操作。
在此,更新装置1在引入的容器模块、缓存模块和管理中心的辅助下,当需要发布应用的更新应用程序代码时,可以通过管理中心将所述代码部署到缓存模块;当有应用页面请求时,首先通过位置变量确认访问的子区域,Web服务器通过容器模块去访问缓存模块中对应的子区域中的应用页面。
优选地,本发明还提供了一种计算机设备,该计算机设备包括一个或多个处理器和存储器,该存储器用于存储一个或多个计算机程序;当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如步骤S201至S206中任一项所述的操作。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(ASIC)或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (13)

1.一种运行时动态更新应用的方法,其中,该方法包括以下步骤:
a.对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
b.根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域;
c.所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。
2.根据权利要求1所述的方法,其中,该方法包括:
采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
其中,所述步骤b包括:
若所述待更新应用位于子区域A,执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;
其中,所述步骤c包括:
所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。
3.根据权利要求1或2所述的方法,其中,该方法还包括:
定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。
4.根据权利要求1至3中任一项所述的方法,其中,该方法还包括:
获取用户欲访问的应用的应用信息;
根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;
根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。
5.根据权利要求4所述的方法,其中,所述步骤a包括:
通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述容器模块和所述管理中心均位于Web服务器中。
6.根据权利要求5所述的方法,其中,多个所述Web服务器共用所述缓存区域。
7.一种运行时动态更新应用的更新装置,其中,该更新装置包括:
确定装置,用于对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中的当前子区域位置;
其中,所述缓存区域被划分为至少两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
部署装置,用于根据所述待更新应用的当前子区域位置,执行部署操作,将所述待更新应用对应的更新程序部署到所述缓存区域中除当前子区域以外的任意子区域;
获得装置,用于所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量同样被更新。
8.根据权利要求7所述的更新装置,其中,该更新装置还包括:
划分装置,用于采用A/B存储技术将所述缓存区域划分为A/B两个子区域,通过位置变量标识各应用在所述缓存区域中的子区域位置;
其中,所述部署装置还用于:
若所述待更新应用位于子区域A,执行部署操作,将所述待更新应用对应的更新程序部署到子区域B;
其中,所述获得装置还用于:
所述部署操作完成之后,获得更新后的应用,其中,所述更新后的应用的位置变量更新为子区域B。
9.根据权利要求7或8所述的更新装置,其中,该更新装置还包括:
检测装置,用于定期检测所述缓存区域,根据各应用所分别对应的子区域位置,在所述缓存区域的各子区域中分别部署所述各应用。
10.根据权利要求7至9中任一项所述的更新装置,其中,该更新装置还包括访问装置,用于:
获取用户欲访问的应用的应用信息;
根据所述应用信息中的位置变量,确定所述应用在缓存区域中的当前子区域位置;
根据所述当前子区域位置,通过容器模块,自当前子区域访问所述应用。
11.根据权利要求10所述的更新装置,其中,所述确定装置用于:
通过管理中心对正在运行的待更新应用进行更新时,根据所述待更新应用的位置变量确定所述待更新应用在缓存区域中子区域位置;
其中,所述容器模块和所述管理中心均位于Web服务器中。
12.根据权利要求11所述的更新装置,其中,多个所述Web服务器共用所述缓存区域。
13.一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至6中任一项所述的方法。
CN201611045188.7A 2016-11-24 2016-11-24 一种运行时动态更新应用的方法和装置 Active CN108108180B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611045188.7A CN108108180B (zh) 2016-11-24 2016-11-24 一种运行时动态更新应用的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611045188.7A CN108108180B (zh) 2016-11-24 2016-11-24 一种运行时动态更新应用的方法和装置

Publications (2)

Publication Number Publication Date
CN108108180A true CN108108180A (zh) 2018-06-01
CN108108180B CN108108180B (zh) 2021-06-08

Family

ID=62204762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611045188.7A Active CN108108180B (zh) 2016-11-24 2016-11-24 一种运行时动态更新应用的方法和装置

Country Status (1)

Country Link
CN (1) CN108108180B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542677A (zh) * 2018-11-05 2019-03-29 北京炎黄盈动科技发展有限责任公司 一种高可靠容器内应用介质升级方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077198A (zh) * 2012-12-26 2013-05-01 中标软件有限公司 一种操作系统及其文件缓存定位方法
CN103532732A (zh) * 2012-06-29 2014-01-22 西门子公司 网络装置和用于运行自动化网络的网络装置的方法
US8943491B2 (en) * 2008-06-26 2015-01-27 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for maintaining CRTM code
CN105868231A (zh) * 2015-12-01 2016-08-17 乐视体育文化产业发展(北京)有限公司 缓存数据的更新方法及装置
CN105867947A (zh) * 2016-04-25 2016-08-17 青岛海信电器股份有限公司 预置应用程序升级后的数据处理方法及装置
CN105975322A (zh) * 2016-06-15 2016-09-28 珠海格力电器股份有限公司 一种用于程序更新的装置、方法及微控制器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943491B2 (en) * 2008-06-26 2015-01-27 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for maintaining CRTM code
CN103532732A (zh) * 2012-06-29 2014-01-22 西门子公司 网络装置和用于运行自动化网络的网络装置的方法
CN103077198A (zh) * 2012-12-26 2013-05-01 中标软件有限公司 一种操作系统及其文件缓存定位方法
CN105868231A (zh) * 2015-12-01 2016-08-17 乐视体育文化产业发展(北京)有限公司 缓存数据的更新方法及装置
CN105867947A (zh) * 2016-04-25 2016-08-17 青岛海信电器股份有限公司 预置应用程序升级后的数据处理方法及装置
CN105975322A (zh) * 2016-06-15 2016-09-28 珠海格力电器股份有限公司 一种用于程序更新的装置、方法及微控制器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
丁鹏飞等: "STM32 F205 VB在远程系统升级中的应用", 《STM32 F205 VB在远程系统升级中的应用 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542677A (zh) * 2018-11-05 2019-03-29 北京炎黄盈动科技发展有限责任公司 一种高可靠容器内应用介质升级方法、装置及存储介质

Also Published As

Publication number Publication date
CN108108180B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
US9916390B2 (en) Managing web browser cache for offline browsing
KR101643022B1 (ko) 카탈로그-기반 소프트웨어 컴포넌트 관리
US9696981B2 (en) Incremental deployment of computer software program logic
CN110046133B (zh) 一种存储文件系统的元数据管理方法、装置及系统
RU2629448C2 (ru) Система и способ управления и организации кэша веб-браузера
US20100235321A1 (en) Programming model for synchronizing browser caches across devices and web services
CN109117169A (zh) 用于修复内核漏洞的方法和装置
US20170357735A1 (en) Information presentation method, device, and system
CN108287708B (zh) 一种数据处理方法、装置、服务器及计算机可读存储介质
CN106569856B (zh) 一种应用视图资源文件的加载方法和装置
CN103631869B (zh) 一种缓解服务端数据库访问压力的方法和装置
CN111782339A (zh) 一种容器创建方法、装置、电子设备及存储介质
CN108228201A (zh) 基于软件仓库的软件管理方法、电子设备及存储介质
CN107153536A (zh) 一种应用处理方法及装置
CN107193607A (zh) 用于更新代码文件的方法和装置、存储介质、处理器以及终端
CN107291481A (zh) 一种组件更新方法、装置和系统
US8429395B2 (en) Controlling access to software component state
CN112486552A (zh) 服务器热更新方法、装置、设备和存储介质
CN109472540B (zh) 业务处理方法和装置
US20120310893A1 (en) Systems and methods for manipulating and archiving web content
CN112395437B (zh) 一种3d模型的加载方法、装置、电子设备及存储介质
CN108108180A (zh) 一种运行时动态更新应用的方法和装置
CN110958138B (zh) 一种容器扩容方法及装置
CN111046316A (zh) 一种应用上架状态监控方法、智能终端及存储介质
US8793663B2 (en) Smart cache for a server test environment in an application development tool

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