分布式任务调度方法及任务调度系统的制作方法

文档序号:7947712阅读:214来源:国知局
专利名称:分布式任务调度方法及任务调度系统的制作方法
技术领域
本发明涉及互联网技术领域,特别涉及一种分布式任务调度方法及任务调度系统。
背景技术
近年来,随着互联网领域的高速发展,互联网所依赖的任务机(服务器)规模也越来越庞大。并且随着应用领域的不断扩展,用户的多个应用往往会在不同的任务机上执行。因此如何对这些跨机器应用的服务关系进行管理、维护及调度,就成为一个亟待解决的问题。传统的任务管理方法包括由数据管理中心根据存储的任务之间的依赖关系,分别对单个任务机进行调度和管理。当一个前导任务机执行完毕后,向数据管理中心反馈任务结束响应。数据管理中心在接收到该前导任务机的任务结束响应后,读取存储的任务表,再根据任务表中的任务之间的依赖关系,向该前导任务机对应的后继任务机发送任务启动指令以使该后继任务机执行相应的任务。多个任务机彼此之间没有直接通讯。上述传统的任务管理方法存在以下问题(1)仅能针对单机的任务进行定时调度。(2)在任务机执行过程中,如果任务出现故障,不能定义报警。(3)没有统一的界面对任务进行维护和管理,用户必须登录到操作的任务机上通过命令行手工查看,在任务机数目与任务数目较多的情况下,非常的耗时耗力,并且无法达到自动化管理的水平。

