应用程序恢复方法与装置与流程

文档序号:16326688发布日期:2018-12-19 05:57阅读:278来源:国知局
应用程序恢复方法与装置与流程

本发明涉及计算机任务执行领域,具体而言,涉及一种应用程序恢复方法与装置。

背景技术

计算机集群(简称集群)是一种计算机系统,它通过将一组松散集成的计算机硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可被视为一台计算机。集群系统中的单个计算设备通常被称为节点,通常通过网络连接,但也允许其他的连接方式。集群计算机通常用于改进单台计算机的计算速度和可靠性。高可用性(highavailability)指计算机系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。高可用性的度量方式是根据系统损害、无法使用的时间、由无法运作回复到可运作状况的时间与系统总运作时间的比较。当集群设备及架构确定时,平均故障间隔时间只与集群上运行的服务的稳定性相关,取决于服务实现代码的质量,但是当前很难找到通用的提高代码质量的方案。

传统技术中的应用可用性检测方式,一般分为两个部分:第一部分:指标监控服务,安装在每台需要监控可用性的服务器主机上,用于收集服务器上应用的可用状态指标数据;第二部分,指标汇集服务,部署收集集群服务器可用状态的主机上,一般为监控专用主机,该服务轮询集群中的各个服务器,获取指标监控服务收集到的信息,并加以统计整理。对于整理好的信息,该服务同时提供查询功能,可通过该服务获取集群中任意一台服务器上应用的可用状态。

但是上述的应用可用性检测方式需要分别在服务端和监控端部署相应服务,对服务器的软件运行环境存在一定限制,若集群中服务器的软件运行环境差别较大,则可能由于无法找到适合所有服务器的监控端服务而导致无法实施监控,并且在服务端和监控端部署相应服务成本很高;并且应用可用性检测依赖单一节点,当集群规模上升时可能无法及时发现故障点。由于可用状态指标数据的传输网络呈星型结构,由中心位置的监控主机轮询被监控节点,虽然理论上指标汇集服务可部署在每一个被监控节点上,但监控节点的增加会同时导致集群网络中指标信息的流量成倍增长,故一般只在专用监控主机上部署指标汇集服务,集群中所有的崩溃应用均只能等待为数不多的中心节点发现;并且应用恢复完全依赖自身,由于应用的可用状态相互之间不可知,因此崩溃恢复也只能依赖应用自身,若某一应用故障时间较长,则系统整体的故障恢复过程也将持续很长一段时间。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种应用程序恢复方法与装置,以改善上述的问题。

第一方面,本发明实施例提供了一种应用程序恢复方法,所述应用程序恢复方法包括:

在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口;

获取并执行应用任务;

在成功获取操作锁时,判断预建立的数据库会话列表中的每一个处于启动状态的应用程序关联的会话项目中是否包含活动数据库会话;

当预建立的数据库会话列表中的任意一个处于启动状态的应用程序关联的会话项目中不包含活动数据库会话时,依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态。

第二方面,本发明实施例还提供了一种应用程序恢复装置,所述应用程序恢复装置包括:

信息登记单元,用于在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口;

任务执行单元,用于获取并执行应用任务;

判断单元,用于在成功获取操作锁时,判断预建立的数据库会话列表中的每一个处于启动状态的应用程序关联的会话项目中是否包含活动数据库会话;

回滚单元,用于当预建立的数据库会话列表中的任意一个处于启动状态的应用程序关联的会话项目中不包含活动数据库会话时,依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态。

与现有技术相比,本发明提供的应用程序恢复方法与装置,首先通过在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口;然后获取并执行应用任务;最后在成功获取操作锁后,在当预建立的数据库会话列表中的任意一个处于启动状态的应用程序关联的会话项目中不包含活动数据库会话时,依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态,从而无需在服务端和监控端部署相应服务,实现无中心的应用可用状态检测,大幅度减少了额外的监控成本,且避免了中心节点的存在造成的计算机系统拥堵,且实现了应用间可以相互进行恢复,无需等待崩溃的应用程序自身进行恢复,极大地缩短了计算系统的恢复时间。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的集群服务器系统的交互示意图;

图2为本发明实施例提供的服务器的结构框图;

图3为本发明实施例提供的应用程序恢复方法的流程图;

图4为本发明实施例提供的应用程序恢复装置的功能单元示意图。

图标:100-服务器;200-应用程序恢复装置;101-处理器;102-存储器;103-存储控制器;401-信息登记单元;402-任务执行单元;403-休眠状态进入单元;404-判断单元;405-回滚单元。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明较佳实施例所提供的应用程序恢复方法与装置可应用于服务器100,该服务器100应用于集群服务器系统,如图1所示,集群服务器系统包含多个服务器100,多个服务器100之间建立通信连接。该服务器100可以是,但不限于,网络服务器、数据库服务器、云端服务器等等。图2示出了一种可应用于本发明实施例中的服务器的结构框图。其中,服务器100包括应用程序恢复装置200、外设接口104、存储器102、存储控制器103及处理器101。

外设接口104、所述存储器102、存储控制器103及处理器101,各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述应用程序恢复装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器102中或固化在服务器中的软件功能模块。所述处理器101用于执行存储器102中存储的可执行模块,例如,所述应用程序恢复装置200包括的软件功能模块或计算机程序。

其中,存储器102可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器102readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器102用于存储程序,所述处理器101在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的服务端所执行的方法可以应用于处理器101中,或者由处理器101实现。

处理器101可能是一种集成电路芯片,具有信号的处理能力。上述的处理器101可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器101也可以是任何常规的处理器101等。

外设接口104将各种输入/输出装置耦合至处理器101以及存储器102。在一些实施例中,外设接口104、处理器101以及存储控制器103可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

