一种任务处理方法、装置及系统与流程

文档序号:16390231发布日期:2018-12-22 11:19阅读:91来源:国知局
一种任务处理方法、装置及系统与流程

本发明涉及计算机领域,尤其涉及一种任务处理方法、装置及系统。

背景技术

目前,包含任务的应用程序已经越来越广泛,一般可以通过集成任务调度框架来实现任务的管理;比如javaweb项目采用quartz框架来实现任务的管理,quartz框架是一个完全由java语言编写的开源的任务调度框架。

但是,quartz等任务调度框架本身只提供一些基本的api(applicationprogramminginterface,应用程序编程接口)方法,满足不了分布式任务的要求;而现实中,由于分布式任务对于应用的高效性、可靠性都有保障,因此存在较多的分布式任务的需求,需要使得任务调度框架能满足分布式任务的要求。



技术实现要素:

本发明实施例提供了一种任务处理方法、装置及系统,对于集成任务调度框架的应用可以实现分布式任务管理。

本发明实施例采用如下技术方案:

一种任务处理方法,包括:

周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

当申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

可选地,所述任务信息还包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述运行第一任务后还包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

可选地,所述的任务处理方法还包括:

当新增任务时,将所述任务对应的任务信息添加到所述预定的任务表中。

一种任务处理方法,应用于包括多个节点的系统;所述任务处理方法包括:

所述多个节点分别周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

所述多个节点分别根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

当所述多个节点中的第一节点申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

可选地,所述任务信息还包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述运行第一任务后还包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

可选地,所述的任务处理方法还包括:

当所述多个节点中的第二节点新增任务时,所述第二节点将所述任务对应的任务信息添加到所述预定的任务表中。

一种任务处理装置,包括:

存储器和处理器;

所述存储器用于保存进行任务处理的程序;所述进行任务处理的程序在被所述处理器读取执行时,进行如下操作:

周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

当申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

可选地,所述任务信息还包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述进行任务处理的程序在被处理器读取执行时还进行如下操作:

运行第一任务后,在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

可选地,所述进行任务处理的程序在被处理器读取执行时还进行如下操作:

当新增任务时,将所述任务对应的任务信息添加到所述预定的任务表中。

一种任务处理系统,包括数据库设备和多个节点;其中,所述多个节点中都设置有上述的任一任务处理装置;

所述数据库设备用于保存和维护所述预定的任务表。

本发明至少一个实施例对于集成任务调度框架的应用可以实现分布式任务管理。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例一的任务处理方法的流程图;

图2为本发明实施例二的任务处理方法的流程图;

图3为本发明实施例三的任务处理装置的示意图;

图4为本发明实施例四的任务处理系统的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

实施例一、一种任务处理方法,如图1所示,包括:

s110、周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

s120、根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

s130、当申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

本实施例可以实现分布式任务管理,并且能保证同一任务在某一调度时间只在一个节点上运行。

一种实施方式中,可以由已集成任务调度框架、且安装在节点上的app(应用)来执行本实施例的任务处理方法;比如某个节点安装了一个集成quartz框架的第一app,则第一app可以执行上述步骤。

本实施方式中,第一app可以将所获取的任务信息加载到quartz管理器中;此时每个安装有第一app的节点都可以加载到相同的任务信息,也都能申请任务表中各任务的调度权限;一旦某个节点上的第一app获取到某个任务的调度权限后,会将该任务对应的任务信息加锁,此时其它安装有第一app的节点将无法申请该任务的调度权限,无法调度该任务。

本实施方式中,节点可以是手机、个人电脑、服务器等计算设备。

一种实施方式中,预定的任务表可以在系统部署时就建立。预定的任务表可以保存在数据库中,由数据库进行维护;该数据库可以单点部署,也可以多点部署;当多点部署时,多个任务表需要进行同步。

一种实施方式中,所述任务信息还可以包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁可以包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述运行第一任务后还可以包括:在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

本实施方式中,任务锁的初始值可以是用于指示任务信息未加锁的值。

其它实施方式中,也可以通过将相应任务信息设置为不可访问等方式,将任务信息加锁;加锁的方式可以自行设计。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的加锁和解锁(即:将任务锁的值修改为用于指示任务信息未加锁的值)。

一种实施方式中,所述方法还可以包括:

当新增任务时,将所述任务对应的任务信息添加到所述预定的任务表中。

本实施方式的一种备选方案中,当节点上的app新建任务后,可以将包含该任务的任务调度信息的任务信息发送给相应数据库,由数据库管理系统在该条任务信息中增加任务锁,并将该条任务信息添加到任务表中;当然,任务锁也可以由节点上的app和任务调度信息一并发送给数据库。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的添加,节点上的app只告知数据库管理系统新建了任务以及任务的调度时间。

实施例二、一种任务处理方法,应用于包括多个节点的系统;如图2所示,所述任务处理方法包括:

s210、所述多个节点分别周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

s220、所述多个节点分别根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

s230、当所述多个节点中的第一节点申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

本实施例可以实现分布式任务管理,并且能保证同一任务在某一调度时间只在一个节点上运行。

