定时任务的执行方法及相关装置、计算机可读存储介质与流程

文档序号:20163312发布日期:2020-03-24 21:14阅读:130来源:国知局
定时任务的执行方法及相关装置、计算机可读存储介质与流程

本发明实施例涉及云计算领域,特别涉及一种定时任务的执行方法及相关装置、计算机可读存储介质。



背景技术:

云计算平台能够提供以下四种服务:计算服务、网络和存储服务、数据库服务(databaseasaservice,dbaas)。其中,dbaas的可靠便捷越来越重要,已成为云计算平台为客户创造价值的一个重要服务。对于开源云计算平台openstack来说,也加入了dbaas,命名为trove数据库管理组件。

目前,开源云计算平台openstack的trove数据库管理组件已成为openstack官方可选的核心服务组件之一。trove数据库管理组件的正常稳定运行,是保证用户的良好体验的基础。

发明人发现现有技术中至少存在如下问题:trove数据库管理组件定时功能的可靠执行,依赖于trove数据库管理组件的配置文件中的参数,只有配置了true参数的节点才能够执行数据库的定时任务,如果该节点状态异常,数据库的定时任务就无法被正常可靠执行。



技术实现要素:

本发明实施方式的目的在于提供一种定时任务的执行方法及相关装置、计算机可读存储介质,用以保证数据库的定时任务被正常可靠执行。

为解决上述技术问题,本发明的实施方式提供了一种定时任务的执行方法,所述方法包括:确定监测到数据库的定时任务在被第二节点执行的过程中出现超时,抢占所述数据库的定时任务的执行权;确定获得所述数据库的定时任务的执行权后,执行所述数据库的定时任务。

本发明的一个实施例还提供了一种定时任务的执行装置,包括:抢占模块,用于确定监测到数据库的定时任务在被第二节点执行的过程中出现超时,抢占所述数据库的定时任务的执行权;执行模块,用于确定获得所述数据库的定时任务的执行权后,执行所述数据库的定时任务。

本申请的一个实施例提供了一种服务器,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的定时任务的执行方法。

本申请的一个实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行上述定时任务的执行方法。

本发明实施方式相对于现有技术而言,第一节点监测数据库的定时任务在被第二节点执行的过程中是否出现超时,从而能够及时发现该数据库的定时任务出现超时的情况,并在确定出现超时的情况下,抢占该数据库的定时任务的执行权,并在确定获得执行权后执行该数据库的定时任务,从而避免了执行数据库的定时任务的节点在出现故障时,导致该数据库的定时任务无法被正常执行的情况,保证了该数据库的定时任务被正常可靠执行。

另外,确定监测到数据库的定时任务在被第二节点执行的过程中出现超时,包括:在所述数据库的定时任务被第二节点执行的过程中,监测所述数据库的定时任务最近一次被更新的时间;计算所述最近一次被更新的时间与当前时间的差值;若确定所述差值超过预设阈值,则确定所述数据库的定时任务在被所述第二节点执行的过程中出现超时。通过监测数据库的定时任务最近一次被更新的时间,使得能够及时发现数据库的定时任务出现超时的情况。

另外,监测数据库的定时任务最近一次被更新的时间,包括:每间隔第一预设时长读取数据库的定时任务最近一次被更新的时间,其中,所述第一预设时长小于所述预设阈值。

另外,抢占所述数据库的定时任务的执行权,包括:将所述数据库的定时任务对应的执行节点的标识修改为所述第一节点的标识;确定获得所述数据库的定时任务的执行权,包括:

确定所述数据库的定时任务对应的执行节点的标识为所述第一节点的标识。通过设置数据库的定时任务所对应的执行节点的标识,使得系统中所有具备执行能力的节点都可以获知当前具有该数据库的定时任务的执行权限的归属。