请参阅图3,本发明实施例提供了一种应用程序恢复方法,所述应用程序恢复方法包括:

步骤s301:在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口。

在应用程序启动之前,处于未启动状态,当接收到工作人员输入的启动指令时,应用程序启动。其中,预存储的数据库应用列表包含多种应用程序的数据内容和状态信息,此时仅对启动的应用程序的启动状态和回滚程序入口进行登记,且应用程序可以通过回滚程序(即rollback程序)入口调用回滚程序。

步骤s302:获取并执行应用任务。

其中,在执行应用任务时,按照构成应用任务的多个进程先后顺序对应用任务进行执行,其中,每个进程均包括进程执行节点信息。

具体地,在获取并执行应用任务后,可以将任务执行进程、进程执行节点信息存储于预设定的集群数据共享区域。为实现并行计算,集群服务器间的数据共享必不可少,目前常见的数据共享方式有数据库共享与网络存储共享两种,因此,预设定有的集群数据共享区域,每个服务器和应用程序均可访问该集群数据共享区域,执行的任务的进程、内容以及进程执行节点信息。

步骤s303:判断是否成功获取操作锁,如果是,则执行步骤s305;如果否,则执行步骤s304。

操作锁可以包括共享锁和独占锁,其中,独占锁每次只能有一个线程能持有锁;共享锁则允许多个线程同时获取锁,且可以并发访问共享资源。独占锁避免了读/读冲突,如果某个只读线程获取锁,则其他读线程都只能等待,这种情况下就限制了不必要的并发性,因为读操作并不会影响数据的一致性。共享锁放宽了加锁策略,允许多个执行读操作的线程同时访问共享资源。

其中,本实施例中,所述操作锁优选为数据库应用列表包含的应用任务的独占锁或网络共享存储文件的独占锁,从而可以避免集群服务器系统中存在多个处于启动状态的应用程序时,同时进行应用程序恢复可能造成冲突,也避免了多次检测其他应用程序的状态造成的性能浪费。

步骤s304:控制所述应用程序再次处于休眠状态。

再次处于休眠状态后,可以接收下一个启动指令,重新执行任务。

步骤s305:判断预建立的数据库会话列表中的每一个处于启动状态的应用程序关联的会话项目中是否包含活动数据库会话;如果否,则执行步骤s306。

当应用程序与数据库连接时,在数据库中会预先建立关联的数据库会话列表,数据库会话列表中包含主机名、应用名称等信息,因此可通过数据库会话列表判断应用程序的可用性。

步骤s306:依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态。

具体地,可以依据回滚程序入口调用回滚程序,以使回滚程序依据位于集群数据共享区域的任务执行进程、进程执行节点信息将处于执行中的任务回滚至起始状态,从而完成应用程序运行崩溃的恢复。

步骤s307:释放操作锁,并在释放操作锁后执行步骤s304。

再次处于休眠状态后,可以接收下一个启动指令,重新执行任务。

本实施例中,还可以根据预先设定的休眠时间,在休眠时间过后自动回复到工作状态并从s302开始进入下一个工作周期,如此反复循环。

请参阅图4,本发明实施例还提供了一种应用程序恢复装置200,需要说明的是,本实施例所提供的应用程序恢复装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。所述应用程序恢复装置200包括信息登记单元401、任务执行单元402、休眠状态进入单元403、判断单元404以及回滚单元405。

信息登记单元401用于在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口。

可以理解地,信息登记单元401可以执行上述的步骤s301。

任务执行单元402用于获取并执行应用任务。

所述任务执行单元402具体用于获取并执行应用任务,并将任务执行进程、进程执行节点信息存储于预设定的集群数据共享区域。

可以理解地,任务执行单元402可以执行上述的步骤s302。

判断单元404用于判断是否成功获取操作锁。

可以理解地,判断单元404可以执行上述的步骤s303。

休眠状态进入单元403用于在未成功获取操作锁时,控制所述应用程序再次处于休眠状态。

可以理解地,休眠状态进入单元403可以执行上述的步骤s304。

判断单元404用于在成功获取操作锁时,判断预建立的数据库会话列表中的每一个处于启动状态的应用程序关联的会话项目中是否包含活动数据库会话。

可以理解地,判断单元404还可以执行上述的步骤s305。

其中,所述操作锁为数据库应用列表包含的应用任务的独占锁或网络共享存储文件的独占锁。

回滚单元405用于当预建立的数据库会话列表中的任意一个处于启动状态的应用程序关联的会话项目中不包含活动数据库会话时,依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态。

所述回滚单元405具体用于依据回滚程序入口调用回滚程序,以使回滚程序依据位于集群数据共享区域的任务执行进程、进程执行节点信息将处于执行中的任务回滚至起始状态。

可以理解地,回滚单元405可以执行上述的步骤s306。

休眠状态进入单元403用于释放操作锁,并控制所述应用程序再次进入休眠状态。

可以理解地,休眠状态进入单元403可以执行上述的步骤s307。

综上所述,本发明提供的应用程序恢复方法与装置,首先通过在应用程序启动时,在预存储的数据库应用列表中登记启动状态及回滚程序入口;然后获取并执行应用任务;最后在成功获取操作锁后,在当预建立的数据库会话列表中的任意一个处于启动状态的应用程序关联的会话项目中不包含活动数据库会话时,依据回滚程序入口调用回滚程序将处于执行中的任务回滚至起始状态,从而无需在服务端和监控端部署相应服务,实现无中心的应用可用状态检测,大幅度减少了额外的监控成本,且避免了中心节点的存在造成的计算机系统拥堵,且实现了应用间可以相互进行恢复,无需等待崩溃的应用自身进行恢复,极大地缩短了计算系统的恢复时间。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1