一种管理任务的系统的制作方法

文档序号:12120202阅读:183来源:国知局
一种管理任务的系统的制作方法与工艺

本发明涉及计算机技术领域,特别涉及一种管理任务的系统。



背景技术:

分布式是指将一个需要非常巨大的计算能力才能解决的任务分成许多小的任务项,然后把这些任务项分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

现有技术中,对于各个任务以及各个任务项的管理主要是通过用户手写代码的形式来实现。例如:当需要增加、删除、控制任务状态等操作时,用户需要分别输入增加的代码、删除的代码、相应的控制任务状态的代码。

通过上述描述可见,现有技术管理任务的方案需要通过用户手写代码来实现,比较不方便。



技术实现要素:

本发明实施例提供了一种管理任务的系统,能够更加方便地管理任务。

本发明实施例提供了一种管理任务的系统,包括:

任务调度单元、至少一个任务客户端、数据库和分配单元;

所述任务调度单元与所述数据库相连,所述至少一个任务客户端分别与所述数据库相连,所述分配单元与所述数据库相连;

所述数据库,用于保存至少一个任务,每个所述任务包括至少一个任务项;

所述任务调度单元,用于配置所述数据库中的所述至少一个任务,控制所述至少一个任务的状态;

分配单元,用于将所述数据库中的每个任务分成所述至少一个任务项,将每个任务的所述至少一个任务项分配给至少一个任务客户端;

每个所述任务客户端,用于从所述数据库中获取所述分配单元分配给本任务客户端的至少一个目标任务项,执行所述至少一个目标任务项。

进一步地,该系统进一步包括:集群;

所述集群分别与所述至少一个任务客户端相连;

每个所述任务客户端,进一步用于按照预设周期检测所述数据库中的每个任务,确定状态为“启动中”的第一任务和状态为“已启动”的第二任务,将所述第一任务注册到所述集群中,将所述数据库中的所述第一任务的状态修改为“已启动”,判断本任务客户端是否已经将所述第二任务注册到所述集群中,如果否,则将所述第二任务注册到所述集群中;

所述集群,用于对所述第一任务和所述第二任务进行监控。

进一步地,所述集群,进一步用于检测每个所述任务客户端,当检测到存在发生故障的任务客户端时,将发生故障的任务客户端对应的目标任务项分配到没有发生故障的任务客户端上;

每个所述任务客户端,进一步用于执行所述集群分配的所述目标任务项。

进一步地,所述集群与所述任务调度单元相连;

所述任务调度单元,进一步用于将所述至少一个任务注册到所述集群中;

所述集群,进一步用于根据所述任务调度单元注册的所述至少一个任务,监控所述至少一个任务。

进一步地,所述任务调度单元,在执行所述配置所述数据库中的所述至少一个任务时,用于设置所述至少一个任务的配置信息,将所述配置信息保存到所述数据库中,所述配置信息包括:任务名称、任务类型、任务的定时规则、任务的分片策略、任务描述中的一个或多个。

进一步地,所述任务调度单元,在执行所述控制所述至少一个任务的状态时,用于将所述数据库中的所述至少一个任务中的当前任务的状态修改为“启动中”,以启动所述至少一个任务中的所述当前任务。

进一步地,所述任务调度单元,在执行所述控制所述至少一个任务的状态时,用于启动当前任务,和/或,暂停当前任务,和/或,恢复当前任务,和/或,关闭当前任务。

进一步地,所述任务调度单元,进一步用于向所述数据库中增加任务,和/或,删除所述数据库中的当前任务,和/或,编辑所述数据库中的当前任务,和/或,查询所述数据库中的当前任务。

进一步地,所述任务客户端,进一步用于所述至少一个目标任务项的执行结果和/或原始日志文件保存到所述数据库中。

进一步地,所述集群包括:Zookeeper集群。

在本发明实施例中,通过数据库保存任务,通过任务调度单元配置任务和控制任务的状态,通过分配单元将每个任务划分成至少一个任务项,将任务项分配给任务客户端,通过任务客户端执行分配单元分配的任务项,本发明实施例中无需通过手写代码的方式来管理任务,实现更加方便地管理任务。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种管理任务的系统的结构示意图;

图2是本发明一实施例提供的另一种管理任务的系统的结构示意图;

图3是本发明一实施例提供的再一种管理任务的系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种管理任务的系统,包括:

任务调度单元、至少一个任务客户端、数据库和分配单元;

所述任务调度单元与所述数据库相连,所述至少一个任务客户端分别与所述数据库相连,所述分配单元与所述数据库相连;

所述数据库,用于保存至少一个任务,每个所述任务包括至少一个任务项;

所述任务调度单元,用于配置所述数据库中的所述至少一个任务,控制所述至少一个任务的状态;

分配单元,用于将所述数据库中的每个任务分成所述至少一个任务项,将每个任务的所述至少一个任务项分配给至少一个任务客户端;

每个所述任务客户端,用于从所述数据库中获取所述分配单元分配给本任务客户端的至少一个目标任务项,执行所述至少一个目标任务项。

在本发明实施例中,通过数据库保存任务,通过任务调度单元配置任务和控制任务的状态,通过分配单元将每个任务划分成至少一个任务项,将任务项分配给任务客户端,通过任务客户端执行分配单元分配的任务项,本发明实施例中无需通过手写代码的方式来管理任务,实现更加方便地管理任务。

举例来说,本发明实施例提供了一种管理任务的系统,如图1所示,包括:

任务调度单元101、三个任务客户端102、数据库103和分配单元104。

任务调度单元101与数据库103相连,三个任务客户端102分别与数据库103相连,分配单元104与数据库103相连。

在本发明一实施例中,该系统进一步包括:集群;

所述集群分别与所述至少一个任务客户端相连;

每个所述任务客户端,进一步用于按照预设周期检测所述数据库中的每个任务,确定状态为“启动中”的第一任务和状态为“已启动”的第二任务,将所述第一任务注册到所述集群中,将所述数据库中的所述第一任务的状态修改为“已启动”,判断本任务客户端是否已经将所述第二任务注册到所述集群中,如果否,则将所述第二任务注册到所述集群中;

所述集群,用于对所述第一任务和所述第二任务进行监控。

基于图1所示的一种管理任务的系统,如图2所示,该系统进一步包括:集群201。集群201分别与三个任务客户端102相连。

通过集群可以对每个注册的任务进行监控,具体地,每个任务客户端注册的任务可以满足该任务客户端需要执行的该任务的任务项,也就是,分配单元分配给该任务客户端的任务项。

在本发明实施例中,任务客户端已经注册到集群的任务不重复注册。第一任务的状态为“启动中”说明第一任务还没有被任何的任务客户端注册过。第二任务的状态为“已启动”说明第二任务已经被任务客户端注册过了。

在向集群注册任务时,可以携带本任务客户端的标识,使得集群能够根据该标识确定本任务客户端,并监控本任务客户端所注册的任务在本任务客户端上的执行情况。

任务客户端中可以包括固定频率定时器,通过该固定频率定时器来计时,进而确定是否经过预设周期的时间长度。固定频率定时器可以是Spring boot。

举例来说,任务客户端A通过固定频率定时器进行计时,举例上一次检测经过了预设周期后,检测数据库中的每个任务,经过检测发现数据库中的任务A的状态为“启动中”,任务B的状态为“已启动”;任务客户端A将任务A注册到集群中,将数据库中的任务A的状态修改为“已启动”;任务客户端A判断任务客户端A是否已经将任务B注册到集群中,如果是,则不再注册任务B,如果否,则将任务B注册到集群中。

在本发明一实施例中,所述集群,进一步用于检测每个所述任务客户端,当检测到存在发生故障的任务客户端时,将发生故障的任务客户端对应的目标任务项分配到没有发生故障的任务客户端上;

每个所述任务客户端,进一步用于执行所述集群分配的所述目标任务项。

在本发明实施例中,在存在发生故障的任务客户端时,通过集群将发生故障的任务客户端对应的目标任务项分配到没有发生故障的任务客户端上,在没有发生故障的任务客户端上执行该目标任务项,可以保证该目标任务项被顺利完成,提高了任务被顺利完成的概率。

基于图2所示的一种管理任务的系统,在本发明一实施例中,如图3所示,所述集群201与所述任务调度单元101相连;

所述任务调度单元101,进一步用于将所述至少一个任务注册到所述集群201中;

所述集群201,进一步用于根据所述任务调度单元101注册的所述至少一个任务,监控所述至少一个任务。

在本发明实施例中,通过将任务注册集群中,可以使得集群能够对数据库中的所有任务进行监控。任务调度单元在注册时,具体地,将任务的配置信息注册到集群中。

本发明实施例提供的一种管理任务的系统的工作过程包括:

数据库保存任务,任务调度单元对数据库中任务进行配置,控制任务的状态,将数据库中的任务注册到集群中。分配单元对数据库中任务划分成至少一个任务项,将任务项分配给任务客户端。任务客户端执行分配单元分配的任务项,并将分配单元分配的任务项对应任务注册到集群中。集群对数据库中任务进行监控,监控每个任务项在对应的任务客户端中的执行情况。

所述任务调度单元,在执行所述配置所述数据库中的所述至少一个任务时,用于设置所述至少一个任务的配置信息,将所述配置信息保存到所述数据库中,所述配置信息包括:任务名称、任务类型、任务的定时规则、任务的分片策略、任务描述中的一个或多个。

具体地,任务类型包括:定时任务类型和手动任务类型,其中,定时任务类型的任务到的预设时间时将被触发,手动任务类型的任务需要通过用户手动触发。任务的定时规则是指设置定时任务类型的任务中的预设时间的规则。任务的分片策略是指将任务划分成至少一个任务项的策略,分配单元可以根据该任务的分片策略将每个任务分成至少一个任务项。任务描述是指对任务的说明。