另外,确定获得所述数据库的定时任务的执行权后,执行所述数据库的定时任务之前,所述方法还包括:将所述数据库的定时任务的状态修改为预备执行状态,其中,所述预备执行状态表示所述数据库的定时任务已经获得执行权。该方式中,在确定获得数据库的定时任务的执行权后,将数据库的定时任务的状态更新为预备执行状态,为后续执行该数据库的定时任务做好准备,并使得其他节点能够获知该数据库的定时任务的状态。

另外,确定获得所述数据库的定时任务的执行权后,所述方法还包括:每间隔第二预设时长更新所述数据库的定时任务的时间。获得数据库的定时任务的执行权的节点,定期更新该数据库的定时任务的时间,使得其他节点能够根据该数据库的定时任务被更新的时间,及时获知该数据的定时任务是否被正常执行,以在获知该数据库的定时任务未被正常执行的情况下及时进行抢占。

另外,执行所述数据库的定时任务,包括:将所述数据库的定时任务的状态修改为执行状态,并运行所述数据库的定时任务。

另外,在所述运行所述数据库的定时任务的过程中,若检测到所述数据库的定时任务对应的执行节点的标识不是所述第一节点的标识,且确定所述第一节点的任务列表中包含有所述数据库的定时任务,则停止运行所述数据库的定时任务。在运行过程中确定失去该数据库的定时任务的执行权后,及时将该数据库的定时任务从任务列表中清除,以及时释放执行该数据库的定时任务所占用的资源,保证了资源的合理利用。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式中定时任务的执行方法流程示意图;

图2是根据本发明第二实施方式中定时任务的执行方法流程示意图;

图3根据本发明第三实施方式中定时任务的执行装置示意图;

图4根据本发明第四实施方式中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种定时任务的执行方法,第一节点和第二节点是具有执行数据库的定时任务的功能的控制节点,例如,第一节点和第二节点都是有部署trove数据库管理组件的控制节点。第二节点是正在执行数据库的定时任务的节点,第一节点可以是除了第二节点之外且具有执行数据库的定时任务的功能的任一控制节点。需要说明的是,此处仅以一个第一节点为例进行说明,应用中,除了第二节点之外的所有节点均可以配置为执行该定时任务的执行方法,也可以是除了第二节点之外的部分节点配置为执行该定时任务的执行方法。

如图1所示,定时任务的执行过程具体如下:

在步骤101中,第一节点监测第二节点在执行数据库的定时任务的过程中出现超时,则抢占该数据库的定时任务的执行权。

其中,数据库的定时任务指的是:定时创建数据库备份、定时清理超过保存时间的备份、定时清理数据库的日志文件、定时检查实例的状态等操作。需要说明的是,此处仅为举例说明,其它未列举的数据库的定时任务也在本发明的保护范围内,此处并不用于限制本发明的保护范围。

一个具体实现中,第一节点监测第二节点在执行数据库的定时任务的过程中是否出现超时,是否超时的具体判断过程如下:在数据库的定时任务被第二节点执行的过程中,第一节点监测该数据库的定时任务最近一次被更新的时间,计算该最近一次被更新的时间与当前时间的差值,若确定该差值超过预设阈值,则确定该数据库的定时任务在被第二节点执行的过程中出现超时。

其中,第一节点每间隔第一预设时长,读取数据库的定时任务最近一次被更新的时间,该第一预设时长小于用于判断是否超时的预设阈值。例如:预先定义第一预设时长为10秒,预设阈值为60秒,即每10秒读取一次数据库的定时任务最近一次被更新的时间,计算该最近一次被更新的时间与当前的时间的差值,判断该差值是否超过60秒。若该差值超过预设阈值,则确定该数据库的定时任务在被第二节点执行的过程中出现超时。需要说明的是,第一预设时长以及预设阈值也可以采用其它数值,此处仅为举例说明,其它未列举的数值也在本发明的保护范围内,此处并不用于限制本发明的保护范围。

