CN108881372A - 系统服务或应用的透明升级 - Google Patents
系统服务或应用的透明升级 Download PDFInfo
- Publication number
- CN108881372A CN108881372A CN201810391505.3A CN201810391505A CN108881372A CN 108881372 A CN108881372 A CN 108881372A CN 201810391505 A CN201810391505 A CN 201810391505A CN 108881372 A CN108881372 A CN 108881372A
- Authority
- CN
- China
- Prior art keywords
- application example
- application
- state information
- processor
- activation
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Abstract
本申请涉及系统服务或应用的透明升级。提供了用于在没有重启的情况下升级应用的系统和方法。处理器能够在第一应用实例仍在执行的同时启动第二应用实例。第一应用实例能够将第一状态信息集合传输至第二应用实例。第二应用实例能够响应于传输的完成而声明激活准备就绪。第一应用实例能够响应于声明而去激活。去激活包括将第二状态信息集合从第一应用实例传输至第二应用实例,并且释放单一访问资源。第二应用实例能够激活。激活包括接收第二状态信息集合并且访问单一访问资源。第二应用实例能够响应于激活的完成而声明激活完成。第一应用实例能够响应于声明而终止。
Description
技术领域
本申请涉及系统服务或应用的透明升级。
背景技术
从长时间运行的系统中,经常有必要升级服务或应用以整合小错误修复、新的特征和/或性能提升。传统上,升级涉及到作为三个不同步骤的停止服务,做出改变,以及重启服务。由于该过程使得服务离线或者占用一段时间,所以升级并不是透明的并且会打扰到用户。
发明内容
至少一个方面针对一种在没有重启的情况下更新应用的系统。该系统包括处理器以及具有存储于其上的指令的存储器。该指令使得该处理器执行第一应用实例。该指令使得该处理器在第一应用实例仍在执行的同时启动第二应用实例。该第二应用实例包括第一应用实例的更新版本。该指令使得该处理器将第一状态信息集合从第一应用实例传输至第二应用实例。该指令使得该处理器由第二应用实例响应于第一状态信息集合的传输完成而声明激活准备就绪。该指令使得该处理器对第一应用实例去激活。去激活包括将第二状态信息集合从第一应用实例传输至第二应用实例。去激活包括由第一应用实例释放单一访问资源。该指令使得该处理器激活第二应用实例。激活包括接收该第二状态信息集合并且访问该单一访问资源。该指令使得该处理器由第二应用实例响应于第二应用实例的激活完成而声明激活完成。该指令使得该处理器终止第一应用实例。
在一些实施例中,该指令可以使得该处理器执行主控应用以协调第一应用实例和第二应用实例之间的操作。该主控应用可以发起第二应用实例的启动,从第二应用实例接收对激活准备就绪的声明,服从于接收到对准备就绪的声明而指示第一应用实例去激活,从第一应用实例接收去激活完成的通知,服从于接收到该通知而指示第二应用实例激活,并且终止第一应用实例。在一些实施方式中,该主控应用可以协调第三应用实例和包括第三应用实例的更新的第四应用实例之间的操作,其中第三应用实例和第四应用实例执行与第一应用实例和第二应用实例不同的服务。
在一些实施方式中,第一应用实例可以定期针对第二用实例的存在而检查预定地址或端口(socket)。
在一些实施方式中,该第一状态信息集合可以包括以下的至少一个:已连接客户端的列表,共享存储器空间的位置,文件描述符,以及针对内核资源的访问。
在一些实施方式中,该第一状态信息集合可以被写为第一应用实例和第二应用实例都能够解释的中间格式。
在一些实施方式中,该第一状态信息集合的至少一子集可以与特定客户端相关联,并且该子集能够经由串行化被传输至与用来服务特定客户端的形式不同的中间格式。
在一些实施方式中,该第二状态信息集合可以包括以下的至少一个:TCP拥塞窗口大小,传送中的任意分组的序列标识符,以及被接收但尚未确认的任意分组的序列标识符。
在一些实施方式中,该指令可以使得该处理器:保持在开始对第一应用实例的去激活和完成对第二应用实例的激活之间的封锁时段,在所述封锁时段期间所述第一应用实例和第二应用实例都将不对任何用户输入做出响应。
至少一个方面针对于一种在没有重启的情况下更新应用的方法。该方法包括由处理器执行第一应用实例。该方法包括由该处理器在第一应用实例仍在执行的同时启动第二应用实例。该第二应用实例包括第一应用实例的更新版本。该方法包括由该处理器将第一状态信息集合从第一应用实例传输至第二应用实例。该方法包括由第二应用实例响应于第一状态信息集合的传输完成而声明激活准备就绪。该方法包括由该处理器对第一应用实例去激活。去激活包括将第二状态信息集合从第一应用实例传输至第二应用实例。去激活包括由第一应用实例释放单一访问资源。该方法包括由该处理器激活第二应用实例。激活包括接收该第二状态信息集合并且访问该单一访问资源。该方法包括由第二应用实例响应于第二应用实例的激活完成而声明激活完成。该方法包括由该处理器终止第一应用实例。
在一些实施例中,该方法包括由该处理器执行主控应用以协调第一应用实例和第二应用实例之间的操作。该主控应用可以发起第二应用实例的启动,从第二应用实例接收对激活准备就绪的声明,服从于接收到对准备就绪的声明而指示第一应用实例去激活,从第一应用实例接收去激活完成的通知,服从于接收到该通知而指示第二应用实例激活,并且终止第一应用实例。在一些实施方式中,该主控应用可以协调第三应用实例和包括第三应用实例的更新的第四应用实例之间的操作,其中第三应用实例和第四应用实例执行与第一应用实例和第二应用实例不同的服务。
在一些实施方式中,该方法可以通过所述第一应用实例针对第二用实例的存在而定期检查预定地址或端口。
在一些实施方式中,该第一状态信息集合可以包括以下的至少一个:已连接客户端的列表,共享存储器空间的位置,文件描述符,以及针对内核资源的访问。
在一些实施方式中,该第一状态信息集合可以被写为第一应用实例和第二应用实例都能够解释的中间格式。
在一些实施方式中,该第一状态信息集合的至少一子集可以与特定客户端相关联,并且该子集经由串行化被传输至与用来服务特定客户端的形式不同的中间格式。
在一些实施方式中,该第二状态信息集合可以包括以下的至少一个:TCP拥塞窗口大小,传送中的任意分组的序列标识符,以及被接收但尚未确认的任意分组的序列标识符。
在一些实施方式中,该方法包括由该处理器保持在开始对第一应用实例的去激活和完成对第二应用实例的激活之间的封锁时段,在所述封锁时段期间所述第一应用实例和第二应用实例都将不对任何用户输入做出响应。
至少一个方面针对一种在没有重启的情况下更新应用的系统。该系统包括处理装置以及具有存储于其上的指令的存储装置。该指令使得该处理装置执行第一应用实例。该指令使得该处理装置在第一应用实例仍在执行的同时启动第二应用实例。该第二应用实例包括第一应用实例的更新版本。该指令使得该处理装置将第一状态信息集合从第一应用实例传输至第二应用实例。该指令使得该处理装置由第二应用实例响应于第一状态信息集合的传输完成而声明激活准备就绪。该指令使得该处理装置对第一应用实例去激活。去激活包括将第二状态信息集合从第一应用实例传输至第二应用实例。去激活包括由第一应用实例释放单一访问资源。该指令使得该处理装置激活第二应用实例。激活包括接收该第二状态信息集合并且访问该单一访问资源。该指令使得该处理装置由第二应用实例响应于第二应用实例的激活完成而声明激活完成。该指令使得该处理装置终止第一应用实例。
这些和其它的方面和实施方式在下文详细讨论。以上的信息和以下的详细描述包括各个方面和实施方式的说明性示例,并且提供了用于理解所请求保护的方面和实施方式的属性和特性的概述或框架。附图提供了各个方面和实施方式的图示和进一步的理解,并且被结合于该说明书中并构成它的一部分。
附图说明
附图并非意在依比例绘制。各图中同样的附图标记和指定指示同样的元素。出于清楚的目的,可能并未每个组件在每幅图中都被标记。在附图中:
图1是根据说明性实施方式的用于在没有重启的情况下升级应用的系统的框图;
图2示出了根据说明性实施方式的用于在没有重启的情况下升级应用的事件的序列;
图3示出了根据说明性实施方式的用于使用主控应用以便在没有重启的情况下升级应用的事件的序列;
图4是根据说明性实施方式的在没有重启的情况下升级应用的示例方法的流程图;以及
图5是根据说明性实施方式的可以被采用以实施本文所描述和图示的系统和方法的元素的计算机系统的一般架构的框图。
具体实施方式
本公开总体上涉及在无需应用或服务器重启的情况下促进服务器应用的升级的系统和方法。因此,对于服务器客户端而言,该升级可以是透明或接近透明的。
长期运行的系统服务和应用需要临时或定期的小故障修复、打补丁、更新或升级(一般称之为“更新”)。传统上,应用以三个不同的连续步骤被停止、更新并重启。然而,由于服务被停用一段时间,所以该更新并不是透明的并且对用户有所妨碍。
所提出的系统和方法涉及到在应用的旧版本仍在运行的同时启动应用的新版本。该新版本可以包括任何应用更新。该新版本能够承担它能够在旧版本仍在运行的同时执行的任何初始化。这可以包括请求和/或接收来自外部来源的任何编程,从应用的旧版本接收状态信息的传输,和/或能够在不与旧版本冲突的情况下执行的任何其它初始化。当新版本准备好激活时,它能够声明其准备就绪。旧版本能够去激活。去激活可以包括关闭所需的最小工作集合或者传输资源而使得新版本能够在没有任何资源冲突的情况下激活。当旧版本的去激活完成时,新版本就能够激活。在一些实施方式中,激活可以是去激活的镜像。当新版本完成激活时,旧版本能够徐缓地终止;也就是说,会涉及到一些重大操作的终止能够间或地并且以不与其它服务器操作形成干扰的方式来执行。
在一些实施方式中,服务器可以执行能够协调或执行应用更新的附加的“主控”应用。作为示例而非限制,该主控发起新版本,从新版本接收激活准备就绪的消息,通知旧版本去激活,接收旧版本已去激活的消息,通知新版本激活,以及终止旧版本。虽然该主控并非是必需的,但是它能够提供若干益处。该主控可以是相对简单的应用,并且因此可以是非常稳定的。该主控能够针对传输状态提供单一基准点。例如,该主控可以具有有关故障中事件的更新状态的完整信息。该主控能够执行各种类型的健康检查和非变量检查来确保升级成功地且以及时的方式得以进行。如果更新中的任何步骤失败,该主控能够返回至与应用中的故障状态是什么相独立的的回滚或逐步升级过程。在一些实施方式中,该主控能够协助对多个不同应用升级,并且针对所有升级提供单一基准点。
在一些实施方式中,状态传输可以涉及到将一些或全部状态写为能够旧版本和新版本都能够解释的中间格式。该中间格式可以允许状态的二进制表示形式在旧版本和新版本或升级目的之间有所变化。状态的子集可以包括与特定用户或客户端相关联的状态。在一些实施方式中,该用户状态可以经由串行化被传输至具有与用于服务用户的不同的二进制表示形式的中间格式。
在一些实施方式中,状态传输能够以多个阶段进行。这能够减少应用可用性可能受到限制的持续时间。状态传输的第一阶段能够在新应用的初始化阶段进行。该第一阶段可以包括后台状态信息的传输,诸如已连接客户端的列表以及在应用和客户端之间共享的存储器空间的位置。该后台状态信息还可以包括文件描述符以及针对内核资源的访问。以状态传输的第一阶段的起始作为开始,应用可以停止而允许更具入侵性的状态变化,诸如允许新客户端连接至服务器或者接受新的存储器注册;然而,应用可以继续为现有客户端服务,包括允许现有客户端打开新的业务流。由于这些类型的变化趋向于是不频繁的,所以这种临时功能缩减不会具有不合理的破坏性。
状态传输的第二阶段能够在应用的旧版本的去激活期间进行。这将包括针对客户端的透明服务所需的状态信息;作为示例,诸如TCP拥塞窗口大小,哪些分组处于飞行途中,以及处于传送中或者被接收但尚未被确认的任意分组的序列标识符之类的TCP状态信息。关于状态传输的第二极端的时间,旧版本能够转变至二者无法共享的新版本资源;例如,应用的两个版本无法同时访问的端口和端口。在资源交换和状态传输的该时段期间,应用可以具有它在其间可能无法对传入的分组做出响应并且不传送它自己的分组的封锁时段(blackout period)。因此,将该时段保持为尽可能短将会是有利的。将状态传输操作划分为两个或更多阶段能够有助于保持状态传输的第二阶段的持续时间较短。在一些实施方式中,该封锁时段能够被保持为低于100ms。
图1是根据说明性实施方式的用于在没有重启的情况下升级应用的系统100的框图。系统100包括服务器110、交换机120和网络105。服务器110包括处理器130、存储器140和网络接口150。
服务器110是向客户端设备提供服务的计算机程序或设备。该服务可以包括针对客户端的数据处理或共享。服务器110能够提供应用服务器、数据库服务器、文件服务器、邮件服务器、域名系统(DNS)服务器、游戏服务器等中的一个或多个的服务。例如,服务器110可以执行消息输送应用、网络驱动器应用,以及与传输层支持或网络层支持的应用。其它应用可以包括始终在线的虚拟现实或增强现实系统、移动应用,或者诸如托管虚拟机类的远程生产力应用。在一些实施方式中,服务器110能够经由诸如交换机120的一个或多个交换机连接至诸如网络105的网络。交换机120可以是网络凹换机或者包括路由器、调制解调器、边缘交换机、柜顶交换机(top-of-rack switch)等的一个或多个的网络交换机系统。在一些实施方式中,服务器110能够经由无线、有线或光学连接而连接至网络105。例如,服务器110能够经由蜂窝LTE塔台、移动接入点或卫星连接至网络。网络105可以表示诸如数据中心网络的安全的局域网(LAN),或者诸如互联网的不安全的广域网(WAN)。
服务器110包括处理器130、存储器140和网络接口150。处理器130可以是微处理器或者多个微处理器的系统。一个或多个微处理器可以包括单核或多核架构。处理器130可以包括定制或可编程的集成电路(IC),诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器130可以执行内核、操作系统以及一个或多个应用或服务。应用包括服务器110所执行以便由客户端直接或间接使用的软件程序。作为对比,内核和操作系统管理服务器110的硬件和软件资源,并且向应用提供服务。
存储器140可以包括固态、磁性或光学数据存储设备之一或者它们的组合。存储器140可以包括随机访问存储器和直接访问数据存储,并且可以是任意的易失性或非易失性类型。存储器140可以包括数据和/或编程代码。编程代码可以包括操作系统以及服务器110所执行的任意应用或软件服务。存储器140能够存储在处理器130上执行的应用的编程代码,以及由应用所使用或产生的数据。
有时,可能期望对应用升级以修复小故障、安装补丁或更新,或者升级到新的版本(在本文总体上被称作“更新”的操作)。传统上,这要求以三个不同的步骤停止应用,更新应用,以及重启应用。在停止应用之前,服务器130能够存储检查点,所述检查点能够在重启之后被加载到经更新的应用以允许经更新的应用继续该应用在更新之前所执行的服务。然而,尽管能够在它离开的地方进行拾取,但是应用仍然要在一段时间内离线并且无法对客户端做出响应。在一些情况下,可能使用冗余硬件以及将客户端迁移至辅机器来允许主机器在不妨碍针对客户端的服务的情况下升级应用。这在所需的附加基础设施以及在机器之间迁移应用状态的复杂度两方面都增加了系统的负担。因此,能够在并不重启的情况下在机器上升级应用将会是有利的。
为了在对客户端使用最低程度的妨碍的情况下升级应用,服务器110能够在处理器130上执行两个应用实例。也就是说,处理器130能够同时执行应用A 132和应用B 134。处理器130能够在一个或多个客户端的服务中执行应用A 132。如果期望对应用进行更新,则处理器130能够启动该应用的第二实例作为应用B 134。应用A 132和应用B 134包括用于处理相互发现和状态传输的协议的编程。该协议能够定义应用实例如何发现彼此并且交换状态信息,在需要的情况下包括状态数据的中间格式。一旦两个应用实例都被执行,一个就能够经由对诸如Unix域端口之类的公知地址的定期检查或轮询来定位另一个。一旦应用A132和应用B 134建立了通信链路,它们就能够开始传输存储在存储器140中的状态信息。该状态信息包括有关应用实例的状态的信息以及有关其客户端的服务的信息。该状态信息可以包括后台状态信息和前台状态信息。后台状态信息和前台状态信息是在本公开中用来基于针对状态信息的相对权重或入侵性而对状该态信息的各个方面加以区分的任意术语。作为示例而非限制,后台状态信息可以包括诸如已连接客户端的列表、应用实例和客户端之间共享的存储器空间的位置、文件描述符以及针对内核资源的访问之类的信息。作为实例而非限制,前台状态信息可以包括传输控制协议(TCP)拥塞窗口大小,传送中的任意分组的序列标识符,以及被接收但尚未确认的分组的序列标识符。总体上,针对前台状态信息的改变趋向于是常规且平凡的,具有随每个所传送或接收的请求、响应或者甚至分组发生的变化。作为对比,针对后台状态信息的改变则趋向于表示具有更宽泛影响的配置变化,诸如增加或丢弃客户端,以及访问或释放系统资源。
应用实例能够将它们的状态信息存储在存储器140中。应用A 132可以将其状态信息存储在存储器140的存储器A 142中,并且应用B 134可以将其状态信息存储在存储器B144中。存储器A 142和存储器B 144可以表示连续的存储器硬件片段内的不同空间或寄存器,或者可以表示不同的存储器硬件片段,诸如分离的存储器IC。在一些实施方式中,存储器A 142和存储器B 144可以在共享存储器区域中部分或完全重叠。在采用共享存储器空间的实施方式中,状态信息的子集可能根本无需被传输。在状态传输期间,应用实例可以相互协调从而将状态信息从存储器A 142复制到存储器B 144。
虽然两个应用实例能够在相同时间保持在线,但是在状态信息传输的期间可能存在任一个应用实例都无法在其间更新一些状态信息的时段。在那些时段期间,可能不可能做出配置变化或者针对传入请求的响应。为了使得缩减功能的时段对客户端服务的影响最小化,状态信息能够在两个或更多阶段从应用A 132传输至应用B 134。例如,应用A 132能够首先将后台状态信息传输至应用B 134。在后台状态信息的传输期间,应用A 132能够拒绝(rebuff)改变后台状态的尝试以便防止后台状态信息在应用更新期间变为废弃。然而,由于针对后台状态的改变是相对不频繁的,所以客户端将会在该时段期间体验到大多数服务的中断的可能性很低。一旦应用A 132已经将后台状态信息传输至应用B 134,应用B 134就能够向应用A 132声明对激活准备就绪。应用A 132能够将其前台状态信息传输至应用B134。在前台状态信息的传输期间,应用实例可能无法维持状态通信。客户端可能在该时段期间由于应用A 132忽略任何所接收到的分组而体验到封锁。但是由于前台状态信息表示相对少量的数据,所以前台状态信息的传输能够相对快速地进行。封锁时段因此能够保持简短。在一些实施方式中,该封锁时段能够被保持为小于10ms。在一些实施方式中,该封锁时段能够被保持为小于20ms、50ms或100ms。以下关于图2进一步描述应用更新的操作。
在一些实施方式中,服务器110能够附加地在处理器130上执行主控应用136。主控136能够协调应用A 132和应用B 134之间的操作。作为示例而非限制,主控136能够发起应用B 134、从应用B 134接收准备好激活消息、通知应用A 132去激活、接收应用A 132被去激活的消息、通知应用B 134激活、并且终止应用A 132。虽然主控136并非对于所有实施方式都是必要的,但是它能够提供若干益处。主控136可以是相对简单的无状态应用,并且因此可以非常稳定。主控136能够针对传输状态提供单一基准点。例如,主控136可以具有有关故障情况下的更新状态的完整信息。主控136能够执行各种类型的健康检查和非变量检查来确保升级成功地且以及时的方式得以进行。如果更新中的任何步骤失败,主控136能够返回至与应用中的故障状态是什么相独立的的回滚或逐步升级过程。在一些实施方式中,主控136能够协助对多个不同应用或应用类型升级,并且针对所有升级提供单一基准点。例如,主控136可以协调第三应用实例和包括第三应用实例的更新的第四应用实例之间的操作。第三应用实例和第四应用实例执行不同于第一应用实例和第二应用实例的服务。以下关于图3进一步描述借助于主控136的应用更新的操作。
图2示出了根据说明性实施方式的用于在没有重启的情况下升级应用的事件的序列200。序列200描述了应用A 202、应用B 204、存储器A 206和存储器B 208的操作以及它们之间的通信。应用A 202和应用B 204可以分别类似于如上文关于图1所描述的应用A 132和应用B 134。类似地,存储器A 206和存储器B 208可以分别类似于如上文关于图1所描述的存储器A 142和存储器B 144。
在阶段210,应用A 202正在执行,之前已经被启动,并且假定在一段时间内为客户端服务。
在阶段212,应用B 204启动。应用A 202和应用B 204现在同时执行,但是应用B204当前并未对客户端服务。在阶段212期间,应用B 204将定位应用A 202(或反之亦然)。应用实例能够经由诸如Unix域端口之类的公知端口相互发现并连接。当应用实例进行联系时,它们能够发起状态传输。
在阶段214,应用A 202从存储器A 206检索其后台状态信息。这可以包括检索已连接客户端的列表、共享存储器空间的位置、文件描述符,并且释放内核资源。在阶段214之后,应用A 202和应用B 204都无法对后台状态信息做出改变直至应用B 204在阶段230激活。在该缩减功能的时段期间,应用A 202可能无法打开新的连接,或者访问从应用A 202传输至应用B 204的某些系统资源。
在阶段216,应用A 202将后台状态信息发送至应用B 204。在一些实施方式中,应用A 202能够将后台状态信息转换为中间格式而使得应用A 202和应用B 204都能够对它进行解释。在一些实施方式中,至少该后台状态信息的子集与特定客户端设备相关联。应用A202能够经由串行化为与被用来服务客户端设备的形式不同的中间格式而将与特定客户端设备相关联的后台状态信息传输至应用B 204。
在阶段218,应用B 204将所接收到的后台状态信息存储到存储器B208。
在阶段220,应用B 204声明其对激活准备就绪。
在阶段222,响应于从应用B 204接收到该声明,应用A 202从存储器A 206检索其前台状态信息。在阶段222之后,应用A 202和应用B 204都无法对前台状态信息做出改变直至应用B 204在阶段230激活。在该时段期间,应用A 202将忽略任何传入的分组,这创建了封锁时段。
在阶段224,应用A 202将前台状态信息发送至应用B 204。在一些实施方式中,应用A 202能够将前台状态信息转换为中间格式而使得应用A 202和应用B 204都能够对它进行解释。在一些实施方式中,至少前台状态信息的子集与特定客户端设备相关联。应用A202能够经由串行化为与被用来服务客户端设备的形式不同的中间格式而将与特定客户端设备相关联的前台状态信息传输至应用B 204。
在阶段226,应用B 204将所接收到的前台状态信息存储在存储器B208中。
在阶段228,应用A 202释放系统资源。这些可以包括无法一次被多于一个的应用或应用实例所访问的单用户系统资源,诸如某些端口、外设或存储器位置。应用B 204能够在这些资源被应用A 202所释放时访问它们。一旦应用B 204已经访问了所有被释放的资源,它就成为了活动的应用实例。
在阶段230,应用B 204向应用A 202声明激活完成。应用B 204能够开始处理往来于客户端的业务,因此结束封锁时段。
在阶段232,应用A 202能够终止。终止可能涉及到需要大量系统资源的重大操作。为了避免与其它应用的执行形成干扰,服务器110能够徐缓地终止应用A 202;也就是说,在空闲时段的期间利用低优先级来终止。
序列200的各个阶段可以以不同顺序进行并且可以使得多个阶段同时进行,并且可以包括比以上所描述的那些更多或更少的阶段,而并不背离本公开的范围。
图3示出了根据说明性实施方式的用于使用主控应用310以便在没有重启的情况下升级应用的事件的序列300。序列300描述了应用A 302、应用B 304、存储器A 306、存储器B 308和主控310的操作以及它们之间的通信。应用A 302和应用B 304可以分别类似于如上文关于图1所描述的应用A 132和应用B 134。类似地,存储器A 306和存储器B 308可以分别类似于如上文关于图1所描述的存储器A 142和存储器B 144。主控310则可以类似于以上关于图1所描述的主控136。
在阶段312,应用A 302正在执行,它在之前已经被启动,并且假定在一段时间内为客户端服务。
在阶段314,主控310发起应用B 304。应用A 302和应用B 304现在同时执行,但是应用B 304并未同时为客户端服务。在一些实施方式中,应用B 304能够经由诸如Unix域端口之类的公知端口发现应用A 302(或者反之亦然)。当应用实例进行联系时,它们能够发起状态传输。在一些实施方式中,主控310将定位每个应用实例并且在它们之间转达通信。在适当时间,主控310能够通过指示应用A 302从存储器A 306检索它的后台状态来发起状态传输。
在阶段316,应用A 302从存储器A 306检索其后台状态信息。这可以包括检索已连接客户端的列表、共享存储器空间的位置、文件描述符,以及释放内核资源。在阶段316之后,应用A 302和应用B 304都不能对后台状态信息做出改变直至应用B 304在阶段336激活。在该缩减功能的时段期间,应用A 302可能无法打开新的连接或者访问从应用A 302传输至应用B 304的某些系统资源。
在阶段318,应用A 302将后台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够将后台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够经由主控310将后台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够将后台状态信息转换为中间格式而使得应用A 302和应用B 304都能够对它进行解释。在一些实施方式中,至少该后台状态信息的子集与特定客户端设备相关联。应用A 302能够经由串行化为与被用来服务客户端设备的形式不同的中间格式而将与特定客户端设备相关联的后台状态信息传输至应用B 304。
在阶段320,应用B 304将所接收到的后台状态信息存储到存储器B 308。
在阶段322,应用B 304通过向主控310发送声明来声明对激活准备就绪。在一些实施方式中,主控310能够通过定期向文件系统轮询应用B 304所留下的信号或标志而获得应用B 304的准备就绪状态。
在阶段324,主控310向应用A 302发送指令以开始去激活。在一些实施方式中,应用A 302能够通过定期向文件系统轮询主控310所留下的信号或标志而获得用于去激活的指令。
在阶段326,响应于从主控310接收到该声明指令,应用A 302从存储器A 306检索其前台状态信息。在阶段326之后,应用A 302和应用B 304都无法对前台状态信息做出改变直至应用B 304在阶段336激活。在该时段期间,应用A 302将忽略任何传入的分组,这创建了封锁时段。
在阶段328,应用A 302将前台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够将前台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够经由该主控310将前台状态信息发送至应用B 304。在一些实施方式中,应用A 302能够将前台状态信息转换为中间格式而使得应用A 302和应用B 304都能够对它进行解释。在一些实施方式中,至少前台状态信息的子集与特定客户端设备相关联。应用A 302能够经由串行化为与被用来服务客户端设备的形式不同的中间格式而将与特定客户端设备相关联的前台状态信息传输至应用B 304。
在阶段330,应用B 304将前台状态信息存储在存储器B 308中。
在阶段332,应用A 302释放系统资源。这些可以包括无法一次被多于一个的应用或应用实例所访问的单用户系统资源,诸如某些端口、外设或存储器位置。在一些实施方式中,主控310能够从应用A 302接收应用B 304能够在这些资源被应用A 302所释放时访问它们的通知。一旦应用B 304已经访问了所有被释放的资源,它就成为了活动的应用实例。
在阶段334,应用A 302能够向主控310通知前台状态信息的传输以及资源的释放已完成。
在阶段336,在从应用A 302接收到前台状态信息的传输以及资源的释放已完成的通知时,主控310能够指示应用B激活。
在阶段338,应用B 304向主控声明激活完成。应用B 304能够开始处理往来于客户端的业务,因此结束封锁时段。
在阶段340,主控310指示应用A 302终止。终止可能涉及到需要大量系统资源的重大操作。为了避免与其它应用的执行形成干扰,服务器110能够徐缓地终止应用A 302;也就是说,在空闲时段的期间利用低优先级来终止。
在应用更新的期间,主控310能够保存与应用更新的状态相关的状态信息。如果更新在任意时点失败,主控310能够从开头或者从任意适当的中间阶段重新开始更新。主控310还能够将与应用更新的状态相关的状态信息提供至在服务器110上执行的其它应用。在一些实施方式中,主控310能够串行或同时地管理针对多个应用的更新。
序列300的各个阶段可以以不同顺序进行并且可以使得多个阶段同时进行,并且可以包括比以上所描述的那些更多或更少的阶段,而并不背离本公开的范围。
图4是根据说明性实施方式的在没有重启的情况下更新应用的示例方法400的流程图。方法400包括执行第一应用实例(阶段410)。方法400包括当第一应用实例仍在执行的同时启动第二应用实例(阶段420)。方法400包括将后台状态信息从第一应用实例传输至第二应用实例(阶段430)。方法400包括由第二应用实例响应于后台状态信息的传输完成而声明激活准备就绪(阶段440)。方法400包括对第一应用实例去激活(阶段450)。方法400包括激活第二应用实例(阶段460)。方法400包括由第二应用实例响应于第二应用实例的激活完成而声明激活完成(阶段470)。方法400包括终止第一应用实例(阶段480)。
方法400包括执行第一应用实例(阶段410)。在方法400开始时,服务器110将在处理器130上执行第一应用实例。在一些实施方式中,第一应用实例能够定期寻求发现第二应用实例。第一应用实例能够通过监视公知地址来寻求发现第二应用实例。第一应用实例能够定期地轮询该公知地址,诸如每秒钟、每隔几秒钟,或者以一些其它适当的间隔。
方法400包括当第一应用实例仍在执行的同时启动第二应用实例(阶段420)。服务器110能够在第一应用实例仍在执行的同时在处理器130上开始第二应用实例的执行。第二应用实例包括第一应用实例的经更新版本。也就是说,第二应用实例能够表示第一应用实例的新版本,其包括小故障修复、补丁或软件升级。第一应用实例和第二应用实例能够通过诸如Unix域端口之类的公知地址相互发现并且协定发起状态的传输。在一些实施方式中,第二应用实例能够通过轮询公知地址来寻求发现第一应用实例。
方法400包括将后台状态信息从第一应用实例传输至第二应用实例(阶段430)。在一些实施方式中,第一应用实例能够从存储器140检索其后台状态信息并且将它发送至第二应用实例,所述第二应用实例进而将它存储在存储器140的不同部分中。在一些实施方式中,第一应用实例能够将包含后台状态信息的存储器区域的控制转交给第二应用实例。在一些实施方式中,能够使用数据传输和存储器共享的组合来共享后台状态信息。在一些实施方式中,后台状态信息可以包括以下的一个或多个:已连接客户端设备的列表,与已连接客户端共享的存储器空间的位置,文件描述符,以及对内核资源的访问。在一些实施方式中,第一应用实例能够将后台状态信息转换为中间格式。该中间格式使得第一应用实例和第二应用实例都能够对它进行解释。在一些实施方式中,至少后台状态信息的子集与特定客户端设备相关联。第一应用实例能够经由串行化为不同于被用来服务客户端设备的形式的中间格式而将与特定客户端设备相关联的后台状态信息传输至第二应用实例。
方法400包括由第二应用实例响应于后台状态信息的传输完成而声明激活准备就绪(阶段440)。在一些实施方式中,第二应用实例能够将该通知发送至第一应用实例。
方法400包括对第一应用实例去激活(阶段450)。第一应用实例能够在从第二应用实例接收到对准备就绪的声明时开始去激活。去激活可以包括将前台状态信息从第一应用实例传输至第二应用实例。在一些实施方式中,前台状态信息能够针对一个或多个客户端设备中的每一个而包括以下的一个或多个:TCP拥塞窗口大小、传送中的任意分组的序列标识符、以及被接收但尚未确认的任意分组的标识符。去激活可以进一步包括由第一应用实例释放单一访问资源;也就是一次仅能够由一个应用实例所访问的系统资源。一旦第一应用实例开始去激活,应用实例就能够进入封锁时段,其间第一应用实例和第二应用实例将忽略任何所接收到的分组。该封锁时段能够继续直至第二应用实例开始激活。
方法400包括激活第二应用实例(阶段460)。激活可以包括由第二应用实例从第一应用实例接收前台状态信息。激活可以进一步包括由第二应用实例访问之前由第一应用实例所释放的单一访问资源。
方法400包括由第二应用实例响应于第二应用实例的激活完成而声明激活完成(阶段470)。一旦第二应用实例已经接收到前台状态信息并且访问了单一访问资源,第二应用实例就能够声明激活完成。一旦激活完成,第二应用实例就能够接管在升级之前由第一应用实例所处理的任何客户端服务,以及开始接受新的客户端连接。
方法400包括终止第一应用实例(阶段480)。在接收到来自第二应用实例的通知或者来自主控应用的指令时,第一应用实例能够以并不妨碍处理器130上执行的其它应用的操作的方式终止。
在一些实施方式中,主控应用能够帮助协调第一应用实例和第二应用实例之间的操作。作为示例而非限制,主控应用能够在阶段420发起第二应用实例的启动。主控应用能够在阶段440从第二应用实例接收对激活准备就绪的声明,并且在阶段450指示第一应用实例去激活。主控能够在阶段450从第一应用实例接收去激活完成的通知,并且在阶段460指示第二应用实例激活。主控应用能够在来自第二应用实例的激活完成的通知之后在阶段480指示第一应用实例终止。主控应用能够执行方法400的更多或更少的操作而并不背离本公开的范围。
在一些实施方式中,主控应用能够帮助协调用于多于一个的应用或应用类型的更新的操作。例如,主控应用能够协调第三应用实例和包括第三应用实例的更新的第四应用实例之间的操作。第三应用实例和第四应用实例执行与第一应用实例和第二应用实例不同的服务。
方法400的各个阶段可以以不同顺序进行并且可以使得多个阶段同时进行,并且可以包括比以上所描述的那些更多或更少的阶段,而并不背离本公开的范围。
图5是根据说明性实施方式的可以被采用以实施本文所描述和图示的系统和方法的元素的示例计算系统900的框图。计算系统900可以在实施图1-4所示的在没有重启的情况下更新应用的系统和方法时被采用。
在宽泛概述中,计算系统910包括用于依据指令执行动作的至少一个处理器950以及用于存储指令和数据的一个或多个存储器设备970或975。所图示的示例计算系统910包括经由总线915利用至少一个网络接口控制器920与连接至一个或多个网络设备924、存储器970以及例如I/O接口的任意其它设备980的一个或多个网络接口端口922进行通信的一个或多个处理器950。通常,处理器950将执行从存储器所接收的指令。所图示的处理器950整合有或直接连接至高速缓存存储器975。
更详细地,处理器950可以是处理指令的任意逻辑电路,所述指令例如是从存储器970或高速缓存975所取得的指令。在许多实施例中,处理器950是微处理器单元或专用处理器。计算设备900可以基于能够如本文所描述的进行操作的任意处理器或处理器集合。在一些实施方式中,处理器950能够执行图1-4所示的在没有重启的情况下更新应用的方法。处理器950可以是单核或多核处理器。处理器950可以是多个处理器。在一些实施方式中,处理器950可以被配置为运行多线程操作。在一些实施方式中,处理器950可以托管一个或多个虚拟机或容器以及用于管理该虚拟机或容器的操作的监管程序或容器管理器。在这样的实施方式中,图1-4所示的系统和方法能够在处理器950上提供的虚拟化或集装化环境内实施。
存储器970可以是适于存储计算机可读数据的任意设备。存储器970可以是具有固定存储的设备或者用于读取可移除存储介质的设备。示例包括所有形式的非易失性存储器、介质和存储器设备、半导体存储器设备(例如,EPROM、EEPROM、SDRAM和闪存设备)、磁盘、磁光盘,以及光盘(例如,CD ROM、DVD-ROM或盘)。计算系统900可以具有任意数量的存储器设备970。在一些实施方式中,存储器970可以包括与图1-4所示的在没有重启的情况下更新应用的方法相对应的指令。在一些实施方式中,存储器970支持能够由计算系统910所提供的虚拟机或容器执行环境访问的虚拟化或集装化的存储器。
高速缓存存储器975通常是为了快速读取时间而紧邻处理器950部署的计算机存储器的形式。在一些实施方式中,高速缓存存储器975是处理器950的一部分或者与其处于相同芯片上。在一些实施方式中,存在多个级别的高速缓存975,例如L2和L3高速缓存层级。
网络接口控制器920管理经由网络接口922(有时也被称作网络接口端口)的数据交换。网络接口控制器920处理OSI模型中的物理和数据链路层以便进行网络通信。在一些实施方式中,一些网络接口控制器的任务由一个或多个处理器950来处理。在一些实施方式中,网络接口控制器920是处理器950的一部分。在一些实施方式中,计算系统910具有多个网络接口控制器920。网络接口922是用于物理网络链路的连接点。在一些实施方式中,网络接口控制器920支持无线网络连接并且接口端口922是无线接收器/传送器。通常,计算设备910经由到网络接口922的物理或无线链路与其它网络设备924交换数据。在一些实施方式中,网络接口控制器920实施诸如以太网的网络协议。
其它网络设备924经由网络接口端口922连接至计算设备910。其它网络设备924可以是对等计算设备、网络设备,或者具有网络功能的任意其它计算设备。例如,第一网络设备924可以是诸如集线器、网桥、交换机或路由器的网络设备,其将计算设备910连接至诸如互联网的数据网络。
其它设备980可以包括I/O接口、外部串行设备端口,以及任意的附加协同处理器。例如,计算系统910可以包括用于连接输入设备(例如,键盘、麦克风、鼠标,或者其它指示设备)、输出设备(例如,视频显示器、扬声器或打印机)或者附加存储器设备(例如,便携式闪存驱动器或外部媒体驱动器)的接口(例如,通用串行总线(USB)接口)。在一些实施方式中,计算设备900包括诸如协同处理器的附加设备980,例如,算术协同处理器能够以高精度或复杂计算来辅助处理器950。
该说明书中所描述的主题和操作能够以数字电子电路来实施,或者以体现于有形介质上的计算机软件、固件或硬件来实施,该硬件包括该说明书中所公开的结构及其结构等同物,或者以它们中一个或多个的组合来实施。该说明书中所公开主题的实施例能够被实施为体现于有形介质上的一个或多个计算机程序,例如在一个或多个计算机存储介质上进行编码以便由数据处理装置执行或者控制其操作的一个或多个计算机程序指令的模块。计算机存储介质可以是计算机可读存储设备、计算机可读存储底层、随机或串行访问存储器阵列或设备或者它们中一个或多个的组合,或者包括于其中。计算机存储介质还可以是一个或多个单独的物理组件或媒体(例如,多个CD、碟片或其它存储设备),或者包括于其中。计算机存储介质可以是有形且非瞬态的。
该说明书中所描述的操作能够被实施为由数据处理装置对粗糙你还在一个或多个计算机可读存储设备上或者从其它来源接收的数据所执行的操作。该操作可以在该数据处理装置的原生环境内执行或者在该数据处理装置所托管的一个或多个虚拟机或容器内执行。
计算机程序(也被称作程序、软件、软件应用、脚本或代码)能够以任意形式的编程语言进行编写,包括编译或解释语言、声明或过程语言,并且其可以以任意形式被采用,包括作为独立程序或者作为适于在计算环境中使用的模块、组件、子程序、对象或其它单元。计算机程序可以对应于文件系统中的文件,但是并非需要如此。程序可以存储在保存其它程序或数据(例如,标记语言文档中所存储的一个或多个脚本)的文件的一部分之中,存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序能够被部署为在一台计算机上执行或者在位于一个地点或跨多个地点分布并且通过通信网络进行互连的多台计算机上执行。通信网络的示例包括局域网(LAN)和广域网(WAN)、互联网络(例如,互联网)以及点对点网络(例如,对等点对点网络)。
该说明书中所描述的处理和逻辑流程能够由一个或多个可编程计算机来实施,所述可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来实行功能。所述处理和逻辑流程还能够由例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路所实行,并且装置也能够被实施为所述专用逻辑电路。
虽然该说明书包含许多具体实施细节,但是这些并不应当被理解为对任何发明以及所要求保护的内容的范围进行限制,而是作为特定于特定发明的特定实施例的特征的描述。该说明书中以单独实施例为背景进行描述的某些特征也能够在单个实施例中以组合形式来实施。相反,以单个实施例为背景进行描述的各种特征也能够单独或以任意适当子组合在多个实施例中实施。此外,虽然特征在上文中可以被描述为以某种组合进行工作并且甚至最初要求如此,但是来自所要求组合的一个或多个特征在一些情况下可以脱离该组合,并且所要求的组合可以针对子组合或子组合的变化。
类似地,虽然操作在图中以特定顺序进行描绘,但是这并不应当被理解为要求这样的操作以所示出的特定顺序或以连续顺序来执行,或者所有所图示的操作都要被执行以实现所期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,以上所描述实施例中的各种系统组件的划分并不应当被理解为在所有实施例中都要求这样的划分,并且应当理解的是,所描述的程序组件和系统通常在单个软件产品中集成在一起或者被封装到多个软件产品中。
对“或”的引用可以被理解为是包含性的,而使得任何使用“或”描述的术语都可以指示单个、多于一个以及所有的所描述术语中的任一种。标记“第一”、“第二”、“第三”等并不一定意味着指示顺序,而通常仅是被用来在相同或相似的事项或元素之间加以区分。
针对本公开中所描述的实施方式的各种修改对于本领域技术人员会是轻易地显而易见的,并且本文所描述的一般原则可以应用于其它实施方式而并不背离本公开的精神和范围。因此,权利要求并非意在被局限于本文所示出的实施方式,而是要依据与本公开相一致的最宽范围,本文所公开的原则和新颖特征。
Claims (20)
1.一种在没有重启的情况下更新应用的系统,包括:
处理器;以及
具有存储于其上的指令的存储器,所述指令用于使得所述处理器:
执行第一应用实例;
在所述第一应用实例仍在执行的同时启动第二应用实例,所述第二应用实例包括所述第一应用实例的更新版本;
将第一状态信息集合从所述第一应用实例传输至所述第二应用实例;
由所述第二应用实例响应于所述第一状态信息集合的所述传输完成而声明激活准备就绪;
对所述第一应用实例去激活,包括:
将第二状态信息集合从所述第一应用实例传输至所述第二应用实例;并且
由所述第一应用实例释放单一访问资源;
激活所述第二应用实例,包括:
接收所述第二状态信息集合;并且
访问所述单一访问资源;
由所述第二应用实例响应于所述第二应用实例的激活完成而声明激活完成;并且
终止所述第一应用实例。
2.根据权利要求1所述的系统,其中所述指令使得所述处理器执行主控应用以协调所述第一应用实例和所述第二应用实例之间的操作。
3.根据权利要求2所述的系统,其中所述主控应用:
发起所述第二应用实例的启动;
从所述第二应用实例接收对激活准备就绪的所述声明;
响应于接收到对准备就绪的所述声明而指示所述第一应用实例去激活;
从所述第一应用实例接收去激活完成的通知;
响应于接收到所述通知而指示所述第二应用实例激活;并且
终止所述第一应用实例。
4.根据权利要求2所述的系统,其中所述主控应用协调第三应用实例和包括所述第三应用实例的更新的第四应用实例之间的操作,其中所述第三应用实例和所述第四应用实例执行与所述第一应用实例和所述第二应用实例不同的服务。
5.根据权利要求1所述的系统,其中所述第一应用实例定期针对所述第二用实例的存在而检查预定地址或端口。
6.根据权利要求1所述的系统,其中所述第一状态信息集合包括以下的至少一个:
已连接客户端的列表,
共享存储器空间的位置,
文件描述符,以及
针对内核资源的访问。
7.根据权利要求1所述的系统,其中所述第一状态信息集合被写为所述第一应用实例和所述第二应用实例都能够解释的中间格式。
8.根据权利要求1所述的系统,其中:
至少所述第一状态信息集合的子集与特定客户端相关联;并且
所述子集经由串行化被传输至与用来服务特定客户端的形式不同的中间格式。
9.根据权利要求1所述的系统,其中所述第二状态信息集合包括以下的至少一个:
TCP拥塞窗口大小,
传送中的任意分组的序列标识符,以及
被接收但尚未确认的任意分组的序列标识符。
10.根据权利要求1所述的系统,其中所述指令使得所述处理器:
保持在开始对所述第一应用实例的去激活和完成对所述第二应用实例的激活之间的封锁时段,在所述封锁时段期间所述第一应用实例和所述第二应用实例都将不对任何用户输入做出响应。
11.一种在没有重启的情况下更新应用的方法,包括:
由处理器执行第一应用实例;
由所述处理器在所述第一应用实例仍在执行的同时启动第二应用实例,所述第二应用实例包括所述第一应用实例的更新版本;
由所述处理器将第一状态信息集合从所述第一应用实例传输至所述第二应用实例;
由所述第二应用实例响应于所述第一状态信息集合的传输完成而声明激活准备就绪;
由所述处理器对所述第一应用实例去激活,包括:
将第二状态信息集合从所述第一应用实例传输至所述第二应用实例;并且
由所述第一应用实例释放单一访问资源;
由所述处理器激活所述第二应用实例,包括:
接收所述第二状态信息集合;并且
访问所述单一访问资源;
由所述第二应用实例响应于所述第二应用实例的激活完成而声明激活完成;并且
由所述处理器终止所述第一应用实例。
12.根据权利要求11所述的方法,包括:
由所述处理器执行主控应用以协调所述第一应用实例和所述第二应用实例之间的操作。
13.根据权利要求12所述的方法,其中所述主控应用:
发起所述第二应用实例的所述启动;
从所述第二应用实例接收对激活准备就绪的所述声明;
响应于接收到对准备就绪的所述声明而指示所述第一应用实例去激活;
从所述第一应用实例接收去激活完成的通知;
响应于接收到所述通知而指示所述第二应用实例激活;并且
终止所述第一应用实例。
14.根据权利要求12所述的方法,其中所述主控应用协调第三应用实例和包括所述第三应用实例的更新的第四应用实例之间的操作,其中所述第三应用实例和所述第四应用实例执行与所述第一应用实例和所述第二应用实例不同的服务。
15.根据权利要求11所述的方法,包括:
由所述第一应用实例针对所述第二用实例的存在而定期检查预定地址或端口。
16.根据权利要求11所述的方法,其中所述第一状态信息集合包括以下的至少一个:
已连接客户端的列表,
共享存储器空间的位置,
文件描述符,以及
针对内核资源的访问。
17.根据权利要求11所述的方法,其中所述第一状态信息集合被写为所述第一应用实例和所述第二应用实例都能够解释的中间格式。
18.根据权利要求11所述的方法,其中:
所述第一状态信息集合的至少一子集与特定客户端相关联,并且所述子集经由串行化被传输至与用来服务特定客户端的形式不同的中间格式。
19.根据权利要求11所述的方法,其中所述第二状态信息集合包括以下的至少一个:
TCP拥塞窗口大小,
传送中的任意分组的序列标识符,以及
被接收但尚未确认的任意分组的序列标识符。
20.根据权利要求11所述的方法,包括:
由所述处理器保持在开始对所述第一应用实例的去激活和完成对所述第二应用实例的激活之间的封锁时段,在所述封锁时段期间所述第一应用实例和所述第二应用实例都将不对任何用户输入做出响应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/583,849 | 2017-05-01 | ||
US15/583,849 US10261780B2 (en) | 2017-05-01 | 2017-05-01 | Transparent upgrade of a system service or application |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108881372A true CN108881372A (zh) | 2018-11-23 |
Family
ID=61827824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810391505.3A Pending CN108881372A (zh) | 2017-05-01 | 2018-04-27 | 系统服务或应用的透明升级 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10261780B2 (zh) |
EP (1) | EP3399407B1 (zh) |
CN (1) | CN108881372A (zh) |
DE (2) | DE102018108859A1 (zh) |
GB (1) | GB2563312B (zh) |
WO (1) | WO2018203969A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11531531B1 (en) * | 2018-03-08 | 2022-12-20 | Amazon Technologies, Inc. | Non-disruptive introduction of live update functionality into long-running applications |
WO2020104448A1 (en) * | 2018-11-19 | 2020-05-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods providing network service restoration context and related service instance sets and storage resource nodes |
US11019178B1 (en) * | 2019-01-07 | 2021-05-25 | West Corporation | Deployment router based on channel traffic |
US11048549B2 (en) * | 2019-04-04 | 2021-06-29 | Google Llc | Transferral of process state and/or components in computing environments |
US11070621B1 (en) * | 2020-07-21 | 2021-07-20 | Cisco Technology, Inc. | Reuse of execution environments while guaranteeing isolation in serverless computing |
US20220164221A1 (en) * | 2020-11-23 | 2022-05-26 | Motorola Solutions, Inc. | Preserving persistent link connections during a cloud-based service system upgrade |
EP4064045A1 (en) | 2021-03-25 | 2022-09-28 | ABB Schweiz AG | Method for real-time updating of process software |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104395879A (zh) * | 2012-06-21 | 2015-03-04 | 微软公司 | 在运行具有握手的客户端界面时的自动更新 |
CN104423989A (zh) * | 2013-09-02 | 2015-03-18 | 联想(北京)有限公司 | 一种应用更新方法及电子设备 |
US20160092202A1 (en) * | 2014-09-25 | 2016-03-31 | International Business Machines Corporation | Live Operating System Update Mechanisms |
CN105677404A (zh) * | 2015-12-31 | 2016-06-15 | 拉扎斯网络科技(上海)有限公司 | 一种基于Zookeeper的配置更新方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360363B1 (en) * | 1997-12-31 | 2002-03-19 | Eternal Systems, Inc. | Live upgrade process for object-oriented programs |
US7155462B1 (en) | 2002-02-01 | 2006-12-26 | Microsoft Corporation | Method and apparatus enabling migration of clients to a specific version of a server-hosted application, where multiple software versions of the server-hosted application are installed on a network |
WO2003067381A2 (en) * | 2002-02-04 | 2003-08-14 | Intel Corporation | Table driven programming system for a services processor |
US7000229B2 (en) * | 2002-07-24 | 2006-02-14 | Sun Microsystems, Inc. | Method and system for live operating environment upgrades |
US7555751B1 (en) * | 2004-08-11 | 2009-06-30 | 3Com Corporation | Method and system for performing a live system upgrade |
US8146073B2 (en) | 2004-09-30 | 2012-03-27 | Microsoft Corporation | Updating software while it is running |
US8713556B2 (en) * | 2008-02-25 | 2014-04-29 | Sap Ag | Virtual appliance update method |
US8332848B2 (en) * | 2009-03-12 | 2012-12-11 | Red Hat Israel, Ltd. | Mechanism for staged upgrades of a virtual machine system |
US8819660B2 (en) * | 2011-06-29 | 2014-08-26 | Microsoft Corporation | Virtual machine block substitution |
US9438494B2 (en) * | 2011-12-28 | 2016-09-06 | Avvasi Inc. | Apparatus and methods for optimizing network data transmission |
US20140059534A1 (en) * | 2012-08-22 | 2014-02-27 | General Electric Company | Method and system for software management |
US20140229928A1 (en) * | 2013-02-11 | 2014-08-14 | Claes Göran Edström | Upgrading software in production environments |
US9888059B2 (en) * | 2013-03-15 | 2018-02-06 | Gordon E. Seay | Methods and systems for switching between software applications |
US10007546B2 (en) | 2015-01-19 | 2018-06-26 | Vmware, Inc. | Operating-system exchanges using memory-pointer transfers |
US9734000B2 (en) * | 2015-06-18 | 2017-08-15 | Microsoft Technology Licensing, Llc | Seamless transitions between applications and devices |
US10289398B2 (en) * | 2015-09-26 | 2019-05-14 | Cisco Technology, Inc. | In-service upgrade of kernel loadable modules |
US10404837B2 (en) | 2015-09-30 | 2019-09-03 | International Business Machines Corporation | User datagram protocol (UDP) application handling during live kernel update |
-
2017
- 2017-05-01 US US15/583,849 patent/US10261780B2/en active Active
-
2018
- 2018-03-08 WO PCT/US2018/021542 patent/WO2018203969A1/en active Application Filing
- 2018-03-16 GB GB1804245.7A patent/GB2563312B/en active Active
- 2018-04-13 EP EP18167229.6A patent/EP3399407B1/en active Active
- 2018-04-13 DE DE102018108859.0A patent/DE102018108859A1/de active Pending
- 2018-04-13 DE DE202018102031.5U patent/DE202018102031U1/de active Active
- 2018-04-27 CN CN201810391505.3A patent/CN108881372A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104395879A (zh) * | 2012-06-21 | 2015-03-04 | 微软公司 | 在运行具有握手的客户端界面时的自动更新 |
CN104423989A (zh) * | 2013-09-02 | 2015-03-18 | 联想(北京)有限公司 | 一种应用更新方法及电子设备 |
US20160092202A1 (en) * | 2014-09-25 | 2016-03-31 | International Business Machines Corporation | Live Operating System Update Mechanisms |
CN105677404A (zh) * | 2015-12-31 | 2016-06-15 | 拉扎斯网络科技(上海)有限公司 | 一种基于Zookeeper的配置更新方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
GB201804245D0 (en) | 2018-05-02 |
US20180314515A1 (en) | 2018-11-01 |
DE202018102031U1 (de) | 2018-07-17 |
EP3399407B1 (en) | 2021-12-01 |
GB2563312B (en) | 2021-06-16 |
US10261780B2 (en) | 2019-04-16 |
DE102018108859A1 (de) | 2018-11-08 |
WO2018203969A1 (en) | 2018-11-08 |
EP3399407A1 (en) | 2018-11-07 |
GB2563312A (en) | 2018-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881372A (zh) | 系统服务或应用的透明升级 | |
US10496503B2 (en) | Healing cloud services during upgrades | |
EP2630567B1 (en) | Coordinated upgrades in distributed systems | |
US11416342B2 (en) | Automatically configuring boot sequence of container systems for disaster recovery | |
US11294699B2 (en) | Dynamically scaled hyperconverged system establishing minimum supported interoperable communication protocol between clusters in a cluster group | |
EP3284213B1 (en) | Managing virtual network functions | |
US11016761B2 (en) | Container based application reification | |
US10416996B1 (en) | System and method for translating affliction programming interfaces for cloud platforms | |
US20160371108A1 (en) | Reservation for a multi-machine application | |
CN107368353B (zh) | 一种实现虚拟机内存热添加的方法和装置 | |
US11301299B2 (en) | Data based scheduling for horizontally scalable clusters | |
US9183092B1 (en) | Avoidance of dependency issues in network-based service startup workflows | |
US11842210B2 (en) | Systems, methods, and apparatus for high availability application migration in a virtualized environment | |
CN113746676B (zh) | 基于容器集群的网卡管理方法、装置、设备、介质及产品 | |
US9405605B1 (en) | Correction of dependency issues in network-based service remedial workflows | |
CN106502787B (zh) | 一种调度方法及装置 | |
EP4148573A1 (en) | Method to execute a mode-transition in a multi-mode computer system | |
US20240004687A1 (en) | Systems, methods, and apparatus for state convergence associated with high availability application migration in a virtualized environment | |
WO2017152969A1 (en) | Method and arrangement for managing functionality controlling virtual infrastructure |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40000627 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |