首页 / 用于支持在线升级的设备和方法

用于支持在线升级的设备和方法无效专利 发明

技术领域

[0001] 本申请涉及计算机领域,尤其涉及一种用于支持在线升级的技术。

相关背景技术

[0002] 在大规模分布式云计算系统中,网络设备(即服务器)往往要服务成千上万的用户设备(即客户端)。由于修补漏洞、提升性能等需要,提升用户设备的版本是云计算系统中很常见的需求。
[0003] 通常的升级方法包括:用户设备停止进程后更换SDK(Software Development Kit,软件开发工具包)。
[0004] 上述升级方法的问题是:1)对用户提供的服务会出现中断,极大影响云产品使用者的用户体验;2)广泛分布的用户设备,让版本升级管理变得复杂不可接受,客户端版本管理不可控。

具体实施方式

[0082] 下面结合附图对本申请作进一步详细描述。
[0083] 根据本申请一方面提供的用于支持在线升级的用户设备,所述用户设备包括:接口模块和逻辑处理模块。
[0084] 逻辑处理模块,用于处理访问请求,维持与网络设备的通信连接,并在获取所述网络设备发送的更新信息后进行升级;
[0085] 接口模块,用于在升级过程中持续获取所述访问请求并进行缓存,在升级结束后继续获取所述访问请求,并将所缓存的和所继续获取的所述访问请求发送给所述逻辑处理模块进行处理。
[0086] 相比于现有技术,通过将所述用户设备构建为包括获取访问请求的所述接口模块和支持动态加载的逻辑处理模块,所述逻辑处理模块包括主要处理逻辑,升级过程只对所述逻辑处理模块进行更新,用户依然能够通过所述接口模块与所述用户进行交互,获取用户的访问请求,所述接口模块将升级期间获取的访问请求进行缓存,待所述逻辑处理模块加载新版本逻辑处理模块完成更新后,再将缓存的访问请求发送给逻辑处理模块进行处理,因此使用户不会感知到升级过程,从而实现了用户设备的全时不间断服务的用户体验。
[0087] 图1示出根据本申请的一实施例提供的用于支持在线升级的用户设备和网络设备的配合示意图。
[0088] 结合图1,所述用户设备1包括:接口模块11、逻辑处理模块12和通信处理模块13。其中,逻辑处理模块12用于处理所述访问请求,维持与网络设备2的通信连接,并在获取所述网络设备2发送的更新信息后进行升级;接口模块11用于在升级过程中持续获取所述访问请求并进行缓存,在升级结束后继续获取所述访问请求,并将所缓存的访问请求和所继续获取的访问请求发送给所述逻辑处理模块进行处理;所述通信处理模块13用于对所述逻辑处理模块12与所述网络设备维持通信连接所往来的信息进行序列化处理或反序列化处理。
[0089] 在此,所述用户设备1包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。此外,所述用户设备1还可以包括运行于所述电子设备上的脚本程序或所述脚本程序与电子设备的结合。当然,本领域技术人员应能理解所述用户设备1仅为举例,其他现有的或今后可能出现的用户设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
[0090] 具体地,在升级过程中,所述逻辑处理模块12根据所述网络设备2所发送的升级指令从所述网络设备2获取更新信息,所述接口模块11根据所述更新信息对所述逻辑处理模块12进行升级,在升级过程中,所述接口模块11持续获取所述访问请求并进行缓存,并在升级结束后将其缓存的所述访问请求发送给所述逻辑处理模块12进行处理。
[0091] 在此,所述接口模块11可以是API模块(Application Programming Interface,应用程序编程接口),所述逻辑处理模块12可以是逻辑包(Package)模块,优选地,所述逻辑包模块12是基于动态语言实现,采用动态语言实现的所述逻辑包模块12能够在升级过程中,动态加载更新内容。优选地,采用LUA动态语言实现,所述LUA是一个小巧的脚本语言,所述LUA由标准C编写而成并易于调用C/C++的函数或被C/C++代码调用,几乎可以在所有操作系统和平台上进行编译或运行,所述LUA的语言沙箱性能优越并且执行效率高,因此采用LUA动态语言实现能够使逻辑包模块更易编译和执行。
[0092] 所述接口模块11为用户提供各类操作的接口,并将用户的访问请求转换为所述逻辑包模块需要的格式后发送给所述逻辑处理模块12,同时,所述接口模块11还负责启动所述逻辑包模块的解释器并加载逻辑包模块的相关文件,因此,所述接口模块11既能够在所述逻辑包模块升级过程中继续获取用户的访问请求,又能够在所述逻辑处理模块12更新完毕后,启动所述逻辑处理模块12并加载其相关更新文件,使更新后的所述逻辑处理模块12恢复工作。
[0093] 所述逻辑处理模块12在工作中,不仅处理所述接口模块11所发送的访问请求,同时维持与网络设备2的通信连接。
[0094] 优选地,所述逻辑处理模块12基于其的解释器运行,通过心跳机制维持与网络设备2的通信连接,所述通信连接包括:定期向所述网络设备2发送心跳请求报文,并获取所述网络设备2所返回的心跳反馈报文。此外,所述通信的内容还包括但不限于下载更新信息的请求或当前版本信息等。
[0095] 具体地,所述逻辑处理模块12获取所述网络设备2所发送的升级指令;接着,根据所述升级指令向所述网络设备2发送下载更新信息的请求,所述下载更新信息的请求包括当前版本信息;随后,获取所述网络设备2基于所述下载更新信息的请求所发送的更新信息。
[0096] 在此,所述当前版本信息不仅包括所述逻辑处理模块12的当前版本信息,还包括所述接口模块11和通信处理模块13的当前版本信息,所述接口模块11和通信处理模块13的当前版本信息可用于网络设备2对用户设备进行的兼容性检查等。
[0097] 进一步地,所述逻辑处理模块12还会获取所述网络设备2基于所述下载更新信息的请求所发送的校验码信息,并对所述校验码信息进行校验,在获取所述网络设备2发送的更新信息且校验通过再进行升级,以提高升级的准确性和有效性。
[0098] 进一步地,所述逻辑处理模块12通过所述通信处理模块13与所述网络设备2保持通信。具体地,所述逻辑处理模块12将需发送给网络设备2的信息发送给通信处理模块13,所述通信处理模块13将该信息序列化处理后,再通过网络传输的方式发送给网络设备
2;相应地,当获取到网络设备向用户设备发送的信息时,所述通信处理模块13获取该信息并将该信息进行反序列化处理后,再交由所述逻辑处理模块12进行处理。
[0099] 在此,由于网络传输只允许字符串或者二进制格式,而文件存储需要使用二进制流格式,故需要对用户设备和网络设备2的通信连接的信息进行序列化处理和反序列化处理,所述序列化(Serialization)能够将对象的状态信息转换为可以存储或传输的形式,便于实现用户设备向网络设备2传输信息,所述反序列化与所述序列化相反,便于将网络设备2传输的信息转化为用户设备需要的格式。
[0100] 具体地,所述用户设备1的升级过程包括:所述逻辑处理模块12维持与网络设备2的定期的心跳,即通过定期发送心跳请求报文并获取网络设备2返回的心跳反馈报文来确定与网络设备2的连接状态;接着,当获取到网络设备2反馈的心跳反馈报文中包括触发升级过程的升级指令时,所述逻辑处理模块12向所述网络设备2发送下载更新信息的请求,并在下载更新信息的请求中附带用户设备的当前版本信息;网络设备2会根据所述下载更新信息的请求选择相应的更新信息发送给用户设备,随后,所述逻辑处理模块12根据所述更新信息进行验证,验证通过后停止所述通信处理模块13的服务,由所述接口模块11触发版本升级任务,具体地,所述接口模块11重新启动所述逻辑处理模块12的解释器并加载所述逻辑处理模块12的更新信息,从而实现了所述逻辑处理模块12的升级;待所述逻辑处理模块12升级完毕后,所述逻辑处理模块12继续处理访问请求,并恢复所述通信处理模块13的服务;在升级过程中,所述接口模块11持续获取用户的访问请求,并将所述用户的访问请求进行缓存,待升级结束后,所述接口模块11持续将缓存的访问请求以及新获取的访问请求发送给所述逻辑处理模块12进行处理,从而实现升级过程的用户无感知的服务体验。
[0101] 结合图1,根据本申请另一方面提供的一种用于支持在线升级的网络设备,其中,所述网络设备2包括:通信连接模块21和更新信息发送模块22。
[0102] 所述通信连接模块21用于维持与一个或多个用户设备1的通信连接;所述更新信息发送模块22用于向所述用户设备1发送升级指令及相应的更新信息。
[0103] 在此,所述网络设备2其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。此外,所述网络设备2还可以包括运行于所述上述设备中的脚本程序或所述脚本程序与上述设备的结合。当然,本领域技术人员应能理解所述网络设备2仅为举例,其他现有的或今后可能出现的网络设备2如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
[0104] 所述更新信息发送模块21用于:向所述用户设备1所发送的升级指令;接着,获取所述用户设备1所发送的下载更新信息的请求,所述下载更新信息的请求包括所述用户设备1的当前版本信息;随后,基于所述当前版本信息向所述用户设备1发送相应的更新信息。
[0105] 进一步地,所述更新信息发送模块21还用于:基于所述当前版本信息向所述用户设备1发送用于校验的校验码信息。
[0106] 所述通信连接模块22用于:采用心跳机制维持与所述用户设备1的通信连接,包括:获取所述用户设备1所定期发送的心跳请求报文,并向所述用户设备1返回的心跳反馈报文。
[0107] 此外,所述网络设备2还包括版本管理模块23,所述版本管理模块23用于管理每一所述用户设备1的多个更新信息,所述网络设备2通过版本管理模块23管理用户设备1的各个版本逻辑处理模块12的更新信息,以方便运行维护人员制定各种升级策略,从而除支持用户设备1的在线升级外,还可以支持用户设备1的灰度升级(不同步升级)或在线降级(版本降低的升级方式)等多种功能,进而增加升级过程的可运维性。
[0108] 进一步地,本申请一方面还提供的一种用于支持用户设备在线升级的方法,其中,所述方法包括:
[0109] 获取并处理访问请求;
[0110] 维持与网络设备的通信连接;
[0111] 根据所述网络设备发送的更新信息进行升级,并在升级过程中持续获取所述访问请求并进行缓存,在升级结束后继续获取访问请求,并将所缓存的访问请求和所继续获取的访问请求进行处理。
[0112] 相比于现有技术,本申请所述用于支持用户设备在线升级的方法所述通过在升级过程中,动态加载更新内容,并持续与所述用进行交互,获取用户的访问请求,将升级期间获取的访问请求进行缓存,待更新结束后,再将缓存的访问请求进行处理,因此使用户不会感知到升级过程,从而实现了用户设备的全时不间断服务的用户体验。
[0113] 图2示出本申请的一实施例提供一种用于支持用户设备在线升级的方法,其中,所述方法包括:
[0114] 步骤S11:获取并处理访问请求;
[0115] 步骤S12:维持与网络设备的通信连接;
[0116] 步骤S13:根据所述网络设备发送的更新信息进行升级,并在升级过程中持续获取所述访问请求并进行缓存,在升级结束后继续获取访问请求,并将所缓存的访问请求和所继续获取的访问请求进行处理。
[0117] 在此,所述用于支持用户设备在线升级的方法可以基于图1所述的用户设备1实现,因此,所述用于支持用户设备在线升级的方法的各步骤可以由所述用户设备1的接口模块11、逻辑处理模块12及通信处理模块13配合实现。
[0118] 结合步骤S11和步骤S13,所述用户设备1在未升级过程中,持续获取并处理用户的访问请求,在升级过程中继续获取访问请求,但不做处理,而是进行缓存,待升级结束后再对缓存的访问请求及新获取的访问请求进行处理。
[0119] 在所述步骤S12中,维持与网络设备的通信连接。优选地,所述用户设备1采用心跳机制维持与网络设备2的通信连接,维持与所述网络设备2的通信连接包括:定期向所述网络设备3发送心跳请求报文,并获取所述网络设备3所返回的心跳反馈报文。
[0120] 其中,所述通信连接包括:所述用户设备1定期向所述网络设备2发送心跳请求报文,并获取所述网络设备2所返回的心跳反馈报文。此外,所述通信连接所往来的信息还包括但不限于下载更新信息的请求或当前版本信息等。
[0121] 在此,采用动态语言实现处理所述访问请求,采用动态语言能够使处理访问请求的模块在升级过程中,动态加载更新内容。优选地,采用LUA动态语言实现,所述LUA是一个小巧的脚本语言,所述LUA由标准C编写而成并易于调用C/C++的函数或被C/C++代码调用,几乎可以在所有操作系统和平台上进行编译或运行,处理所述访问请求,所述LUA的语言沙箱性能优越并且执行效率高,因此采用LUA动态语言实现能够更易编译和执行。
[0122] 然后,在所述步骤S13中,所述用户设备1根据所述网络设备2所发送的升级指令从所述网络设备2获取更新信息,利用所述更新信息进行升级包括:获取所述网络设备2所发送的升级指令;根据所述升级指令向所述网络设备2发送下载更新信息的请求,所述下载更新信息的请求包括当前版本信息;获取所述网络设备2基于所述当前版本信息所发送的更新信息。
[0123] 此外,根据所述网络设备2所发送的升级指令从所述网络设备2取更新信息,利用所述更新信息进行升级还包括:获取所述网络设备2所发送的校验码信息;对所述校验码信息进行校验,当校验通过时再根据所获取的更新信息进行升级,以提高升级的准确性和有效性。
[0124] 在此,所述当前版本信息包括:图1所示用户设备1中所述逻辑处理模块12的当前版本信息;图1所示用户设备1中所述接口模块11的当前版本信息;图1所示用户设备1中所述通信处理模块13的当前版本信息。所述接口模块11和通信处理模块13的当前版本信息可用于网络设备2对用户设备进行的兼容性检查等。
[0125] 进一步地,在利用所述更新信息进行升级之后还包括:重启用于处理所述访问请求的模块的解释器,并利用所述解释器加载所述更新信息。
[0126] 进一步地,所述方法还包括:对与所述网络设备维持通信连接所往来的信息进行序列化和反序列化处理,包括,将相关信息序列化处理后通过网络传输的方式发送给网络设备;相应地,当获取到网络设备发送的信息时,将该信息并将该信息进行反序列化处理后再进行处理。
[0127] 在此,由于网络传输只允许字符串或者二进制格式,而文件存储需要使用二进制流格式,故需要对用户设备和网络设备的通信连接的信息进行序列化处理和反序列化处理,所述序列化(Serialization)能够将对象的状态信息转换为可以存储或传输的形式,便于实现用户设备向网络设备传输信息,所述反序列化与所述序列化相反,便于将网络设备传输的信息转化为用户设备需要的格式。
[0128] 图3示出根据本申请一优选的实施例中用于支持在线升级的用户设备和网络设备配合的方法流程图,具体地,包括以下步骤:
[0129] 在步骤S31中,用户设备1获取并处理访问请求;
[0130] 在步骤S32中,用户设备11维持与网络设备2的通信连接,通过定期的心跳,即通过定期发送心跳请求报文并获取网络设备2返回的心跳反馈报文来确定与网络设备2的连接状态;
[0131] 在步骤S33中,当获取到网络设备2反馈的心跳反馈报文中包括触发升级过程的升级指令时,向所述网络设备2发送下载更新信息的请求,并在下载更新信息的请求中附带用户设备的当前版本信息;
[0132] 在步骤S34中,网络设备2会根据所述下载更新信息的请求选择相应的更新信息发送给用户设备;
[0133] 在步骤S35中,随后,用户设备1会根据所述更新信息进行验证,验证通过后触发版本升级任务,具体地,重新启动所述解释器并加载所述更新信息,从而实现了升级,同时,在升级过程中,持续获取用户的访问请求,并将所述用户的访问请求进行缓存,待升级结束后,持续将缓存的访问请求以及新获取的访问请求进行处理,从而实现升级过程的用户无感知的服务体验。
[0134] 图4示出根据本申请再一方面提供的在网络设备端的用于支持在线升级的方法,其中,所述方法包括:
[0135] 步骤S21:维持与一个或多个用户设备的通信连接;
[0136] 步骤S22:当所述用户设备需要升级时,向所述用户设备发送升级指令及相应的更新信息。
[0137] 所述步骤S22包括:向所述用户设备所发送的升级指令;获取所述用户设备所发送的下载更新信息的请求,所述下载更新信息的请求包括所述用户设备的当前版本信息;基于所述当前版本信息向所述用户设备发送的更新信息。
[0138] 进一步地,所述步骤S21包括:采用心跳机制维持与所述用户设备的通信连接,包括:获取所述用户设备定期发送的心跳请求报文,并向所述用户设备返回的心跳反馈报文。
[0139] 所述方法还包括:向所述用户设备发送用于校验的校验码信息。
[0140] 此外,所述方法还包括:管理每一所述用户设备1的多个更新信息,通过管理用户设备1的各个版本逻辑处理模块12的更新信息,以方便运行维护人员制定各种升级策略,从而除支持用户设备1的在线升级外,还可以支持用户设备1的灰度升级(不同步升级)或在线降级(版本降低的升级方式)等多种功能,进而增加升级过程的可运维性。
[0141] 综上所述,本申请所述用于支持在线升级的用户设备和方法,通过在升级过程中,持续与所述用户进行交互,获取用户的访问请求,将升级期间获取的访问请求进行缓存,待更新结束后,再将缓存的访问请求进行处理,因此使用户不会感知到升级过程,从而实现了用户设备的全时不间断服务的用户体验。
[0142] 进一步地,所述本申请还通过提供一种所述用于支持用户设备在线升级的网络设备和方法,管理用户设备的升级过程,从而增加升级过程的可运维性。
[0143] 在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0144] 需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0145] 另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
[0146] 对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页 第1页 第2页 第3页