其中,第二节点在执行数据库的定时任务的过程中,每间隔第二预设时长,就更新一次数据库的定时任务的时间,并且将该数据库的定时任务最近一次被更新的时间保存到数据库表中。更新时间的意义在于心跳检测,当第二节点更新了数据库的定时任务的时间时,意味着该数据库的定时任务能够被第二节点正常可靠执行。

例如:在openstack数据库云平台下,在布置了trove组件的数据库的控制节点上,控制节点每间隔第二预设时长,更新一次数据库的定时任务的时间,并且将该数据库的定时任务最近一次被更新的时间保存到数据库的crontabs表中。

其中,第二预设时长可以与第一预设时长相等,也可以不相等。第二预设时长小于用于判断是否超时的预设阈值。一个优选的实现方式中,第二预设时长小于或等于第一预设时长。例如:预先定义第一预设时长为10秒,第二预设时长为10秒,即第二节点每间隔10秒更新一次数据库的定时任务的时间。当然,第一预设时长可以为第二预设时长的整数倍,例如,定义第一预设时长为10秒,第二预设时长为5秒。需要说明的是,此处仅为举例说明,其它未列举的数值也在本发明的保护范围内,此处并不用于限制本发明的保护范围。

其中,第一节点抢占该数据库的定时任务的执行权的过程为:第一节点将数据库的定时任务对应的执行节点的标识修改为第一节点的标识。如果第一节点确定该数据库的定时任务对应的执行节点标识已经变更为了第一节点的标识,则确定抢占到了该数据库的定时任务的执行权。

其中,可以针对数据库的定时任务设置抢占保护机制,该抢占保护机制用于保证一次抢占过程中仅有一个控制节点能够成功修改该数据库的定时任务对应的执行节点的标识。该抢占保护机制可以有多种实现形式,以下通过举例说明该抢占保护机制的具体表现形式。

例如,抢占保护机制的实施过程为:若确定第一节点最先将该数据库的定时任务对应的执行节点的标识修改为第一节点的标识,则在本次抢占过程中将不允许其他控制节点修改该数据库的定时任务所对应的执行节点的标识,其他控制节点只能监测下一次抢占过程。假设,第一节点的标识是10011,第三节点的标识是10033,当确定第一节点最先将数据库的定时任务对应的执行节点的标识修改为10011,则在本次抢占过程中,不允许第三节点修改该数据库的定时任务对应的执行节点的标识,意味着该数据库的定时任务的执行权被第一节点抢占到。

又例如,在一次抢占过程中,按照参与抢占的每个控制节点在数据库的定时任务对应的标识列表中写入标识的先后顺序,保存参与抢占的每个控制节点的标识,假设按照先后顺序在该数据库的定时任务对应的标识列表中写入了第一节点的标识10011和第三节点的标识10033,则仅保留第一个写入到该标识列表中的控制节点的标识,即保留第一个写入到标识列表中的第一节点的标识,删除第三节点的标识。最终保留在该标识列表中的控制节点的标识,即为抢占到该数据库的定时任务的执行权的控制节点的标识,即该数据库的定时任务的执行节点的标识就是10011。需要说明的是,此处仅为举例说明,其它未列举的数据库的定时任务的标识设置方法也在本发明的保护范围内,此处并不用于限制本发明的保护范围。

在步骤102中,第一节点确定获得数据库的定时任务的执行权后,执行该数据库的定时任务。

在一个具体实现中,当第一节点确定获得该数据库的定时任务的执行权后,将该数据库的定时任务的状态修改为预备执行状态,表示第一节点此时已经获得该数据库的定时任务的执行权,可以开始执行数据库的定时任务。

一个具体实现中,将数据库的定时任务定义为三种状态,分别为:准备状态、预备执行状态和执行状态。

其中,当数据库的定时任务的状态是准备状态时,所有具有执行数据库的定时任务的功能的控制节点,都可以抢占该数据库的定时任务的执行权。通过设置数据库的定时任务所对应的执行节点的标识,使得系统中所有具备执行能力的节点都可以获知该数据库的定时任务的执行权限的归属。