在本发明一实施例中,所述任务调度单元,在执行所述控制所述至少一个任务的状态时,用于将所述数据库中的所述至少一个任务中的当前任务的状态修改为“启动中”,以启动所述至少一个任务中的所述当前任务。

具体地,通过这些修改任务的状态的方式可以对数据库中任务进行控制,通过将任务的状态修改为“启动中”,可以开启任务。另外,任务的状态还可以包括:暂停状态、关闭状态等。

在本发明一实施例中,所述任务调度单元,在执行所述控制所述至少一个任务的状态时,用于启动当前任务,和/或,暂停当前任务,和/或,恢复当前任务,和/或,关闭当前任务。

具体地,可以通过修改任务的状态来实现。当关闭任务后,被关闭的任务将不会被执行。当启动任务后,被启动的任务是可以执行的。当暂停任务后,暂停的任务暂时无法被执行。当恢复任务后,被恢复的任务可以从暂停状态恢复到启动中的状态,或者从关闭状态恢复到暂停状态,或者从关闭状态恢复到启动中的状态。

在本发明一实施例中,所述任务调度单元,进一步用于向所述数据库中增加任务,和/或,删除所述数据库中的当前任务,和/或,编辑所述数据库中的当前任务,和/或,查询所述数据库中的当前任务。

在本发明一实施例中,任务调度单元,进一步用于监控任务,具体地,任务的运行时监控、监控任务分布到哪些任务客户端执行,以及监控任务客户端的健康状况。

在本发明一实施例中,任务调度单元,进一步用于日志审计,具体地,展示从数据库中查询出的任务执行的结果信息,以及任务执行的原始日志文件的下载、查看、删除等功能。

在本发明一实施例中,所述任务客户端,进一步用于所述至少一个目标任务项的执行结果和/或原始日志文件保存到所述数据库中。

通过本实施例可以方便任务调度单元统一查询统计任务的执行结果和原始日志文件。

在本发明一实施例中,所述集群包括:Zookeeper集群。

在本发明一实施例中,任务调度单元设置有任务调度界面,用户可以通过任务调度界面配置数据库中的任务,用户可以通过任务调度界面控制任务的状态。用户可以通过任务调度界面对数据库中的任务进行管理,能够更加方便地管理任务。

在本发明实施例中,实现通过界面进行动态增加、删除、启动、暂停、恢复、启用、禁用、关闭等对数据库中的任务的管理,避免了传统的通过脚本命令管理任务的方式存在的局限性。本发明实施例具有管理简单、统一调度、操作方便、高可用、负载均衡等特点。

在本发明一实施例中,分配单元可以通过Elastic-Job来实现。本实施例中的任务可以是分别式任务。

在本发明实施例中,可方便的通过界面动态增加任务,用户不需要关心任务是如何并行调度的,只需要关心任务客户端需要执行的业务逻辑即可。

本发明实施例继承了开源的Elastic-Job采用Zookeeper集群作为全局任务注册控制中心的优点,并解决了采用Linux Crontab命令、开源Quartz、开源的Elastic-Job定时任务框架不能便捷的通过Web界面动态的增加分布式任务、统一调度任务、监控任务、查看任务执行结果的问题。

本发明实施例通过界面实现任务的增加、删除、修改、编辑功能,避免了传统的通过脚本命令管理任务的方式存在的局限性;通过界面实现任务的统一调度(启动、暂停、恢复、关闭等操作);通过界面查看任务的状态、任务在各个任务客户端的执行情况、任务客户端的健康状况;通过界面查询任务执行结果信息,查看任务执行原始日志以及日志文件的下载;使用Zookeeper集群作为全局任务注册中心,保证了任务的高可用性。本发明实施例使得开发人员不需要关心分布式任务是如何实现的,只需要关心任务需要执行的业务逻辑,然后通过界面配置的方式就可以新建分布式任务。

本发明各个实施例至少具有如下有益效果:

1、在本发明实施例中,通过数据库保存任务,通过任务调度单元配置任务和控制任务的状态,通过分配单元将每个任务划分成至少一个任务项,将任务项分配给任务客户端,通过任务客户端执行分配单元分配的任务项,本发明实施例中无需通过手写代码的方式来管理任务,实现更加方便地管理任务。

2、在本发明实施例中,在存在发生故障的任务客户端时,通过集群将发生故障的任务客户端对应的目标任务项分配到没有发生故障的任务客户端上,在没有发生故障的任务客户端上执行该目标任务项,可以保证该目标任务项被顺利完成,提高了任务被顺利完成的概率。

3、在本发明一实施例中,任务调度单元设置有任务调度界面,用户可以通过任务调度界面配置数据库中的任务,用户可以通过任务调度界面控制任务的状态。用户可以通过任务调度界面对数据库中的任务进行管理,无需通过脚本命令管理任务,能够更加方便地管理任务。

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

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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