发明内容
本发明的目的旨在至少解决上述技术缺陷之一,特别是解决仅能针对单机的任务进行定时调度的缺点。为此,本发明的第一个目的在于提供一种可以集中化管理的分布式任务调度方法。本发明的第二个目的在于提供一种分布式任务调度系统。本发明的第三个目的在于提供一种任务机。本发明的第四个目的在于提供一种任务表分发器。为达到上述目的,本发明第一方面的实施例提出一种分布式任务调度方法,包括如下步骤任务表分发器向多个任务机发送任务表,其中,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;所述多个任务机分别根据所述任务表中的所述对应的任务及所述依赖关系表确定自身是否为起始任务机;所述起始任务机根据所述任务表执行所述起始任务机所对应的任务;以及在所述对应的任务执行完成后,所述起起始任务机根据所述依赖关系表通知所述起始任务机的后继任务机执行相应的任务。根据本发明实施例的分布式任务调度方法,可以实现对多个任务机的集中式管理、分布调度和依赖关系的维护,从而提高了对多个任务机的管理和维护的效率。并且,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,即通过P2P的方式进行通讯,从而可以在任务机数目和任务数目较多的情况下,实现上下游任务机之间的自动调整。本发明第二方面的实施例提供了一种分布式任务调度系统,包括数据库服务器、任务表分发器和多个任务机,其中,所述数据库服务器,用于存储任务表,其中,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;所述任务表分发器,用于向所述多个任务机发送所述任务表;所述多个任务机,用于根据所述任务表中的所述对应的任务及所述依赖关系表确定自身是否为起始任务机,并在自身为所述起始任务机时根据所述任务表执行所述起始任务机对应的任务,以及在所述对应的任务执行完成后,根据所述依赖关系表通知所述起始任务机的后继任务机执行相应的任务。根据本发明实施例的分布式任务调度系统,可以实现对多个任务机的集中式管理、分布调度和依赖关系的维护,从而提高了对多个任务机的管理和维护的效率。并且,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,即通过P2P的方式进行通讯,从而可以在任务机数目和任务较多的情况下,实现上下游任务机之间的自动调整。本发明第三方面的实施例提供了一种任务机,包括接收单元,用于接收来自任务表分发器的任务表,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;存储单元,用于存储所述任务表;执行单元,用于根据所述任务表中的所述对应的任务及所述依赖关系表确定所述任务机是否为起始任务机,当确定所述任务机为起始任务机后,根据所述任务表执行所述起始任务机所对应的任务;以及发送单元,用于在所述执行单元任务执行完成后,根据所述依赖关系表通知所述任务机的后继任务机执行相应的任务。根据本发明实施例的任务机,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,即通过P2P的方式进行通讯,从而可以在任务机数目和任务较多的情况下,实现上下游任务机之间的自动调整。本发明第四方面的实施例提供了一种任务表分发器,包括获取单元,用于从数据库服务器中获取任务表;以及发送单元,用于向多个任务机发送任务表,其中,所述任务表包括所述多个任务机中每个任务机的名称、地址、所述每个任务机对应的任务和所述任务之间的依赖关系表。根据本发明实施例的任务表分发器,可以实现对多个任务机的集中式管理、分布调度和依赖关系的维护,从而提高了对多个任务机的管理和维护的效率。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中图1为根据本发明实施例的分布式任务调度方法的流程6
图2为根据本发明实施例的任务表分发器和任务机之间的任务表下发过程的示意图;图3为根据本发明实施例的两个任务机之间的任务调度示意图;图4为根据本发明实施例的任务机与监控机之间的指令交互示意图;图5为根据本发明一个实施例的分布式任务调度系统的示意图;图6为根据本发明另一个实施例的分布式任务调度系统的示意图;图7为根据本发明实施例的任务机的示意图;和图8为根据本发明实施例的任务表分发器的示意图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。下面参考图1描述根据本发明实施例的分布式任务调度方法。如图1所示,本发明实施例提供的分布式任务调度方法包括如下步骤SlOl 任务表分发器向多个任务机发送任务表。其中,任务表包括多个任务机中每个任务机的定位标识、每个任务机对应的任务和任务之间的依赖关系表。该依赖关系表由用户进行设定,其根据任务机的个数、性能等参数而有所更改。在本发明的一个实施例中,任务机的定位标识可以为任务机的名称和/或地址。其中,地址可以是任务机的IP地址,也可以是MAC地址。在本发明的一个实施例中,任务表存储在数据库服务器中。当然在本发明的其他实施例中,数据库服务器及任务表分发器也可为同一个装置,即数据库服务器也能够完成任务表的功能。在本发明的进一步实施例中,数据库服务器中任务表是会发生更改的,因此任务表分发器还需要检测数据库服务器中的任务表的更改。一旦任务表分发器检测到数据库服务器中任务表发生了更改,则任务表分发器统一将更改后的任务表向所有任务机发送。在此需要说明的是,所述的“所有任务机”仅是相对于该任务而言的,并非指所有与数据库服务器相连的任务机。在本发明的优选实施例中,用户可以通过互联网网页服务架构web端的集中管理模块对数据库服务器中的任务表进行修改。集中式管理模块可以基于web架构下,利用HTML (Hypertext Markup Language,文本标记语言)绘制可视化的人机交互界面,定义友好的管理菜单,从而完成对所有任务机的任务的管理。在本发明的一个实施例中,任务表分发器可以通过TCP协议(Transmission Control Protocol,传输控制协议)向多个任务机发送任务表。具体地,图2示出了本发明实施例的任务表分发器和任务机之间的任务表下发过程。在该实施例中,主要对任务表发生改变的情况进行介绍。S201 任务表分发器通知多个任务机准备任务表下发前的消息。如果数据库服务器中的任务表发生了更改,则任务表分发器向任务机发送指令ct_msg_t CT_UPDATE_TASKLIST,通知多个任务机数据库服务器中的任务表发生了更改,即将发送更改后的任务表,准备接收任务表的相关信息。其中,每个任务机均完全兼容UNIX-CR0ND 格式。S202 任务表分发器将任务表下发到多个任务机。在本发明的一个实施例中,任务表分发器可通过TCP协议将任务表发送至多个任务机。当然在本发明的其他实施例中,也可选择其他手段发送至多个任务机。具体地,任务表分发器向多个任务机发送任务表正文Char[tasklist_size]。S203:多个任务机在接收到完整的任务表后,分别向任务表分发器发送接收响应。在本发明的实施例中,任务表分发器发送任务表时可采用发送-确认机制,从而增加系统的可靠性。多个任务机在接收到任务表分发器发送的任务表,并对任务表进行验证。在通过验证之后,多个任务机可采用XML (Extensible Markup Language,可扩展标记语言)的格式对任务表进行存储,并向任务表分发器发送接收响应Ct_C0nfirm_mSg_tCT_CFM_UPDATE_TASKLIST。S204 任务表分发器在接收到来自多个任务机的接收响应后,向多个任务机发送任务表替换指令。由于此时在任务机中存储有旧的任务表,因此当任务表分发器在接收到来自任务机的接收响应后,可以获知多个任务机已准备好。然后可以向多个任务机发送任务表替换指令,在本发明的一个实施例中,任务表替换指令可为ct_msg_t CT_UPDATE_TASKLIST_CONFIRM,任务表替换指令用于通知任务机利用步骤202中接收到的任务表替换旧的任务表。如果任务表分发器未接收到来自多个任务机中任一个发送的接收响应,即任务表分发器未接收到全部任务机的接收响应,则相应的未发出接收响应的任务机失败,发出报
警信号。S205:多个任务机根据任务表替换指令,设置接收到的任务表为当前执行的任务表,即利用步骤202中接收到的任务表替换旧的任务表,并在替换完成后,向任务表分发器发送替换完成响应响应。在本发明的一个实施例中,替换完成响应可为ct_conf irm_msg_tCT_CFM_UPDATE_TASKLIST_CONFIRM。当任务表分发器接收来自任务机的替换完成响应,则表示任务表下发过程成功结
束ο如果任务表分发器未接收到来自多个任务机中任一个发送的替换完成响应响应,即任务表分发器未接收到全部任务机的替换完成响应响应,则相应的未发出替换完成响应响应的任务机失败,发出报警信号。S102 多个任务机分别根据任务表中的对应的任务及依赖关系表确定自身是否为起始任务机。在任务开始执行时,任务机读取以XML格式存储的文件以获取任务表。多个任务机分别根据任务表中的对应的任务机依赖关系表确定自身是否为起始任务机。在本发明的一个实施例中,依赖关系表包括前导任务机表和后继任务机表。其中,前导任务机表用于记录与接收到任务表的任务机对应的所有前导任务机的定位标识。后继任务机表用于记录与接收到任务表的任务机对应的所有后继任务机的定位标识。可以理解的是,前导任务机表和后继任务机表之中可以相应地保存前导任务机和后继任务机的名称和/或地址。多个任务机根据任务表中的对应的任务和上述依赖关系表,确定自身是否为起始任务机。当某个任务机检查到存储的前导任务机表为空时,则判断自身为起始任务机。S103 起始任务机根据任务表执行该起始任务机所对应的任务。起始任务机执行任务表中该起始任务机所对应的任务。在本发明的一个实施例中,起始任务机还向监控机发送单机任务启动消息,并由监控机向数据库服务器中写入起始任务机的本次任务的启动时间点。同时,在起始任务机执行完成任务后,还需要向监控机发送单机任务结束消息,由监控机向数据库服务器中写入起始任务机本次任务的结束时间和运行结果。S104:在对应的任务执行完成后,起始任务机根据任务表中的依赖关系表通知起始任务机的后继任务机执行相应的任务。当起始任务机执行完对应的任务后,根据依赖关系表查找起始任务机的后继任务机及从任务表中读取后继任务机的定位标识,并根据后继任务机的定位标识向后继任务机发送起始任务机的任务结束通知以使该后继任务机根据任务表执行相应的任务。其中,起始任务机的任务结束通知代表该起始任务机已经执行完成对应的任务。具体地,起始任务机根据任务表中的依赖关系表确定后继任务机的名称,接着再根据后继任务机的名称查找任务表以确定该后继任务机的地址。在本发明的一个实施例中,后继任务机在接收到起始任务机的任务结束通知后,获知起始任务机已经完成对应的任务,且向起始任务机反馈响应以向起始任务机通知收到该任务结束通知。如果起始任务机未接收到上述任务结束通知,则发出报警信号。后继任务机在执行完对应的任务后,继续根据依赖关系表通知下一个后继任务机执行相应的任务,直至依赖关系表中的任务执行完毕。具体地,下一个后继任务机在接收到来自对应的前导任务机的任务结束通知之后,从存储的任务表中的前导任务机表中删除对应的前导任务机,直至前导任务机表为空后,该任务机确定自身为起始任务机。如果判断自身为起始任务机,则执行步骤S103,否则多个任务机每隔预设时间检查任务表,查看自身是否可以运行。在本发明的一个示例中,预设时间可以为1分钟。下面参考图3以两个任务机为例对任务机之间的调度过程进行描述。如图3所示,A和B分别为两个任务机,其中,A为B的前导任务机,B为A的后继任务机。首先,任务机A每隔预设时间检查任务表,查看任务机A是否可以运行。如果当前时间到达任务表中预设启动时间,并且任务机A对应的所有前导任务机的任务均执行完毕,即任务机A的前导任务机表为空,则任务机A开始执行相应任务。此时,任务机A向监控机发送单机任务启动消息,由监控机向数据库服务器中写入任务机A的本次任务的启动时间点。
如果在任务机A的预设容忍时间内,前导任务机表不为空,则由任务机发出报警信号。预设容忍时间为任务机A的预设启动时间nextrim和第一预设等待时间waitoutl之和。换言之,如果nextrun+waitoutl >当前时间,前导任务机表不为空,则任务机A发出
报警信号。当任务机A执行完毕对应的任务后,向对应的后继任务机B发送任务结束通知ct_msg_t CT_J0B_D0NE。并且,向监控机发送单机任务结束消息,由监控机向数据库服务器中写入任务机A的本次任务的结束时间点和运行结果。其中,运行结果包括结果返回码和运行结果的简要描述。任务机B在接收到任务机A的任务结束通知后,向任务机A反馈响应以向任务机A通知收到任务结束通知ct_conf irm_msg_tCT_CFM_J0B_D0NE。当任务机A接收到来自任务机B的反馈响应后,则表示任务机A的成功执行对应的任务。任务机A根据任务表计算自身的下次运行时间和任务机A的前导任务机表。当任务机A未接收到来自任务机B的反馈响应时,向与任务机A和任务机B对应的报警接收模块发送报警信号。任务机B在向任务机A发送完毕任务结束通知后,从前导任务机表中删除任务机A。如果任务机B中的前导任务机表中还有其他前导任务机,则任务机B继续等待。当前导任务机表为空,且当前时间超过任务表中的任务机B的启动时间时,则任务机B开始执行对应的任务。同时任务机B向监控机发送单机任务启动消息,由监控机向数据库服务器中写入任务机B的本次任务的启动时间点。如果在任务机B的预设容忍时间内,前导任务机表不为空,则由任务机发出报警信号。预设容忍时间为任务机B的预设启动时间nextrim和第一预设等待时间waitoutl之和。换言之,如果nextrun+waitoutl >当前时间,前导任务机表不为空,则任务机B发出报警信号,通知任务机B本次运行失败,重新计算任务机B的下次运行时间和任务机B的前导任务机表。当任务机B执行完毕对应的任务后,向对应的后继任务机发送任务结束通知。并且,向监控机发送单机任务结束消息,由监控机向数据库服务器中写入任务机B的本次任务结束时间点和运行结果。其中,运行结果包括结果返回码和运行结果的简要描述。如果任务机B依赖多个任务,则任务机B的前导任务机表为依赖任务重下次运行时间在任务机B之前的多个任务。下面参考图4对监控机对任务机的监控过程进行描述。监控机可以对多个任务机的启动状态和结束状态进行监控。具体而言,在一个任务机启动相应的任务之后,向监控机发送单机任务启动消息ct_msg_t CT_J0B_START,由监控机向数据库服务器中写入任务机的本次任务的启动时间点。任务机在结束任务后,向监控机发送单机任务结束消息Ct_COnfirm_mSg_t CT_CFM_JOB_START,由监控机向数据库服务器中写入任务机的本次任务的结束时间点和运行结果,并且标记该任务机对应的任务已结束。监控机进一步对每个任务机对应的前导任务机的任务进行监控,并且判断任务机是否到达预设启动时间,以及每个任务机对应的所有前导任务机的任务是否均执行完毕。如果监控机判断某个任务机到达预设启动时间且对应的所有前导任务机的任务均执行完毕,则监控机进一步判断在第二预设等待时间wait0Ut2内是否收到该任务机发送的单机任务启动消息。如果监控机在第二预设等待时间wait0Ut2内未收到该任务机发送的单机任务启动消息,则发出报警信号。由上可知,本发明实施例提供的分布式任务调度方法具有双重报警方式,包括任务机报警和监控机报警。采用上述双重报警方式可以实时监测多个任务机在任务执行过程中出现的故障,提高任务执行效率。在本发明的一个实施例中,用户还可以通过集中式管理模块提供的友好用户界面供查看任务的当前运行状况和历史运行状况,从而便于可以实现故障的快速迁移和任务机的群组添加。在本发明的又一个实施例中,集中式管理模块可以对一个或多个任务的运行时刻进行绘图展现,从而通过图表直观的显示多个任务在时间轴上的运行关系及时间点。具体而言,根据监控机向数据库服务器中写入的任务机的任务启动时间点和任务结束时间点,绘制各个任务机对应的运行时刻。在本发明的另一个实施例中,集中式管理模块还可以对任务之间的依赖关系进行绘图展现,即通过图表形式直观的展示依赖关系表中记载的多个任务之间的依赖关系。根据本发明实施例的分布式任务调度方法,可以实现对多个任务机的集中式管理、分布调度、依赖关系的维护以及统一监控,不需要在单机上进行操作,从而提高了对多个任务机的管理和维护的效率。并且,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,通过P2P的方式进行通讯,从而可以在任务机数目和任务数目较多的情况下,实现上下游任务机之间的自动调整。此外,在任务运行失败或没有达到指定条件启动时,可以根据定义发出报警。进一步,由于对任务运行过程中涉及的数据进行统一存储和管理,从而便于后期的数据分析和挖掘,使得用户可以及时掌握各个任务机的运行状况。此外,可以将任务的运行时刻和任务间的依赖关系通过图表形式展现,从而在较少的人力投入下,通过较小的调整即能支持跨任务机的依赖关系的管理和调度。下面参考图5描述根据本发明实施例的分布式任务调度系统500。如图5所示,本发明实施例提供的分布式任务调度系统500包括数据库服务器510、任务表分发器520和多个任务机。其中,每个任务机均完全兼容UNIX-CR0ND格式。数据库服务器510用于存储任务表,其中任务表包括多个任务机中每个任务机的定位标识、每个任务机对应的任务和任务之间的依赖关系表。该依赖关系表由用户进行设定,其根据任务机的个数、性能等参数而有所更改。在本发明的一个实施例中,任务机的定位标识可以为任务机的名称和/或地址。其中,地址可以是任务机的IP地址,也可以是MAC地址。在本发明的一个实施例中,任务表存储在数据库服务器中。当然在本发明的其他实施例中,数据库服务器及任务表分发器也可为同一个装置,即数据库服务器也能够完成任务表的功能。在本发明的优选实施例中,用户可以通过互联网网页服务架构web端的集中管理模块对数据库服务器510中的任务表进行修改。集中式管理模块可以基于web架构下,利用HTML语言绘制可视化的人机交互界面,定义友好的管理菜单,从而完成对所有任务机的任务的管理。
任务表分发器520用于在检测到数据库服务器510中的任务表更改时,向多个任务机发送任务表。具体而言,数据库服务器510中任务表是会发生更改的,因此任务表分发器520还需要检测数据库服务器510中的任务表的更改,一旦检测到数据库服务器510中的任务表发生更改时,则任务表分发器510统一将更改后的任务表向所有任务机发送。在此需要说明的是,所述的“所有任务机”仅是相对于该任务而言的,并非指所有与数据库服务器相连的任务机。在本发明的一个实施例中,任务表分发器520可以通过TCP协议向多个任务机发送任务表。当然在本发明的其他实施例中,也可选择其他手段发送至多个任务机。具体而言,如果数据库服务器中的任务表发生了更改,则任务表分发器520向任务机发送指令ct_msg_t CT_UPDATE_TASKLIST,通知多个任务机数据库服务器510中的任务表发生了更改,即将发送更改后的任务表,准备接收任务表的相关信息。并且,任务表分发器520向多个任务机发送任务表Char[tasklist_size]。在本发明的一个实施例中,任务表分发器520发送任务表时可采用发送-确认机制,从而增加系统的可靠性。多个任务机在接收到任务表分发器520发送的任务表,并对任务表进行验证。在通过验证之后,多个任务机采用XML格式对任务表进行存储,并向任务表分发器520发送接收响应。其中,接收响应为 ct_confirm_msg_tCT_CFM_UPDATE_TASKLIST。由于此时在任务机中存储有旧的任务表,因此当任务表分发器520在接收到来自任务机的接收响应后,可以获知多个任务机已准备好。然后可以向多个任务机发送任务表替换指令,在本发明的一个实施例中,任务表替换指令可为ct_msg_t CT_UPDATE_TASKLIST_CONFIRM,任务表替换指令用于通知任务机利用接收到的任务表替换旧的任务表。如果任务表分发器520未接收到来自多个任务机中任一个发送的接收响应,即任务表分发器520未接收到全部任务机的接收响应,则相应的未发出接收响应的任务机失败,发出报警信号。任务机根据任务表替换指令,设置接收到的任务表为当前执行的任务表,即利用接收到的任务表替换旧的任务表,并在替换完成后,向任务表分发器发送替换完成响应响应 ct_confirm_msg_t CT_CFM_UPDATE_TASKLIST_CONFIRM。任务表分发器520接收来自任务机的替换完成响应响应,则表示任务表下发过程成功结束。如果任务表分发器520未接收到来自多个任务机中任一个发送的替换完成响应响应,即任务表分发器520未接收到全部任务机的替换完成响应响应,则相应的未发出替换完成响应响应的任务机失败,发出报警信号。在任务开始执行时,多个任务机读取以XML格式存储的文件以获取任务表,并根据任务表中的对应的任务和上述依赖关系表,确定自身是否为起始任务机。在本发明的一个实施例中,依赖关系表包括前导任务机表,用于记录与接收到任务表的任务机对应的所有前导任务机的定位标识;后继任务机表,用于记录与接收到任务表的任务机对应的所有后继任务机的定位标识。可以理解的是,前导任务机表和后继任务机表之中也可以相应地保存前导任务机和后继任务机的名称和/或地址。多个任务机根据任务表中的对应的任务和上述依赖关系表,确定自身是否为起始任务机。当某个任务机检查到存储的前导任务机表为空时,则判断自身为起始任务机。起始任务机执行任务表中该起始任务机所对应的任务。在对应的任务执行完成
12后,起始任务机根据任务表中的依赖关系表通知起始任务机的后继任务机执行相应的任务。当起始任务机执行完对应的任务后,根据依赖关系表查找起始任务机的后继任务机及从任务表中读取后继任务机的定位标识,并根据后继任务机的定位标识向后继任务机发送起始任务机的任务结束通知以使该后继任务机根据任务表执行相应的任务。其中,起始任务机的任务结束通知代表该起始任务机已经执行完成对应的任务。具体地,起始任务机根据任务表中的依赖关系表确定后继任务机的名称,接着再根据后继任务机的名称查找任务表以确定该后继任务机的地址。在本发明的一个实施例中,后继任务机在接收到起始任务机的任务结束通知后,获知起始任务机已经完成对应的任务,且向起始任务机反馈响应以向起始任务机通知收到该任务结束通知。如果起始任务机未接收到上述任务结束通知,则发出报警信号。后继任务机在执行完对应的任务后,继续根据依赖关系表通知下一个后继任务机执行相应的任务,直至依赖关系表中的任务执行完毕。具体地,下一个后继任务机在接收到来自对应的前导任务机的任务结束通知之后,从存储的任务表中的前导任务机表中删除对应的前导任务机,直至前导任务机表为空后,该任务机确定自身为起始任务机,则执行对应的任务。如图6所示,本发明实施例的分布式调度系统500进一步包括监控机530。监控机530可以对任务机的启动状态和结束状态进行监控。具体而言,在任务机启动相应的任务之后,向监控机530发送单机任务启动消息ct_msg_t CT_J0B_START,由监控机530向数据库服务器510中写入任务机的本次任务的启动时间点。任务机在结束任务后,向监控机530发送单机任务结束消息ct_conf irm_msg_t CT_CFM_JOB_START,由监控机530向数据库服务器510中写入任务机的本次任务的结束时间点和运行结果,并且标记该任务机对应的任务已结束。监控机530还用于对每个任务机对应的前导任务机的任务进行监控,并且判断任务机是否到达预设启动时间,以及每个任务机对应的所有前导任务机的任务是否均执行完毕。如果监控机530判断某个任务机到达预设启动时间且对应的所有前导任务机的任务均执行完毕,则监控机530进一步判断在第二预设等待时间wait0Ut2内是否收到该任务机发送的单机任务启动消息。如果监控机530在第二预设等待时间wait0Ut2内未收到该任务机发送的单机任务启动消息,则发出报警信号。由上可知,本发明实施例提供的分布式任务调度系统500具有双重报警方式,包括任务机报警和监控机报警。采用上述双重报警方式可以实时监测多个任务机在任务执行过程中出现的故障,提高任务执行效率。下面以两个任务机为例对任务机之间的调度过程进行描述。其中,A和B分别为两个任务机,其中A为B的前导任务机,B为A的后继任务机。首先,任务机A每隔预设时间检查任务表,查看任务机A是否可以运行。如果当前时间到达任务表中预设启动时间,并且任务机A对应的所有前导任务机的任务均执行完毕,即任务机A的前导任务机表为空,则任务机A开始执行相应任务。此时,任务机A向监控机530发送单机任务启动消息,由监控机530向数据库服务器510中写入任务机A的本次任务启动时间点。如果在任务机A的预设容忍时间内,前导任务机表不为空,则由任务机发出报警信号。预设容忍时间为任务机A的预设启动时间nextrim和第一预设等待时间waitoutl之和。换言之,如果nextrun+waitoutl >当前时间,前导任务机表不为空,则任务机A发出
报警信号。当任务机A执行完毕对应的任务后,向对应的后继任务机B发送任务结束通知ct_msg_t CT_J0B_D0NE。其中,任务结束通知ct_msg_tCT_J0B_D0NE代表任务机A执行完成对应的任务。并且,向监控机530发送单机任务结束消息,由监控机530向数据库服务器510中写入任务机A的本次任务结束时间点和运行结果。其中,运行结果包括结果返回码和运行结果的简要描述。任务机B在接收到任务机A的任务结束通知后,向任务机A反馈响应以向任务机A通知收到任务结束通知ct_conf irm_msg_tCT_CFM_J0B_D0NE。当任务机A接收到来自任务机B的反馈响应后,则表示任务机A的成功执行对应的任务。任务机A根据任务表计算自身的下次运行时间和任务机A的前导任务机表。当任务机A未接收到来自任务机B的反馈响应时,向与任务机A和任务机B对应的报警接收模块发送报警信号。任务机B在向任务机A发送完毕任务结束通知后,从前导任务机表中删除任务机A。如果任务机B中的前导任务机表中还有其他前导任务机,则任务机B继续等待。当前导任务机表为空,且当前时间超过任务表中的任务机B的启动时间时,则任务机B开始执行对应的任务。同时任务机B向监控机530发送单机任务启动消息,由监控机530向数据库服务器510中写入任务机B的本次任务启动时间点。如果在任务机B的预设容忍时间内,前导任务机表不为空,则由任务机发出报警信号。预设容忍时间为任务机B的预设启动时间nextrim和第一预设等待时间waitoutl之和。换言之,如果nextrun+waitoutl >当前时间,前导任务机表不为空,则任务机B发出报警信号,通知任务机B本次运行失败,重新计算任务机B的下次运行时间和任务机B的前导任务机表。当任务机B执行完毕对应的任务后,向对应的后继任务机发送任务结束通知。并且,向监控机530发送单机任务结束消息,由监控机530向数据库服务器510中写入任务机B的本次任务结束时间点和运行结果。其中,运行结果包括结果返回码和运行结果的简要描述。如果任务机B依赖多个任务,则任务机B的前导任务机表为依赖任务重下次运行时间在任务机B之前的多个任务。如图6所示,本发明实施例提供的分布式任务调度系统500还包括集中式管理模块Mo,用户可以通过互联网网页服务架构web端的集中管理模块对数据库服务器中的任务表进行修改。集中式管理模块540可以基于web架构下,利用HTML (Hypertext MarkupLanguage,文本标记语言)绘制可视化的人机交互界面,定义友好的管理菜单,从而完成对所有任务机的任务的管理,例如提供友好的用户界面供用户查看任务的当前运行状况和历史运行状况,从而便于可以实现故障的快速迁移和任务机的群组添加。在本发明的一个实施例中,集中式管理模块540可以对一个或多个任务的运行时刻进行绘图展现,从而通过图表直观的显示多个任务在时间轴上的运行关系及时间点。具体而言,根据监控机530向数据库服务器510中写入的任务机的任务启动时间点和任务结束时间点,绘制各个任务机对应的运行时刻。在本发明的另一个实施例中,集中式管理模块540还可以任务之间的依赖关系进行绘图展现,即通过图表形式直观的展示依赖关系表中记载的多个任务之间的依赖关系。根据本发明实施例的分布式任务调度系统,根据本发明实施例的分布式任务调度方法,可以实现对多个任务机的集中式管理、分布调度、依赖关系的维护以及统一监控,不需要在单机上进行操作,从而提高了对多个任务机的管理和维护的效率。并且,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,即通过P2P的方式进行通讯,从而可以在任务机数目和任务数目较多的情况下,实现上下游任务机之间的自动调整。此外,在任务运行失败或没有达到指定条件启动时,可以根据定义发出报警。进一步,由于对任务运行过程中涉及的数据进行统一存储和管理,从而便于后期的数据分析和挖掘,使得用户可以及时掌握各个任务机的运行状况。此外,集中式管理模块可以将任务的运行时刻和任务间的依赖关系通过图表形式展现,从而在较少的人力投入下,通过较小的调整即能支持跨任务机的依赖关系的管理和调度。下面参考图7描述根据本发明实施例的任务机700。其中,任务机700均完全兼容UNIX-CR0ND 格式。如图7所示,本发明实施例提供的任务机700包括接收单元710、存储单元720、执行单元730和发送单元740。接收单元710用于接收来自任务表分发器的任务表。其中,任务表包括多个任务机中每个任务机的定位标识、每个任务机对应的任务和任务之间的依赖关系表。依赖关系表包括前导任务机表,用于记录与接收到任务表的任务机对应的所有前导任务机的定位标识;后继任务机表,用于记录与接收到任务表的任务机对应的所有后继任务机的定位标识。该依赖关系表由用户进行设定,其根据任务机的个数、性能等参数而有所更改。在本发明的一个实施例中,任务机的定位标识可以为任务机的名称和/或地址。其中,地址可以是任务机的IP地址,也可以是MAC地址。在接收单元710接收到任务表后,由存储单元720采用XML格式对任务表进行存储。并由发送单元740向任务表分发器发送接收响应。由于在存储单元720中存储有旧的任务表,当任务表分发器在接收到来自发送单元740的接收响应后,可以获知任务机700已准备好。然后向接收单元710发送任务表替换指令。接收单元710接收到任务表替换指令后,通知存储单元720利用接收到的任务表替换旧的任务表。执行单元730用于根据存储单元720中存储的任务表中的对应的任务及依赖关系表确定任务机700是否为起始任务机。当存储单元720检查到前导任务机表为空时,则判断任务机700为起始任务机。当任务机700确定自身为起始任务机后,任务机700根据任务表执行对应的任务,并在对应的任务执行完成后,根据依赖关系表通知任务机700的后继任务机执行相应的任务。在本发明的一个实施例中,本发明实施例提供的任务机700还包括查询单元750用于每隔预设时间检查任务表以判断是否执行任务。在本发明的一个示例中,预设时间可以为1分钟。
具体而言,当查询单元750检测到当前时间为任务表中的预设启动时间且前导任务机表为空时,则向执行单元730发送启动指令,执行单元730在接收到启动指令后,执行对应的任务。具体而言,接收单元710在接收到来自对应的前导任务机的任务结束通知之后,从存储单元720存储的任务表中的前导任务机表中删除对应的前导任务机,直至前导任务机表为空后,任务机700确定自身为起始任务机。在前导任务机表为空后,执行单元730根据任务表开始执行对应的任务。执行单元730执行完对应的任务后,由查询单元750根据依赖关系表查找任务机700的后继任务机及从任务表中读取后继任务机的定位标识,并由发送单元740根据后继任务机的定位标识向后继任务机发送任务机700的任务结束通知以使该后继任务机根据任务表执行相应的任务。其中,任务机700的任务结束通知代表任务机700执行完成对应的任务。后继任务机在接收到发送单元740的任务结束通知后,向接收单元710反馈响应以向任务机700通知收到该任务结束通知。后继任务机在执行完对应的任务后,继续根据依赖关系表通知下一个后继任务机执行相应的任务,直至依赖关系表中的任务执行完毕。根据本发明实施例的任务机,任务机之间的任务调度可以不依赖中心点,而是由任务机与任务机之间进行直接联系,即通过P2P的方式进行通讯,从而可以在任务机数目和任务较多的情况下,实现上下游任务机之间的自动调整。下面参考图8描述根据本发明实施例的任务表分发器800。如图8所示,本发明实施例提供的任务表分发器800包括获取单元810和发送单元 820。获取单元810用于从数据库服务器中获取任务表。具体而言,当获取单元810检测到数据库服务器中的任务表发生变化时,获取变化后的任务表。在本发明的一个实施例中,本发明实施例的任务表分发器800还包括通知单元830。由通知单元820向任务机发送指令ct_msg_tCT_UPDATE_TASKLIST,通知数据库服务器中的任务表发生更改,即将发送任务表,准备接收任务表的相关信息。由发送单元820向所有任务机发送任务表charttasklistsize]。在此需要说明的是,所述的“所有任务机”仅是相对于该任务而言的,并非指所有与数据库服务器相连的任务机。任务表包括多个任务机中每个任务机的名称、地址、每个任务机对应的任务和任务之间的依赖关系表。依赖关系表包括前导任务机表和后继任务机表。其中,前导任务机表用于记录与接收到任务表的任务机对应的所有前导任务机的定位标识,后继任务机表用于记录与接收到任务表的任务机对应的所有后继任务机的定位标识。该依赖关系表由用户进行设定,其根据任务机的个数、性能等参数而有所更改。在本发明的一个实施例中,任务机的定位标识可以为任务机的名称和/或地址。其中,地址可以是任务机的IP地址,也可以是MAC地址。在本发明的一个实施例中,发送单元820可以通过TCP协议向多个任务机发送任务表。当然在本发明的其他实施例中,也可选择其他手段发送至多个任务机。任务机在接收到通知单元830发送的任务表并验证后,采用XML格式对任务表进行存储,并发送接收响应ct_confirm_msg_tCT_CFM_UPDATE_TASKLIST。由通知单元830向任务机发送任务表替换指令ct_msg_t CT_UPDATE_TASKLIST_CONFIRM,任务表替换指令用于通知任务机利用接收到的任务表替换旧的任务表。
在本发明的一个实施例中,本发明实施例提供给的任务表分发器800包括接收单元840,用于在接收来自任务机的替换完成响应。当接收单元840接收到来自所有任务机的替换完成响应后,则表示任务表下发过程成功结束。在本发明的一个实施例中,本发明实施例提供给的任务表分发器800包括报警单元850。如果响应接收单元840未接收到来自多个任务机中任一个发送的接收响应或替换完成响应,即响应接收单元830未接收到全部任务机的接收响应或替换完成响应,则相应的未发出接收响应的任务机失败,由报警单元850发出报警信号。根据本发明实施例的任务表分发器,可以实现对多个任务机的集中式管理、分布调度和依赖关系的维护,从而提高了对多个任务机的管理和维护的效率。本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
权利要求
1.一种分布式任务调度方法,其特征在于,包括如下步骤任务表分发器向多个任务机发送任务表,其中,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;所述多个任务机分别根据所述任务表中的所述对应的任务及所述依赖关系表确定自身是否为起始任务机;所述起始任务机根据所述任务表执行所述起始任务机所对应的任务;以及在所述对应的任务执行完成后,所述起始任务机根据所述依赖关系表通知所述起始任务机的后继任务机执行相应的任务。
2.如权利要求1所述的分布式任务调度方法,其特征在于,所述起始任务机根据依赖关系表通知起始任务机的后继任务机执行相应的任务进一步包括所述起始任务机根据所述任务表中的所述依赖关系表查找所述起始任务机的后继任务机以及从所述任务表中读取所述后继任务机的定位标识;以及所述起始任务机根据所述后继任务机的定位标识向所述后继任务机发送所述起始任务机的任务结束通知以使所述后继任务机根据所述任务表执行相应的任务。
3.如权利要求1所述的分布式任务调度方法,其特征在于,还包括在所述后继任务机对应的任务执行完成后,所述后继任务机继续根据所述依赖关系表通知下一个后继任务机执行相应的任务,直至所述依赖关系表中的任务执行完毕。
4.如权利要求1所述的分布式任务调度方法,其特征在于,还包括所述多个任务机接收来自所述任务表分发器的任务表替换指令,并根据所述任务表替换指令设置接收到的任务表为当前执行的任务表,以及向所述任务表分发器发送替换完成响应。
5.如权利要求1所述的分布式任务调度方法,其特征在于,还包括所述多个任务机在接收到所述任务表之后,分别向所述任务表分发器发送接收响应,当所述任务表分发器未接收到带来自所述多个任务机中任一个发送的所述接收响应时,所述任务表分发器发出报警信号。
6.如权利要求1所述的分布式任务调度方法,其特征在于,所述依赖关系表包括前导任务机表,用于记录与接收到所述任务表的任务机对应的所有前导任务机的定位标识;和后继任务机表,用于记录与接收到所述任务表的任务机对应的所有后继任务机的定位标识。
7.如权利要求6所述的分布式任务调度方法,其特征在于,所述任务机在所述前导任务机表为空时判断自身为起始任务机。
8.如权利要求6所述的分布式任务调度方法,其特征在于,还包括在任务机接收到来自对应的前导任务机的任务结束通知之后,所述任务机从所述前导任务机表中删除对应的前导任务机,直至所述前导任务机表为空之后所述任务机开始执行相应的任务。
9.如权利要求8所述的分布式任务调度方法,其特征在于,还包括如果在预设容忍时间内,所述前导任务机表不为空,则所述任务机发出报警信号,其中,所述预设容忍时间为所述任务机的预设启动时间和第一预设等待时间之和。
10.如权利要求1-9任一项所述的分布式任务调度方法,其特征在于,在所述任务机启动相应的任务之后,所述任务机向监控机发送单机任务启动消息,由所述监控机向数据库服务器中写入所述任务机的本次任务启动时间点,所述任务机在结束所述任务后,向所述监控机发送单机任务结束消息,由所述监控机向所述数据库服务器中写入所述任务机的本次任务结束时间点和运行结果。
11.如权利要求1-10任一项所述的分布式任务调度方法,其特征在于,还包括所述监控机对所述任务机对应的所有前导任务机的任务进行监控;所述监控机判断所述任务机是否到达预设启动时间,且所述任务机对应的所有前导任务机的任务是否均执行完毕;如果判断所述任务机到达预设启动时间,且所述任务机对应的所有前导任务机的任务均执行完毕,则所述监控机进一步判断在第二预设等待时间内是否收到所述任务机发送的所述单机任务启动消息;以及如果所述监控机在第二预设等待时间内未收到所述任务机发送的所述单机任务启动消息,则所述监控机发出报警信号。
12.—种分布式任务调度系统,其特征在于,包括数据库服务器、任务表分发器和多个任务机,其中,所述数据库服务器,用于存储任务表,其中,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;所述任务表分发器,用于向所述多个任务机发送所述任务表;所述多个任务机,用于根据所述任务表中的所述对应的任务及所述依赖关系表确定自身是否为起始任务机,并在自身为所述起始任务机时根据所述任务表执行所述起始任务机对应的任务,以及在所述对应的任务执行完成后,根据所述依赖关系表通知所述起始任务机的后继任务机执行相应的任务。
13.如权利要求12所述的分布式任务调度系统,其特征在于,所述起始任务机根据所述任务表中的所述依赖关系表查找所述起始任务机的后继任务机以及从所述任务表中读取所述后继任务机的定位标识,并根据所述后继任务机的定位标识向所述后继任务机发送所述起始任务机的任务结束通知以使所述后继任务机根据所述任务表执行相应的任务。
14.如权利要求12所述的分布式任务调度系统,其特征在于,所述后继任务机在执行完对应的任务后,所述后继任务机继续根据所述依赖关系表通知下一个后继任务机执行相应的任务,直至所述依赖关系表中的任务执行完毕。
15.如权利要求12所述的分布式任务调度系统,其特征在于,所述依赖关系表包括前导任务机表,用于记录与接收到所述任务表的任务机对应的所有前导任务机的定位标识;和后继任务机表,用于记录与接收到所述任务表的任务机对应的所有后继任务机的定位标识。
16.如权利要求12-15所述的分布式任务调度系统,其特征在于,任务机接收到来自对应的前导任务机的任务结束通知之后,所述任务机从所述前导任务机表中删除对应的前导任务机,直至所述前导任务机表为空之后所述任务机开始执行相应的任务。
17.如权利要求12-16所述的分布式任务调度系统,其特征在于,还包括监控机,用于在所述任务机启动相应的任务之后,接收来自所述任务机的单机任务启动消息,并向所述数据库服务器中写入所述任务机的本次任务启动时间点,以及在所述任务机结束所述任务后,接收来自所述任务机的单机任务结束消息,并向所述数据库服务器中写入所述当前任务机的本次任务结束时间点和运行结果。
18.如权利要求12所述的分布式任务调度系统,其特征在于,还包括集中式管理装置,用于对所述数据库服务器中存储的数据进行集中管理。
19.一种任务机,其特征在于,包括接收单元,用于接收来自任务表分发器的任务表,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表;存储单元,用于存储所述任务表;执行单元,用于根据所述任务表中的所述对应的任务及所述依赖关系表确定所述任务机是否为起始任务机,当确定所述任务机为起始任务机后,根据所述任务表执行所述起始任务机所对应的任务;以及发送单元,用于在所述执行单元任务执行完成后,根据所述依赖关系表通知所述任务机的后继任务机执行相应的任务。
20.如权利要求19所述的任务机,其特征在于,所述依赖关系表包括前导任务机表,用于记录与所述当前任务机对应的所有前导任务机的定位标识;和后继任务机表,用于记录与所述当前任务机对应的所有后继任务机的定位标识。
21.如权利要求19所述的任务机,其特征在于,还包括查询单元,用于每隔预设时间检查所述任务表以判断是否执行任务,并在所述查询单元检测到当前时间为所述任务表中的预设启动时间且所述前导任务机表为空时,向所述执行单元发送启动指令。
22.—种任务表分发器,其特征在于,包括获取单元,用于从数据库服务器中获取任务表;以及发送单元,用于向多个任务机发送任务表,其中,所述任务表包括所述多个任务机中每个任务机的定位标识、所述每个任务机对应的任务和所述任务之间的依赖关系表。
23.如权利要求22所述的任务表分发器,其特征在于,还包括通知单元,用于向所述多个任务机发送任务表替换指令以通知所述多个任务机设置接收到的任务表为当前执行的任务表。
全文摘要
本发明公开了一种分布式任务调度方法,包括如下步骤任务表分发器向多个任务机发送任务表;多个任务机分别根据任务表中的对应的任务及依赖关系表确定自身是否为起始任务机;起始任务机根据任务表执行起始任务机所对应的任务;在对应的任务执行完成后,起始任务机根据依赖关系表通知起始任务机的后继任务机执行相应的任务。本发明还公开了一种分布式任务调度系统。本发明可以实现对多个任务机的集中式管理,提高了对多个任务机的管理和维护的效率。
文档编号H04L29/08GK102387208SQ20111032476
公开日2012年3月21日 申请日期2011年10月21日 优先权日2011年10月21日
发明者余沛 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1