发明内容
但是,在新增任务时,由于需要增加相应的程序代码才能使新增任务发布上线,如通过新增相应的程序代码才能实现新增任务在系统启动时被加载,从而使新增任务在系统启动后被执行,因此,每次新增任务都需要修改相应的程序代码以使任务发布上线,这使任务的管理的智能化程度较低;另外,在监控任务的执行过程中,由于在出现监控中断时不能有效确定任务是否仍在继续执行,因此,如果再次执行该任务,会导致任务被多次执行的现象;而如果不再执行该任务,会导致任务未被执行的现象。
因此在现有技术中,任务管理方式的智能化程度较低,不能灵活实现任务调度,且任务管理方式无法保证任务安全可靠的被执行,这是非常令人烦恼的过程。
为此,非常需要一种改进的任务调度管理方式的技术方案,以降低任务管理的复杂性,使任务调度管理具有较高的灵活性,并能够保证任务安全可靠的被执行。
在本上下文中,本发明的实施方式期望提供一种用于实现任务调度管理的方法、设备以及计算机可读存储介质。
在本发明实施方式的第一方面中,提供了一种用于实现任务调度管理的方法,包括:根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护;根据所述注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使所述选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点。
在本发明的一个实施例中,所述选举管理者包括:ZooKeeper,和/或所述注册任务集合包括:用于存储注册任务信息的数据库。
在本发明的又一个实施例中,所述任务设置信息包括:用于向注册任务集合中添加新的注册任务信息的新增任务设置信息、用于删除注册任务集合中的注册任务信息的删除任务设置信息以及用于更改注册任务集合中的注册任务信息的变更任务设置信息中的至少一个。
在本发明的再一个实施例中,所述注册任务集合中的一条注册任务信息对应一项任务。
在本发明的再一个实施例中,所述注册任务信息包括:任务分组信息,所述任务分组信息用于使任务节点从注册任务集合中获取其所属任务分组的注册任务信息。
在本发明的再一个实施例中,所述注册任务信息包括:任务执行策略信息以及任务节点标识列表,且所述任务执行策略信息包括下述至少一个:用于表征所有任务节点均执行任务的第一执行策略信息;用于表征通过手动选择任务节点执行任务的第二执行策略信息;用于表征由所有任务节点选举竞争出单节点执行任务的第三执行策略信息;用于表征由部分任务节点选举竞争出单节点执行任务的第四执行策略信息;用于表征由预设任务节点执行任务的第五执行策略信息;用于表征禁止预设任务节点执行任务的第六执行策略信息;其中,所述部分任务节点以及所述预设任务节点为所述任务节点标识列表中列出的任务节点,且所述执行策略信息和任务节点标识列表用于使相应的任务节点参与任务的执行。
在本发明的再一个实施例中,所述注册任务信息包括:最近一次成功执行任务的时间以及至少一个时间策略;所述最近一次成功执行任务的时间以及时间策略用于使任务节点获知相应的任务在当前时间是否需要执行。
在本发明的再一个实施例中,所述注册任务信息包括:任务状态信息,且所述任务状态信息包括下述至少一个:用于表征任务处于已启用状态的第一任务状态信息;用于表征任务处于未启用状态的第二任务状态信息;用于表征任务处于已删除状态的第三任务状态信息;所述任务状态信息用于使任务节点获知相应的注册任务信息是否处于启用状态以及相应的任务是否已被删除。
在本发明实施方式的第二方面中,提供了一种用于实现任务调度管理的方法,包括:根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息;根据所述注册任务信息在选举管理者处选举竞争执行任务的任务节点;在确定出选举竞争成功的情况下,对所述注册任务集合中的所述注册任务信息执行加锁操作;在对所述注册任务信息成功执行加锁操作的情况下,根据所述注册任务信息执行相应的任务。
在本发明的一个实施例中,所述选举管理者包括:ZooKeeper,和/或所述注册任务集合包括:用于存储注册任务信息的数据库。
在本发明的又一个实施例中,所述方法还包括:在任务节点启动过程中,从所述注册任务集合中获取注册任务信息。
在本发明的再一个实施例中,所述从注册任务集合中获取注册任务信息的步骤包括:根据注册任务集合中各注册任务信息中的任务分组信息从注册任务集合中获取任务节点所属任务分组的注册任务信息;或者,根据注册任务集合中各注册任务信息中的任务分组信息以及任务状态信息从注册任务集合中获取任务状态处于已启用状态以及已删除状态且任务节点所属任务分组的注册任务信息。
在本发明的再一个实施例中,所述根据所述注册任务信息在选举管理者处选举竞争执行任务的任务节点的步骤包括:在根据注册任务信息中的执行策略信息或者根据注册任务信息中的执行策略信息以及任务节点标识列表确定出当前任务节点需要参与选举竞争的情况下,判断当前任务节点中的所述注册任务信息是否对应有针对任务的内存锁;在判断出未对应有所述内存锁的情况下,在选举管理者处选举竞争执行任务的任务节点;其中,所述内存锁在任务成功执行完成后被释放。
在本发明的再一个实施例中,所述在选举管理者处选举竞争执行任务的任务节点的步骤包括:在确定出所述选举管理者处中针对所述任务在当前执行时间设置有任务执行完成的状态信息时,获取选举管理者为各参与选举竞争的任务节点分配的序列号,该序列号用于确定选举竞争成功的任务节点。
在本发明的再一个实施例中,所述根据所述注册任务信息执行相应的任务的步骤包括:在根据所述注册任务信息中的最近一次成功执行任务的时间以及时间策略确定出当前需要执行所述任务的情况下,根据所述注册任务信息中的任务执行方法执行相应的操作。
在本发明的再一个实施例中,所述方法还包括下述至少一个步骤:在确定出选举竞争失败的情况下,向选举管理者返回当前任务节点等待选举竞争信息;在对所述注册任务集合中的相应注册任务信息未成功加锁的情况下,向选举管理者返回当前任务节点等待选举竞争信息;在成功执行相应的任务的情况下,向选举管理者返回任务执行完成的状态信息,在所述注册任务集合中的注册任务信息中设置本次成功执行任务的时间,并解除对所述注册任务集合中的所述注册任务信息的锁定;在确定出选举竞争成功的情况下,根据预定的日志格式要求产生任务执行日志信息。
在本发明实施方式的第三方面中,提供了一种用于实现任务调度管理的设备,包括:任务管理模块,用于根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护;任务调度模块,用于根据所述注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使所述选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点。
在本发明的一个实施例中,所述选举管理者包括:ZooKeeper,和/或所述注册任务集合包括:用于存储注册任务信息的数据库。
在本发明的又一个实施例中,所述任务设置信息包括:用于向注册任务集合中添加新的注册任务信息的新增任务设置信息、用于删除注册任务集合中的注册任务信息的删除任务设置信息以及用于更改注册任务集合中的注册任务信息的变更任务设置信息中的至少一个。
在本发明的再一个实施例中,所述注册任务集合中的一条注册任务信息对应一项任务。
在本发明的再一个实施例中,所述注册任务信息包括:任务分组信息,所述任务分组信息用于使任务节点从注册任务集合中获取其所属任务分组的注册任务信息。
在本发明的再一个实施例中,所述注册任务信息包括:任务执行策略信息以及任务节点标识列表,且所述任务执行策略信息包括下述至少一个:用于表征所有任务节点均执行任务的第一执行策略信息;用于表征通过手动选择任务节点执行任务的第二执行策略信息;用于表征由所有任务节点选举竞争出单节点执行任务的第三执行策略信息;用于表征由部分任务节点选举竞争出单节点执行任务的第四执行策略信息;用于表征由预设任务节点执行任务的第五执行策略信息;用于表征禁止预设任务节点执行任务的第六执行策略信息;其中,所述部分任务节点以及所述预设任务节点为所述任务节点标识列表中列出的任务节点,且所述执行策略信息和任务节点标识列表用于使相应的任务节点参与任务的执行。
在本发明的再一个实施例中,所述注册任务信息包括:最近一次成功执行任务的时间以及至少一个时间策略;所述最近一次成功执行任务的时间以及时间策略用于使任务节点获知相应的任务在当前时间是否需要执行。
在本发明的再一个实施例中,所述注册任务信息包括:任务状态信息,且所述任务状态信息包括下述至少一个:用于表征任务处于已启用状态的第一任务状态信息;用于表征任务处于未启用状态的第二任务状态信息;用于表征任务处于已删除状态的第三任务状态信息;
所述任务状态信息用于使任务节点获知相应的注册任务信息是否处于启用状态以及相应的任务是否已被删除。
在本发明实施方式的第四方面中,提供了一种用于实现任务调度管理的设备,包括:获取任务信息模块,用于根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息;选举竞争模块,用于根据所述注册任务信息在选举管理者处选举竞争执行任务的任务节点;获取任务信息锁模块,用于在确定出选举竞争成功的情况下,对所述注册任务集合中的所述注册任务信息执行加锁操作;任务执行模块,用于在对所述注册任务信息成功执行加锁操作的情况下,根据所述注册任务信息执行相应的任务。
在本发明的一个实施例中,所述选举管理者包括:ZooKeeper,和/或所述注册任务集合包括:用于存储注册任务信息的数据库。
在本发明的又一个实施例中,所述获取任务信息模块还用于:在任务节点启动过程中,从所述注册任务集合中获取注册任务信息。
在本发明的再一个实施例中,所述获取任务信息模块具体用于:根据注册任务集合中各注册任务信息中的任务分组信息从注册任务集合中获取任务节点所属任务分组的注册任务信息;或者根据注册任务集合中各注册任务信息中的任务分组信息以及任务状态信息从注册任务集合中获取任务状态处于已启用状态以及已删除状态且任务节点所属任务分组的注册任务信息。
在本发明的再一个实施例中,所述选举竞争模块包括:内存锁子模块,用于在根据注册任务信息中的执行策略信息或者根据注册任务信息中的执行策略信息以及任务节点标识列表确定出当前任务节点需要参与选举竞争的情况下,判断当前任务节点中的所述注册任务信息是否对应有针对任务的内存锁;选举竞争子模块,用于在判断出未对应有所述内存锁的情况下,在选举管理者处选举竞争执行任务的任务节点;其中,所述内存锁在任务成功执行完成后被释放。
在本发明的再一个实施例中,所述选举竞争子模块具体用于:在确定出所述选举管理者处中针对所述任务在当前执行时间设置有任务未执行完成的状态信息时,获取选举管理者为各参与选举竞争的任务节点分配的序列号,所述序列号用于确定选举竞争成功的任务节点。
在本发明的再一个实施例中,所述任务执行模块具体用于:在根据所述注册任务信息中的最近一次成功执行任务的时间以及时间策略确定出当前需要执行所述任务的情况下,根据所述注册任务信息中的任务执行方法执行相应的操作。
在本发明的再一个实施例中,所述设备还包括下述至少一个模块:反馈模块,用于:在确定出选举竞争失败的情况下,向选举管理者返回当前任务节点等待选举竞争信息;在对所述注册任务集合中的相应注册任务信息未成功加锁的情况下,向选举管理者返回当前任务节点等待选举竞争信息;或者,在成功执行相应的任务的情况下,向选举管理者返回任务执行完成的状态信息,在所述注册任务集合中的注册任务信息中设置本次成功执行任务的时间,并解除对所述注册任务集合中的所述注册任务信息的锁定;日志模块,用于在确定出选举竞争成功的情况下,根据预定的日志格式要求产生任务执行日志信息。
在本发明实施方式的第五方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现步骤:根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护;根据所述注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使所述选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点;或者该程序被处理器执行时实现步骤:根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息;根据所述注册任务信息在选举管理者处选举竞争执行任务的任务节点;在确定出选举竞争成功的情况下,对所述注册任务集合中的所述注册任务信息执行加锁操作;在对所述注册任务信息成功执行加锁操作的情况下,根据所述注册任务信息执行相应的任务。
根据本发明实施方式的用于实现任务调度管理的方法、用于实现任务调度管理的设备以及计算机可读存储介质,通过在注册任务集合中进行注册任务信息维护,并通知对各任务节点进行选举管理的选举管理者,使选举管理者可以及时的触发任务节点从注册任务集合中获取更新的注册任务信息,且本发明实施方式可以方便的在注册任务集合中设置包含有任务分组、任务执行策略以及时间策略等内容的注册任务信息,因此,本发明实施方式在避免了修改程序代码以使任务发布上线的过程的同时,使任务调度管理能够智能方便且灵活的实现;通过在选举管理者处选举竞争执行任务的任务节点,并在选举竞争成功且成功对注册任务集合中的注册任务信息锁定的情况下,任务节点才根据注册任务信息执行相应的任务,使本发明实施方式可以利用注册任务信息的锁避免任务被重复执行的现象,另外,在任务节点出现异常而导致任务执行失败时,由于该注册任务集合中的注册任务信息的锁定会自行失效,从而会再次引起针对该注册任务信息的选举竞争,因此保证了任务能够被可靠执行,并进一步提高了任务管理的智能化程度;由此可知,本发明实施方式有效降低了任务调度管理的复杂性,使任务调度管理具有较高的灵活性,并能够保证任务安全可靠的被执行。
发明概述
本发明人发现,现有技术在新增任务时,由于需要增加相应的程序代码才能使新增任务发布上线,如通过新增相应的程序代码才能实现新增任务在系统启动时被加载,从而使新增任务在系统启动后被执行,因此,每次新增任务都需要修改相应的程序代码以使任务发布上线,这使任务的管理的智能化程度较低;另外,在监控任务的执行过程中,由于在出现监控中断时不能有效确定任务是否仍在继续执行,因此,如果再次执行该任务,会导致任务被多次执行的现象;而如果不再执行该任务,会导致任务未被执行的现象。
因此,针对现有技术中存在的任务管理方式的智能化程度较低、不能灵活实现任务调度以及任务管理方式无法保证任务安全可靠的被执行的技术问题,本发明实施方式提供了一种改进的任务调度管理方式的技术方案,以降低任务管理的复杂性,使任务调度管理具有较高的灵活性,并能够保证任务安全可靠的被执行。本发明实施方式通过在注册任务集合中进行注册任务信息维护,并通知对各任务节点进行选举管理的选举管理者,使选举管理者可以及时的触发任务节点从注册任务集合中获取更新后的注册任务信息,且本发明实施方式可以方便的在注册任务集合中设置包含有任务分组、任务执行策略以及时间策略等内容的注册任务信息,因此,本发明实施方式在避免了修改程序代码以使任务发布上线的过程的同时,使任务调度管理能够智能方便且灵活的实现;通过在选举管理者处选举竞争执行任务的任务节点,并在选举竞争成功且成功对注册任务集合中的注册任务信息进行锁定的情况下,任务节点才根据注册任务信息执行相应的任务,使本发明实施方式可以利用对注册任务信息的锁定操作避免任务被重复执行的现象,另外,在任务节点出现异常而导致任务执行失败时,由于该注册任务集合中的注册任务信息的锁定会自行失效,从而会再次引起针对该注册任务信息的选举竞争,因此保证了任务能够被可靠执行,并进一步提高了任务管理的智能化程度;由此可知,本发明实施方式有效降低了任务调度管理的复杂性,使任务调度管理具有较高的灵活性,并能够保证任务安全可靠的被执行。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,示意性地示出了根据本发明实施方式的可以在其中实现的应用场景。
图1中,任务节点1、任务节点2、……任务节点n均为能够执行任务的节点,且任务节点1、任务节点2、……任务节点n可以分别为用于处理不同业务的服务器,每一个任务节点都可以同时执行多项任务。任务调度管理节点可以通过任务执行策略使任务由任务节点1、任务节点2、……任务节点n中的一个或者多个任务节点执行。
然而,本领域技术人员完全可以理解,本发明实施方式的适用场景不受到该框架任何方面的限制。
示例性方法
下面结合图1所示的应用场景,参考图2-图4来描述根据本发明示例性实施方式的用于实现任务调度管理的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
参见图2,示意性地示出了根据本发明一实施例的用于实现任务调度管理的方法的流程图,该方法通常在任务调度管理节点处执行,且该方法可以包括下述步骤:
S200、根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护。
作为示例,本发明实施方式中的任务设置信息主要用于在注册任务集合中添加新的注册任务信息、修改注册任务集合中已有的注册任务信息以及删除注册任务集合中的注册任务信息;即任务设置信息可以为用于向注册任务集合中添加新的注册任务信息的新增任务设置信息,也可以为用于删除注册任务集合中的注册任务信息的删除任务设置信息,还可以为用于更改注册任务集合中的注册任务信息的变更任务设置信息。在通常情况下,可以采用数据库来实现注册任务集合,且数据库中的一条记录通常为一条注册任务信息,且一条注册任务信息通常对应一项任务。本发明实施方式中的注册任务信息的数据结构的一个具体例子可以如下述表1所示:
表1
需要特别说明的是,上述第三执行策略信息也可以为由所有任务节点选举竞争出多节点执行任务,且上述第四执行策略信息也可以为由部分任务节点选举竞争出多节点执行任务。另外,注册任务信息所包含的各字段的具体应用可以参见下述针对任务节点的实施方式的描述。
本发明实施方式可以通过预设的任务调度管理的人机交互界面来接收运维人员输入的任务设置信息,下面以三个具体的例子进行举例说明:
第一个具体的例子,在预设的任务调度管理主页面中的新建任务功能被触发时,显示新建任务页面,该新建任务页面中可以包括上述表1中所示的各字段名称,其中的任务标识可以是自动生成的,运维人员在新建任务页面中的相应字段名称的输入框处输入了相应的信息并点击了新建任务页面中的确认新增按钮后,本发明实施方式成功获取到用于向注册任务集合中添加新的注册任务信息的新增任务设置信息,本发明实施方式可以将获取到的新增任务设置信息按照数据库中的注册任务信息的格式要求进行整理,并将整理获得的注册任务信息添加在数据库中。
第二个具体的例子,在预设的任务调度管理主页面中的修改任务功能被触发时,显示修改任务页面,该修改任务页面中可以包括用于实现任务搜索的任务ID输入框,当然,该修改任务页面中也可以包括用于实现任务搜索的任务名称输入框和任务分组输入框;运维人员在修改任务页面中的任务ID输入框中输入了相应的任务ID或者在修改任务页面中的任务名称输入框和任务分组输入框中输入了相应的任务名称和任务分组并点击了修改任务页面中的搜索按钮后,本发明实施方式可以利用该任务ID或者利用该任务名称和任务分组在数据库中进行匹配查找,并在查找到数据库中存在匹配的注册任务信息时,显示匹配的注册任务信息中各字段名称的具体取值,在运维人员修改了相应字段名称(如时间策略或者任务执行策略等)的具体取值并点击了修改任务页面中的确认修改按钮后,本发明实施方式成功获取到用于更改注册任务集合中的注册任务信息的变更任务设置信息,本发明实施方式可以按照数据库中的注册任务信息的格式要求对变更任务设置信息进行整理,以形成一条新的注册任务信息,并利用该新的注册任务信息替换数据库中上述匹配的注册任务信息。
第三个具体的例子,在预设的任务调度管理主页面中的删除任务功能被触发时,显示删除任务页面,该删除任务页面中可以包括用于实现任务搜索的任务ID输入框,当然,该删除任务页面中也可以包括用于实现任务搜索的任务名称输入框和任务分组输入框;运维人员在删除任务页面中的任务ID输入框中输入了相应的任务ID或者在修改任务页面中的任务名称输入框和任务分组输入框中输入了相应的任务名称和任务分组并点击了修改任务页面中的搜索按钮后,本发明实施方式可以利用该任务ID或者利用该任务名称和任务分组在数据库中进行匹配查找,并在查找到数据库中存在匹配的注册任务信息时,显示匹配的注册任务信息中各字段名称的具体取值,在运维人员点击了删除任务页面中的确认删除按钮后,本发明实施方式成功获取到用于删除注册任务集合中的注册任务信息的删除任务设置信息,本发明实施方式可以将数据库中的上述匹配的注册任务信息中的任务状态信息设置为-1,以表示该注册任务信息已经被删除。
S210、根据注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,以便于使选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点(即参与选举竞争的任务节点)中选举出执行注册任务的任务节点。
作为示例,本发明实施方式中的注册任务信息维护操作即为上述S200中的在注册任务集合中添加新的注册任务信息的维护操作、修改注册任务集合中已有的注册任务信息的维护操作以及删除注册任务集合中的注册任务信息的维护操作。注册任务信息维护操作会触发通知选举管理者的操作。
作为示例,本发明实施方式在通知选举管理者时,可以将注册任务信息维护操作所针对的注册任务信息所属的任务分组信息传输给选举管理者,从而使选举管理者可以根据任务分组信息获知应该通知哪些任务节点从注册任务集合中获取注册任务信息。另外,本发明实施方式也可以在通知选举管理者时,将注册任务集合中的注册任务信息都推送给选举管理者。
作为示例,本发明实施方式中的选举管理者可以具体为ZooKeeper;且ZooKeeper在接收到来自任务调度管理节点的通知后,应通知相应的任务节点从注册任务集合中获取注册任务信息;另外,ZooKeeper还可以根据其接收到的注册任务信息建立针对任务的ZooKeeper节点(即下述任务ZooKeeper节点)。
作为示例,本发明实施方式中的ZooKeeper可以根据预设选举竞争规则从参与选举竞争的任务节点中选举出执行注册任务的任务节点。ZooKeeper的结构可以呈现树状,且在树状结构的根节点之下通常包括如下四层:
第一层为任务分组层,通常包括预设的一个或者多个任务分组信息,且一个任务分组信息通常对应一个服务以及多个任务节点,对应同一个任务分组信息的多个任务节点可以形成一个任务节点集,从而一个任务分组信息也可以称为一个任务节点集,且一个任务分组信息通常呈现为一个ZooKeeper节点(下述称为任务分组ZooKeeper节点);
第二层为任务层,通常包括一个或者多个任务信息,且每一个任务信息都应在其所属的任务分组信息下,一个任务信息通常呈现为一个ZooKeeper节点(下述称为任务ZooKeeper节点),且每一个任务ZooKeeper节点均应在相应的任务分组ZooKeeper节点下,以表明相应的任务所属的任务分组;
第三层为时间点层,通常包括一个或者多个任务执行时间点,该任务执行时间点通常是根据注册任务信息中的时间策略而确定的;每一个时间点应在其所属的任务信息下,一个时间点通常呈现为一个ZooKeeper节点(下述称为时间ZooKeeper节点),且每一个时间ZooKeeper节点均应在相应的任务ZooKeeper节点下,以表明相应的任务开始执行时间;
第四层为任务节点层,通常包括一个或者多个任务节点信息,且每一个任务节点信息应在相应的任务执行时间点下,一个任务节点信息通常呈现为一个ZooKeeper节点(下述称为任务节点ZooKeeper节点),且每一个任务节点ZooKeeper节点均应在相应的时间ZooKeeper节点下,以表明相应的任务节点参与了相应任务在相应的时间点被执行的选举竞争。需要特别说明的是,由于同一个任务节点既可以同时执行多个任务,也可以先后执行多个任务,因此,一个任务节点信息可以出现在同一个任务ZooKeeper节点的不同时间ZooKeeper节点下,也可以出现在不同任务ZooKeeper节点的相应的时间ZooKeeper节点下。
图3示意性地示出了根据本发明一实施例的用于实现任务调度管理的方法的流程图,该方法通常在任务节点处执行,且该方法可以包括下述步骤:
S300、根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息。
作为示例,在接收到选举管理者(如ZooKeeper)的通知后,可以通过对注册任务集合(如数据库)进行访问,来将数据库中的注册任务信息缓存在任务节点本地;一个具体的例子,在从数据库中获取注册任务信息的过程中,通常可以仅获取任务节点所属任务分组的注册任务信息,即从数据库中查找任务分组信息是任务节点所属任务分组的注册任务信息,并将查找到的这部分注册任务信息缓存在任务节点本地;另一个具体的例子,在从数据库中获取注册任务信息的过程中,通常可以仅获取任务节点所属任务分组且任务状态信息为启用状态的注册任务信息,即从注册任务集合中查找任务分组信息是任务节点所属任务分组且任务状态信息是已启用状态信息(即第一状态信息)的注册任务信息,并将查找到的这部分注册任务信息缓存在任务节点本地。
需要特别说明的是,本发明实施方式在从数据库中获取注册任务信息的过程中,还可以考虑任务执行策略以及任务节点标识列表,如在判断出一条注册任务信息中的任务执行策略为第四执行策略信息或者第五执行策略信息或者第六执行策略信息时,继续判断当前任务节点的标识是否属于注册任务信息中的任务节点标识列表,并根据判断结果确定是否需要将该条注册任务信息缓存到任务节点本地。在实际应用中,针对任务执行策略以及任务节点标识列表的判断过程可以与上述两个例子结合起来使用。
另外,本发明实施方式还可以在任务节点启动过程中,从数据库中获取注册任务信息;且在任务节点启动过程中从数据库中获取注册任务信息的方式与上述任务节点接收到选举管理者的通知后从数据库中获取注册任务信息的方式可以相同。还有,从数据库中获取的注册任务信息可以仅包括数据库中发生变化的注册任务信息,当然,从数据库中获取的注册任务信息可以包括发生变化的注册任务信息以及未发生变化的注册任务信息。
S310、根据注册任务信息在选举管理者处选举竞争执行任务的任务节点。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第一执行策略信息时,可以直接根据该注册任务信息中的任务运行调用方法执行相应的操作,以使当前任务节点执行任务。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第二执行策略信息时,可以直接跳过该条注册任务信息,处理下一条注册任务信息。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第三执行策略信息时,可以确定当前任务节点需要参与选举竞争,此时可以进一步判断当前任务节点中的该注册任务信息是否对应有针对任务的内存锁,如判断该注册任务信息是否对应有锁标志位,如果该注册任务信息对应有锁标志位,则表示当前任务节点正在执行该任务,可以直接跳过该条注册任务信息,并处理下一条注册任务信息;而如果该注册任务信息没有对应有锁标志位,则确定出当前任务节点应在选举管理者处参与选举竞争,以根据选举竞争结果确定当前任务节点是否可以成为执行该任务的任务节点。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第四执行策略信息时,可以判断当前任务节点标识是否属于任务节点标识列表,如果不属于任务节点标识列表,则确定当前任务节点不需要参与选举竞争,可以直接跳过该条注册任务信息,处理下一条注册任务信息;如果属于任务节点标识列表,则确定当前任务节点需要参与选举竞争,此时可以进一步判断当前任务节点中的该注册任务信息是否对应有针对任务的内存锁,如判断该注册任务信息是否对应有锁标志位,如果该注册任务信息对应有锁标志位,则表示当前任务节点正在执行该任务,可以跳过该条注册任务信息,并处理下一条注册任务信息,而如果该注册任务信息没有对应有锁标志位,则确定出当前任务节点应在选举管理者处参与选举竞争,以根据选举竞争结果确定当前任务节点是否可以成为执行该任务的任务节点。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第五执行策略信息时,可以判断当前任务节点标识是否属于任务节点标识列表,如果不属于任务节点标识列表,则可以直接跳过该条注册任务信息,并处理下一条注册任务信息;而如果属于任务节点标识列表,则可以直接根据该注册任务信息中的任务运行调用方法执行相应的操作,以使当前任务节点执行任务。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,在确定出该注册任务信息中的执行策略信息为第六执行策略信息时,可以判断当前任务节点标识是否属于任务节点标识列表,如果属于任务节点标识列表,则可以直接跳过该条注册任务信息,并处理下一条注册任务信息;而如果不属于任务节点标识列表,则可以直接根据该注册任务信息中的任务运行调用方法执行相应的操作,以使当前任务节点执行任务。
在确定出当前任务节点应在选举管理者处参与选举竞争时,可以在选举管理者(如ZooKeeper)处查找是否存在该注册任务信息对应的任务在当前执行时间点的时间ZooKeeper节点,如针对任务A而言,根据时间策略确定出任务A应在2016年9月14日15点整被执行,则可以通过判断ZooKeeper中是否存在TASK_A_20160914150000的ZooKeeper节点来确定是否存在任务A在当前执行时间点的ZooKeeper节点;如果判断出不存在任务在当前执行时间点的时间ZooKeeper节点,则应创建该时间ZooKeeper节点,并加入该创建的时间ZooKeeper节点,即在该时间ZooKeeper节点下增加相应的任务节点ZooKeeper节点;如果判断出存在任务在当前执行时间点的时间ZooKeeper节点,则可以直接加入该创建的时间ZooKeeper节点,即在该时间ZooKeeper节点下增加相应的任务节点ZooKeeper节点。在时间ZooKeeper节点下增加了任务节点ZooKeeper节点时,ZooKeeper会为当前任务节点分配一个用于参与选举竞争的序列号。由于每一个参与选举竞争的任务节点都能够获得其他参与选举竞争的任务节点的序列号,因此,本发明实施方式可以通过比较当前任务节点的序列号是否为最小序列号来确定当前任务节点是否选举竞争成功;当然,本发明实施方式并不排除通过比较当前任务节点的序列号是否为最小的N个序列号中的一个序列号来确定当前任务节点是否选举竞争成功。
另外,需要特别说明的是,在时间ZooKeeper节点下增加了任务节点ZooKeeper节点后,可以判断该时间ZooKeeper节点对应的任务执行的状态信息是任务未执行完成的状态信息,还是任务执行完成的状态信息,如果是任务未执行完成的状态信息,则可以通过比较当前任务节点的序列号是否为最小序列号来确定当前任务节点是否选举竞争成功;如果是任务执行完成的状态信息,则表明该任务在当前执行时间已经被成功执行了,可以不再继续执行本次选举竞争操作。
S320、在确定出选举竞争成功的情况下,对注册任务集合中的注册任务信息执行加锁操作。
作为示例,在当前任务节点选举竞争成功的情况下,应判断数据库中的相应注册任务信息是否已经被加锁,如果数据库中的相应注册任务信息已被加锁,则表示该任务正在被其他任务节点执行,当前任务节点不需要再执行该任务,本发明实施方式可以向选举管理者返回当前任务节点等待选举竞争信息,本发明实施方式可以使当前任务节点处于等待状态,从而使当前任务节点进入等待状态,以便于该任务节点在被唤醒后再次参与该任务的当前执行时间的选举竞争;如果数据库中的相应注册任务信息未被加锁,则表示该任务并未被其他任务节点执行,当前任务节点需要执行该任务,应执行对注册任务集合中的注册任务信息的加锁操作。当前任务节点与数据库之间的连接为长连接,在当前任务节点出现宕机等异常现象而导致当前任务节点与数据库之间的连接中断时,数据库中被加锁的相应的注册任务信息会处于解锁状态,从而该任务在后续仍能够通过选举竞争而被正常执行。
作为示例,在当前任务节点选举竞争失败的情况下,本发明实施方式可以向选举管理者返回当前任务节点等待选举竞争信息,从而使当前任务节点进入等待状态,以便于该任务节点在被唤醒后再次参与该任务的当前执行时间的选举竞争。
S330、在对注册任务信息成功执行加锁操作的情况下,根据注册任务信息执行相应的任务。
作为示例,本发明实施方式在对注册任务信息成功执行加锁操作的情况下,可以根据该注册任务信息中的最近一次成功执行任务的时间以及时间策略判断出当前是否需要执行该任务,如在时间策略为每天的整点执行,且最近一次成功执行任务的时间为20160914160000的情况下,如果当前时间为20160914160100,则判断出当前不需要执行该任务,如果当前时间为20160914170000,则判断出当前需要执行该任务。在确定出当前需要执行该任务的情况下,可以根据注册任务信息中的任务执行方法执行相应的操作。
作为示例,在成功执行相应的任务的情况下,本发明实施方式一方面应向选举管理者返回任务执行完成的任务状态信息,以避免该任务被重复执行;另一方面还应在数据库的相应注册任务信息中设置本次成功执行任务的时间,以避免该任务被重复执行;另外,本发明实施方式还应解除对数据库中的相应注册任务信息的锁定,以避免在下一次任务执行过程中,数据库中的相应注册任务信息不能够被锁定。
作为示例,本发明实施方式在执行任务失败的情况下,可以向选举管理者返回任务执行失败的任务状态信息,以触发再一次的选举竞争过程;且还可以执行解除对数据库中的相应注册任务信息的锁定操作。另外,本发明实施方式可以在确定出选举竞争成功的情况下,根据预定的日志格式要求产生任务执行日志信息,以便于对任务的调度管理。
参见图4,示意性地示出了根据本发明一实施例的用于实现任务调度管理的方法的流程图,该方法可以在任务节点处执行,且该方法主要针对需要选举竞争来执行的任务,该方法可以包括下述步骤:
S400、针对任务节点本地缓存的一条注册任务信息,在根据该注册任务信息中的时间策略以及当前时间确定出达到执行时间时,开始执行本次任务调度管理过程。
S410、根据该注册任务信息中的任务执行策略信息以及任务节点列表信息判断本任务节点是否需要通过选举竞争来执行该注册任务信息所对应的任务,如果本任务节点需要通过选举竞争来执行该任务,则到步骤S420;如果本任务节点不需要通过选举竞争来执行该任务,则到步骤S495。
S420、判断本任务节点中的该注册任务信息是否对应有锁标志位,如果该注册任务信息对应有锁标志位,则表示当前任务节点正在执行该任务,到步骤S495;而如果该注册任务信息没有对应有锁标志位,则确定出当前任务节点应在ZooKeeper处参与选举竞争,到步骤S430。
S430、在ZooKeeper处的该任务的当前执行时间点的时间ZooKeeper节点下,建立任务节点ZooKeeper节点,如果当前不存在上述时间ZooKeeper节点,则可以建立时间ZooKeeper节点,然后再在该时间ZooKeeper节点下建立任务节点ZooKeeper节点。
S440、在建立了任务节点ZooKeeper节点后,会获得ZooKeeper为其分配的序列号。
S450、判断时间ZooKeeper节点的任务执行的状态信息是任务未执行完成的状态信息,还是任务执行完成的状态信息,如果是任务未执行完成的状态信息,则到步骤S460;如果是任务执行完成的状态信息,则表明该任务在当前执行时间已经被成功执行了,可以不再继续执行本次选举竞争操作,到步骤S495。
S460、判断ZooKeeper为本任务节点ZooKeeper节点分配的序列号以及为其他任务节点ZooKeeper节点分配的序列号的大小,以确定ZooKeeper为本任务节点ZooKeeper节点分配的序列号是否为最小序列号,如果为最小序列号,则选举竞争成功,到步骤S470;而如果不为最小序列号,则选举竞争失败,可以向ZooKeeper返回本任务节点等待选举竞争信息,到步骤S461。
S461、本任务节点进入等待状态,本任务节点在被唤醒后可以再次参与该任务的当前执行时间的选举竞争。
S470、对数据库中的该条注册任务信息执行加锁操作。
S480、判断是否对数据库中的该条注册任务信息成功执行加锁操作,如果数据库中的该条注册任务信息已经被加锁,则表示该任务正在被其他任务节点执行,本任务节点不需要再执行该任务,本次加锁操作执行失败,到步骤S461;而如果数据库中的该条注册任务信息并未被加锁,则表示该任务并未被其他任务节点执行,本任务节点需要执行该任务,本次加锁操作执行成功后,到步骤S490。
S490、从数据库中获取注册任务信息的最近一次成功执行任务的时间。
S491、根据上述获取的最近一次成功执行任务的时间以及时间策略判断该任务是否已经被执行,如果判断出该任务已经被执行,则当前不需要执行该任务,到步骤S495;如果判断出该任务并未被执行,则当前需要执行该任务,到步骤S492。
S492、根据注册任务信息中的任务执行方法执行相应的操作,以完成执行任务操作。
S493、判断是否成功执行任务,如果成功执行任务,到步骤S494,如果出现异常未成功执行任务,到步骤S495。
S494、任务执行成功后,解除对数据库中的该注册任务信息的锁定,释放内存锁(如修改注册任务信息对应有锁标志位),将时间ZooKeeper节点的任务执行的状态信息设置为任务执行完成的状态信息,在数据库的该注册任务信息中设置最近一次成功执行任务的时间,并按照要求的格式输出日志信息。将时间ZooKeeper节点的任务执行的状态信息设置为任务执行完成的状态信息的操作可以使时间ZooKeeper节点下的等待被唤醒的各任务节点被唤醒。
S495、任务节点执行本次任务调度管理过程的操作结束。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图5和图6对本发明示例性实施方式的用于实现任务调度管理的设备进行说明。
参见图5,示意性地示出了根据本发明一实施例的用于实现任务调度管理的设备的结构示意图,该设备通常设置于任务调度管理节点处。
图5中,本发明实施方式的用于实现任务调度管理的设备包括:任务管理模块500以及任务调度模块510。
任务管理模块500主要用于根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护。
作为示例,任务管理模块500可以利用任务设置信息于在注册任务集合中添加新的注册任务信息、修改注册任务集合中已有的注册任务信息以及删除注册任务集合中的注册任务信息;即任务设置信息可以为用于向注册任务集合中添加新的注册任务信息的新增任务设置信息,也可以为用于删除注册任务集合中的注册任务信息的删除任务设置信息,还可以为用于更改注册任务集合中的注册任务信息的变更任务设置信息。在通常情况下,任务管理模块500可以采用数据库来实现注册任务集合,且数据库中的一条记录通常为一条注册任务信息,且一条注册任务信息通常对应一项任务。
本发明实施方式中的注册任务信息的数据结构的一个具体例子可以如上述表1所示,在此不再重复说明。
任务管理模块500可以通过预设的任务调度管理的人机交互界面来接收运维人员输入的任务设置信息,以三个具体的例子如上述方法实施例中的描述,在此不再重复说明。
任务调度模块520主要用于根据注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点。
作为示例,本发明实施方式中的注册任务信息维护操作即为任务管理模块500在注册任务集合中添加新的注册任务信息的维护操作、修改注册任务集合中已有的注册任务信息的维护操作以及删除注册任务集合中的注册任务信息的维护操作。注册任务信息维护操作会触发任务调度模块520通知选举管理者的操作。
作为示例,任务调度模块520在通知选举管理者时,可以将注册任务信息维护操作所针对的注册任务信息所属的任务分组信息传输给选举管理者,从而使选举管理者可以根据任务分组信息获知应该通知哪些任务节点从注册任务集合中获取注册任务信息。另外,任务调度模块520也可以在通知选举管理者时,将注册任务集合中的注册任务信息都推送给选举管理者。
作为示例,本发明实施方式中的选举管理者可以具体为ZooKeeper;且ZooKeeper在接收到来自任务调度模块520的通知后,应通知相应的任务节点从注册任务集合中获取注册任务信息;另外,ZooKeeper还可以根据其接收到的注册任务信息建立针对任务的ZooKeeper节点(即下述任务ZooKeeper节点)。
参见图6,示意性地示出了根据本发明一实施例的用于实现任务调度管理的设备的结构示意图,该设备通常设置于任务节点处,且该设备主要包括:获取任务信息模块600、选举竞争模块610、获取任务信息锁模块620以及任务执行模块630;可选的,该设备还可以包括:反馈模块640以及日志模块650。
获取任务信息模块600主要用于根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息。
作为示例,获取任务信息模块600在接收到选举管理者(如ZooKeeper)的通知后,可以通过对注册任务集合(如数据库)进行访问,来将数据库中的注册任务信息缓存在任务节点本地;一个具体的例子,在从数据库中获取注册任务信息的过程中,获取任务信息模块600通常可以仅获取任务节点所属任务分组的注册任务信息,即获取任务信息模块600从数据库中查找任务分组信息是任务节点所属任务分组的注册任务信息,并将查找到的这部分注册任务信息缓存在任务节点本地;另一个具体的例子,获取任务信息模块600在从数据库中获取注册任务信息的过程中,通常可以仅获取任务节点所属任务分组且任务状态信息为启用状态的注册任务信息,即获取任务信息模块600从注册任务集合中查找任务分组信息是任务节点所属任务分组且任务状态信息是已启用状态信息(即第一状态信息)的注册任务信息,并将查找到的这部分注册任务信息缓存在任务节点本地。
需要特别说明的是,获取任务信息模块600在从数据库中获取注册任务信息的过程中,还可以考虑任务执行策略以及任务节点标识列表,如获取任务信息模块600在判断出一条注册任务信息中的任务执行策略为第四执行策略信息或者第五执行策略信息或者第六执行策略信息时,获取任务信息模块600继续判断当前任务节点的标识是否属于注册任务信息中的任务节点标识列表,并根据判断结果确定是否需要将该条注册任务信息缓存到任务节点本地。在实际应用中,获取任务信息模块600针对任务执行策略以及任务节点标识列表的判断过程可以与上述两个例子结合起来使用。
另外,获取任务信息模块600还可以在任务节点启动过程中,从数据库中获取注册任务信息;且在任务节点启动过程中从数据库中获取注册任务信息的方式与上述任务节点接收到选举管理者的通知后从数据库中获取注册任务信息的方式可以相同。还有,获取任务信息模块600从数据库中获取的注册任务信息可以仅包括数据库中发生变化的注册任务信息,当然,获取任务信息模块600从数据库中获取的注册任务信息可以包括发生变化的注册任务信息以及未发生变化的注册任务信息。
选举竞争模块610主要用于根据注册任务信息在选举管理者处选举竞争执行任务的任务节点;且该选举竞争模块610可以包括:内存锁子模块以及选举竞争子模块,其中的内存锁子模块主要用于在根据注册任务信息中的执行策略信息或者根据注册任务信息中的执行策略信息以及任务节点标识列表确定出当前任务节点需要参与选举竞争的情况下,判断当前任务节点中的注册任务信息是否对应有针对任务的内存锁;其中的选举竞争子模块主要用于在判断出未对应有所述内存锁的情况下,在选举管理者处选举竞争执行任务的任务节点。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,选举竞争模块610在确定出该注册任务信息中的执行策略信息为第三执行策略信息时,可以确定当前任务节点需要参与选举竞争,此时选举竞争模块610(如内存锁子模块)可以进一步判断当前任务节点中的该注册任务信息是否对应有针对任务的内存锁,如判断该注册任务信息是否对应有锁标志位,如果该注册任务信息对应有锁标志位,则表示当前任务节点正在执行该任务,可以直接跳过该条注册任务信息,并处理下一条注册任务信息;而如果该注册任务信息没有对应有锁标志位,则选举竞争模块610(如内存锁子模块)确定出当前任务节点应在选举管理者处参与选举竞争,以根据选举竞争结果确定当前任务节点是否可以成为执行该任务的任务节点。
作为示例,针对任务状态信息为第一任务状态信息的注册任务信息,选举竞争模块610在确定出该注册任务信息中的执行策略信息为第四执行策略信息时,可以判断当前任务节点标识是否属于任务节点标识列表,如果不属于任务节点标识列表,则选举竞争模块610确定当前任务节点不需要参与选举竞争,可以直接跳过该条注册任务信息,处理下一条注册任务信息;如果属于任务节点标识列表,则选举竞争模块610确定当前任务节点需要参与选举竞争,此时选举竞争模块610(如内存锁子模块)可以进一步判断当前任务节点中的该注册任务信息是否对应有针对任务的内存锁,如判断该注册任务信息是否对应有锁标志位,如果该注册任务信息对应有锁标志位,则表示当前任务节点正在执行该任务,可以跳过该条注册任务信息,并处理下一条注册任务信息,而如果该注册任务信息没有对应有锁标志位,则选举竞争模块610(如内存锁子模块)确定出当前任务节点应在选举管理者处参与选举竞争,以根据选举竞争结果确定当前任务节点是否可以成为执行该任务的任务节点。
选举竞争模块610在确定出当前任务节点应在选举管理者处参与选举竞争时,选举竞争子模块可以在选举管理者(如ZooKeeper)处查找是否存在该注册任务信息对应的任务在当前执行时间点的时间ZooKeeper节点,如针对任务A而言,选举竞争子模块根据时间策略确定出任务A应在2016年9月14日15点整被执行,则选举竞争子模块可以通过判断ZooKeeper中是否存在TASK_A_20160914150000的ZooKeeper节点来确定是否存在任务A在当前执行时间点的ZooKeeper节点;如果选举竞争子模块判断出不存在任务在当前执行时间点的时间ZooKeeper节点,则应创建该时间ZooKeeper节点,并加入该创建的时间ZooKeeper节点,即在该时间ZooKeeper节点下增加相应的任务节点ZooKeeper节点;如果选举竞争子模块判断出存在任务在当前执行时间点的时间ZooKeeper节点,则可以直接加入该创建的时间ZooKeeper节点,即选举竞争子模块在该时间ZooKeeper节点下增加相应的任务节点ZooKeeper节点。在时间ZooKeeper节点下增加了任务节点ZooKeeper节点时,ZooKeeper会为当前任务节点分配一个用于参与选举竞争的序列号。由于每一个参与选举竞争的任务节点都能够获得其他参与选举竞争的任务节点的序列号,因此,选举竞争子模块可以通过比较当前任务节点的序列号是否为最小序列号来确定当前任务节点是否选举竞争成功;当然,本发明实施方式并不排除选举竞争子模块通过比较当前任务节点的序列号是否为最小的N个序列号中的一个序列号来确定当前任务节点是否选举竞争成功。
另外,需要特别说明的是,在时间ZooKeeper节点下增加了任务节点ZooKeeper节点后,选举竞争子模块可以判断该时间ZooKeeper节点对应的任务执行的状态信息是任务未执行完成的状态信息,还是任务执行完成的状态信息,如果是任务未执行完成的状态信息,则选举竞争子模块可以通过比较当前任务节点的序列号是否为最小序列号来确定当前任务节点是否选举竞争成功;如果是任务执行完成的状态信息,则表明该任务在当前执行时间已经被成功执行了,选举竞争子模块可以不再继续执行本次选举竞争操作。
获取任务信息锁模块620主要用于在确定出选举竞争成功的情况下,对注册任务集合中的注册任务信息执行加锁操作;
作为示例,在当前任务节点选举竞争成功的情况下,获取任务信息锁模块620应判断数据库中的相应注册任务信息是否已经被加锁,如果数据库中的相应注册任务信息已被加锁,则表示该任务正在被其他任务节点执行,当前任务节点不需要再执行该任务,反馈模块640可以向选举管理者返回当前任务节点等待选举竞争信息,反馈模块640可以使当前任务节点处于等待状态,从而使当前任务节点进入等待状态,以便于该任务节点在被唤醒后再次参与该任务的当前执行时间的选举竞争;如果数据库中的相应注册任务信息未被加锁,则表示该任务并未被其他任务节点执行,当前任务节点需要执行该任务,获取任务信息锁模块620应执行对注册任务集合中的注册任务信息的加锁操作。
作为示例,在当前任务节点选举竞争失败的情况下,反馈模块640可以向选举管理者返回当前任务节点等待选举竞争信息,从而使当前任务节点进入等待状态,以便于该任务节点在被唤醒后再次参与该任务的当前执行时间的选举竞争。
任务执行模块630主要用于在对注册任务信息成功执行加锁操作的情况下,根据注册任务信息执行相应的任务。
作为示例,任务执行模块630在获取任务信息锁模块620对注册任务信息成功执行加锁操作的情况下,可以根据该注册任务信息中的最近一次成功执行任务的时间以及时间策略判断出当前是否需要执行该任务,如在时间策略为每天的整点执行,且最近一次成功执行任务的时间为20160914160000的情况下,如果当前时间为20160914160100,则任务执行模块630判断出当前不需要执行该任务,如果当前时间为20160914170000,则判断出当前需要执行该任务。在确定出当前需要执行该任务的情况下,任务执行模块630可以根据注册任务信息中的任务执行方法执行相应的操作。
作为示例,在任务执行模块630成功执行相应的任务的情况下,反馈模块640一方面应向选举管理者返回任务执行完成的任务状态信息,以避免该任务被重复执行;另一方面反馈模块640还应在数据库的相应注册任务信息中设置本次成功执行任务的时间,以避免该任务被重复执行;另外,反馈模块640还应解除对数据库中的相应注册任务信息的锁定,以避免在下一次任务执行过程中,数据库中的相应注册任务信息不能够被锁定。
作为示例,在反馈模块640执行任务失败的情况下,反馈模块640可以向选举管理者返回任务执行失败的任务状态信息,以触发再一次的选举竞争过程;且反馈模块640还可以执行解除对数据库中的相应注册任务信息的锁定操作。另外,日志模块650可以在确定出选举竞争成功的情况下,根据预定的日志格式要求产生任务执行日志信息,以便于对任务的调度管理。
图7示出了适于用来实现本发明实施方式的示例性计算机系统/服务器70的框图。图7显示的计算机系统/服务器70仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统/服务器70以通用计算设备的形式表现。计算机系统/服务器70的组件可以包括但不限于:一个或者多个处理器或者处理单元701,系统存储器702,连接不同系统组件(包括系统存储器702和处理单元701)的总线703。
总线703表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器70典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器70访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器702可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)7021和/或高速缓存存储器7022。计算机系统/服务器70可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,ROM7023可以用于读写不可移动的、非易失性磁介质(图7中未显示,通常称为“硬盘驱动器”)。尽管未在图7中示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线703相连。系统存储器702中可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块7024的程序/实用工具7025,可以存储在例如系统存储器702中,且这样的程序模块7024包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块7024通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器70也可以与一个或多个外部设备704(如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器70交互的设备通信,和/或与使得该计算机系统/服务器70能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口705进行。并且,计算机系统/服务器70还可以通过网络适配器706与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器706通过总线703与计算机系统/服务器70的其它模块(如处理单元701等)通信。应当明白,尽管图7中未示出,可以结合计算机系统/服务器70使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元701通过运行存储在系统存储器702中的程序,从而执行各种功能应用以及数据处理,例如执行并实现用于实现任务调度管理的方法中的各步骤例如,执行下述步骤:根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护;根据所述注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点;再例如,执行下述步骤:根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息;根据注册任务信息在选举管理者处选举竞争执行任务的任务节点;在确定出选举竞争成功的情况下,对注册任务集合中的该注册任务信息执行加锁操作;在对该注册任务信息成功执行加锁操作的情况下,根据该注册任务信息执行相应的任务。上述各步骤的进一步的具体内容以及本发明实施方式所包含的其他步骤请参见上述实施方式中的描述,在此不再重复说明。
本发明实施方式的计算机可读存储介质一个具体例子如图8所示。
图8的计算机可读存储介质为光盘800,其上存储有计算机程序(即程序产品),该程序被处理器执行时,会实现上述方法实施方式中所记载的各步骤,例如,执行下述步骤:根据接收到的任务设置信息在注册任务集合中执行注册任务信息维护;根据所述注册任务信息维护操作通知对各任务节点进行选举管理的选举管理者,使所述选举管理者通知相应的任务节点从注册任务集合中获取注册任务信息并从相应的任务节点中选举出执行注册任务的任务节点;再例如,执行下述步骤:根据来自选举管理者的获取任务信息的通知从注册任务集合中获取注册任务信息;根据注册任务信息在选举管理者处选举竞争执行任务的任务节点;在确定出选举竞争成功的情况下,对注册任务集合中的该注册任务信息执行加锁操作;在对该注册任务信息成功执行加锁操作的情况下,根据该注册任务信息执行相应的任务。上述各步骤的进一步的具体内容以及本发明实施方式所包含的其他步骤请参见上述实施方式中的描述,在此不再重复说明。
应当注意,尽管在上文详细描述中提及了用于实现任务调度管理的设备的若干模块或子模块,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。