一种实施方式中,节点可以是手机、个人电脑、服务器等计算设备;所述多个节点可以是都安装了同一种已集成任务调度框架的app的计算设备。

一种实施方式中,可以由已集成任务调度框架、且安装在节点上的app(应用)来执行本实施例中节点的操作;比如某个节点安装了一个集成quartz框架的第一app,则第一app可以执行本实施例中上述步骤里节点的操作。

本实施方式中,第一app可以将所获取的任务信息加载到quartz管理器中;此时每个安装有第一app的节点都可以加载到相同的任务信息,也都能申请任务表中各任务的调度权限;一旦某个节点上的第一app获取到某个任务的调度权限后,会将该任务对应的任务信息加锁,此时其它安装有第一app的节点将无法申请该任务的调度权限,无法调度该任务。

一种实施方式中,预定的任务表可以在所述系统部署时就建立。预定的任务表可以保存在数据库中,由数据库进行维护;该数据库可以单点部署,也可以多点部署;当多点部署时,多个任务表需要进行同步。

一种实施方式中,所述任务信息还可以包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁可以包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述运行第一任务后还可以包括:在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

本实施方式中,任务锁的初始值可以是用于指示任务信息未加锁的值。

其它实施方式中,也可以通过将相应任务信息设置为不可访问等方式,将任务信息加锁;加锁的方式可以自行设计。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的加锁和解锁(即:将任务锁的值修改为用于指示任务信息未加锁的值)。

一种实施方式中,所述方法还可以包括:

当所述多个节点中的第二节点新增任务时,所述第二节点将所述任务对应的任务信息添加到所述预定的任务表中。

其中,上述第一节点、第二节点只为了区分说明不同场景使用,并不对节点本身构成限制;第一节点和第二节点均可以是所说多个节点中的任一个。

本实施方式的一种备选方案中,当节点上的app新建任务后,可以将包含该任务的任务调度信息的任务信息发送给相应数据库,由数据库管理系统在该条任务信息中增加任务锁,并将该条任务信息添加到任务表中;当然,任务锁也可以由节点上的app和任务调度信息一并发送给数据库。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的添加,节点上的app只告知数据库管理系统新建了任务以及任务的调度时间。

实施例三、一种任务处理装置,如图3所示,包括:

存储器31和处理器32;

所述存储器31用于保存进行任务处理的程序;所述进行任务处理的程序在被所述处理器32读取执行时,进行如下操作:

周期性获取预定的任务表中的任务信息;其中,所述任务信息包括所对应的任务的调度时间信息;

根据所获取的任务信息里的调度时间信息,申请相应任务的调度权限;其中,对于加锁的任务信息所对应的任务无法申请到调度权限;

当申请到第一任务的调度权限后,在所述预定的任务表中,对所述第一任务对应的任务信息加锁,运行所述第一任务。

本实施例中,所述任务处理装置可以设置在节点中;所述进行任务处理的程序可以封装在集成了任务调度框架、安装在节点上的app里。

一种实施方式中,所述任务信息还可以包括:

任务锁;所述任务锁的值包括用于指示任务信息已加锁的值,和用于指示任务信息未加锁的值;

所述对第一任务对应的任务信息加锁可以包括:

在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息已加锁的值;

所述进行任务处理的程序在被处理器读取执行时还可以进行如下操作:

运行第一任务后,在所述第一任务对应的任务信息中,将任务锁的值修改为用于指示任务信息未加锁的值。

本实施方式中,任务锁的初始值可以是用于指示任务信息未加锁的值。

其它实施方式中,也可以通过将相应任务信息设置为不可访问等方式,将任务信息加锁;加锁的方式可以自行设计。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的加锁和解锁(即:将任务锁的值修改为用于指示任务信息未加锁的值)。

一种实施方式中,所述进行任务处理的程序在被处理器读取执行时还可以进行如下操作:

当新增任务时,将所述任务对应的任务信息添加到所述预定的任务表中。

其它实施方式中,也可以统一由数据库管理系统来进行任务信息的添加,任务处理装置只告知数据库管理系统新建了任务以及任务的调度时间。

其它实施细节可参见实施例一。

实施例四,一种任务处理系统,包括数据库设备和多个节点;其中,所述多个节点中都设置有实施例三所述的任务处理装置;

所述数据库设备用于保存和维护所述预定的任务表。

一种实施方式中,任务处理系统的示意图如图4所示,将任务信息通过数据库中的任务表进行维护,节点1,……,m,……,n当新增任务时,告知数据库,并定时从数据库获取任务信息。

节点调度任务时,如果任务对应的任务信息已加锁则无法申请调度权限;如果未加锁,则一个节点一旦申请到一个任务的调度权限后,就对该任务对应的任务信息加锁,并运行该任务;运行后对该任务对应的任务信息解锁。任务的调度通过任务锁机制来实现同一任务同一调度时刻只被一个节点调度。

一种实施方式中,节点中安装的app里集成有任务调度框架,比如quartz框架,并通过数据库对任务信息的维护及任务锁机制从而形成了quartz框架的分布式任务解决方案,可以提高app的高可靠性,高效性。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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