当数据库的定时任务的状态是预备执行状态时,并且数据库的定时任务对应的执行节点的标识为第一节点的标识时,表示第一节点已经做好了执行该数据库的定时任务的准备,可以开始执行该数据库的定时任务。这样,能够保证每个存活的节点都能检测到数据库的定时任务的状态。

当数据库的定时任务的状态是执行状态时,表示第一节点已经成功抢占到数据库的定时任务的执行权并且在执行该数据库的定时任务的过程中。

需要说明的是,此处对于数据库的定时任务的状态的定义仅为举例说明,应用中,可以根据需要定义数据库的定时任务的状态,此处并不用于限制本发明的保护范围。

本申请实施例中,第一节点监测数据库的定时任务在被第二节点执行的过程中是否出现超时,从而能够及时发现该数据库的定时任务出现超时的情况,并在确定出现超时的情况下,抢占该数据库的定时任务的执行权。在确定获得执行权后执行该数据库的定时任务,从而避免了执行数据库的定时任务的节点在出现故障时,导致该数据库的定时任务无法被正常执行的情况,保证了该数据库的定时任务被正常可靠执行。值得注意的是,第一节点是除第二节点之外且具有执行数据库的定时任务的功能的任一控制节点,即,除了第二节点之外且具有执行数据库的定时任务的功能的控制节点都在监测该数据库的定时任务的执行情况,从而在数据库的定时任务的执行节点出现故障的情况下,有足够备用的控制节点接替故障的节点,重新执行该数据库的定时任务,保证了该数据库的定时任务被正常可靠执行。

本发明的第二实施方式涉及一种定时任务的执行方法,第二实施方式与第一实施方式大致相同,本实施方式主要是对第一实施方式的进一步细化:在第一节点运行该数据库的定时任务的过程中,若检测到该数据库的定时任务对应的执行节点的标识不是第一节点的标识,且确定第一节点的任务列表中包含有该数据库的定时任务,则停止运行该数据库的定时任务。

具体过程如图2所示,在本实施方式中,定时任务的执行方法包含步骤201~206,其中,步骤201~202与第一实施方式中的步骤101~102相同,在此不再赘述;下面具体介绍本实施方式中的步骤203~206:

在步骤203中,第一节点判断数据库的定时任务对应的执行节点的标识是否是第一节点的标识,若是,则转去执行步骤204,否则,转去执行步骤205;

在步骤204中,第一节点继续执行数据库的定时任务;

在步骤205中,第一节点判断该第一节点的任务列表中是否包含有该数据库的定时任务,若是,则转去执行步骤206,否则,转去执行步骤201;

在步骤206中,第一节点停止执行该数据库的定时任务。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明的第三实施方式涉及一种定时任务的执行装置,该装置的具体实施可参见第一实施例的相关描述,重复之处不再赘述。如图3所示,该装置主要包括:

抢占模块301,用于确定监测到数据库的定时任务在被第二节点执行的过程中出现超时,抢占所述数据库的定时任务的执行权;执行模块301,用于确定获得所述数据库的定时任务的执行权后,执行所述数据库的定时任务。

不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本申请第四实施方式提供了一种电子设备,该电子设备具体结构如图4所示。包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402。其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行第一或第二实施方式所描述的定时任务的执行方法。

本实施方式中,处理器401以中央处理器(centralprocessingunit,cpu)为例,存储器402以可读写存储器(randomaccessmemory,ram)为例。处理器401、存储器402可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中实现环境信息确定方法的程序就存储于存储器402中。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述定时任务的执行方法。

存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。

一个或者多个程序模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述任意方法实施例中的定时任务的执行方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本申请的第五实施方式涉及一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时能够实现本申请任意方法实施例中涉及的定时任务的执行方法。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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