发明内容
本发明的目的是提供一种任务调度的方法、装置和系统,以解决现有技术中为了将任务调度到指定的任务服务器,降低了系统的处理能力的问题。
本发明实施例中的一种调度任务的方法,应用于包含两台以上任务服务器的应用系统,包括:
在数据库服务器中保存该任务的数据并保存任务与有权限执行该任务的任务服务器的对应关系;
任务服务器根据所述对应关系执行自身有权限执行的任务。
本发明实施例中的一种任务服务器,用于从数据库服务器中获取任务的数据以及执行任务,包括:
确认模块,用于根据预设的任务与有权限执行该任务的任务服务器的对应关系确认一项任务服务器有权限执行的任务;
获取模块,用于从数据库服务器中获取确认模块确认的任务的数据;
执行模块,用于根据获取模块获取的数据执行任务。
本发明实施例中的又一种任务服务器,用于从数据库服务器中获取任务的数据以及执行任务,包括:
获取模块,用于从数据库服务器中获取任务的数据;
设置模块,用于设置获取模块获取的任务的数据在数据库服务器中的属性为不可读;
判断模块,用于在获取模块获取任务的数据后,根据预设的任务与有权限执行该任务的任务服务器的对应关系判断任务服务器是否有权限执行该任务;
执行模块,用于执行任务服务器有权限执行的任务;
所述获取模块进一步用于当判断模块判断任务服务器没有权限执行获取的任务,则不重复地从数据库服务器中获取其他任务的数据;
所述设置模块进一步用于当判断模块判断任务服务器没有权限执行获取的任务,则设置该任务的数据在数据库服务器中的属性为可读。
本发明实施例中的一种应用服务器,包括:
任务数据生成模块,用于生成任务的数据;
权限设置模块,用于对于每项任务,在应用系统中选择有权限执行该任务的任务服务器,保存任务与有权限执行该任务的任务服务器的信息。
本发明实施例中的一种调度任务的系统,包括:
应用服务器,用于生成每项任务的数据和任务与有权限执行该任务的任务服务器的对应关系;
数据库服务器,用于保存应用服务器生成的所述数据和对应关系;
任务服务器,用于根据所述对应关系执行自身有权限执行的任务。
应用本发明实施例给出的技术方案,通过引入权限机制,建立了任务与有权限执行该任务的任务服务器的对应关系,对每项任务规定有权限执行该任务的任务服务器,任务服务器根据自身权限执行任务,从而确保任务能够被调度到指定的任务服务器而执行,并且不会降低系统原有的处理能力。
具体实施方式
为了使任务由指定的任务服务器执行并且无需停止其他任务服务器的服务,在本发明实施例中,对于图1所示的应用系统,根据图2所示的步骤处理任务:
步骤S21:应用服务器生成任务的数据并保存在数据库服务器中,并且在数据库服务器中保存该任务和有权限执行该任务的任务服务器的对应关系。该对应关系在本发明实施例中保存在如表1所示的调度列表中。
在本步骤中,应用服务器对生成的每项任务,都设定了一个或几个任务服务器有权限执行该任务,也可以设定应用系统中所有任务服务器有权限执行该任务。表1每一行包含任务名称与有权限执行该任务的服务器的名称。这里使用任务名称来标识每项任务,也可以用任务的其他信息如生成任务的数据时给出的流水号。这里使用任务服务器的名称来标识每项任务服务器,也可以用任务服务器的其他信息,如任务服务器的编号或硬件标识信息。
任务1 |
R1,R2 |
任务2 |
R2 |
任务3 |
/ |
任务4 |
R3 |
表1
对于表1中第1列记录任务名,第2列记录有权限执行第1列所示任务的应用服务器的名称。每行第2列涉及的应用服务器可以是一台,也可以是多台;也可以是应用系统中所有任务服务器,如表1第2列第3行所示。
步骤S22:任务服务器根据所述对应关系执行自身有权限执行的任务。
在本发明实施例中对任务服务器设定执行任务的权限,使得任务能够被预先指定的一台或多台任务服务器执行。步骤S22是应用系统中每台开启的任务服务器在运行时执行的步骤,它们必须根据设定的权限来执行任务,步骤S22具体可以有两种方式,下面分别对步骤S22包含的具体步骤进行说明。
步骤S22的一种执行方式如下:
任务服务器根据调度列表查找自身有权限执行的任务。例如任务服务器R2,它从调度列表中查得自身有权限执行任务1、2和3,于是随机地获取其中一项任务的数据,然后执行该任务。在获取到任务的数据之后还可以删除数据库服务器中该任务的数据,以免其他任务服务器执行了该任务,造成重复执行的逻辑错误。
在这种方式下,任务服务器在获取任务数据之前,先确认了哪些任务是自身有权限执行的,然后再有目的地获取这些任务的数据。这种方式适用于每台任务服务器有权限执行的任务在数据库服务器中占有比例较小的情况,保证了任务服务器每次能够有效地获取任务数据,节省了获取到自身没有权限的任务而需要的获取操作所占时间。
另外,任务服务器也可以先获取任务的数据,再来判断自身是否有权限执行,即步骤S22还可以按照如下的方式执行:
任务服务器从数据库服务器中每次获取一项任务的数据,这里的获取可以是随机地获取任务的数据,然后设置数据库服务器中该任务的数据的属性为不可读,以免其他任务服务器获取该任务的数据,再根据调度列表判断自身是否有权限执行该任务,若是,则执行该任务,否则设置数据库服务器中该任务的数据的属性为可读,以及从数据库服务器中获取其他任务的数据,该其他任务应当是任务服务器没有获取过的任务。这种方式适用于数据库服务器中仅有较少数量的任务需要指定的任务服务器来执行,在获取到任务的数据之后根据该任务能够快速地在任务列表中找到有权限执行该任务的任务服务器,并在自身有权限执行任务的情况下立即执行任务。
在步骤S22中任务服务器获取并执行了有权限执行的任务,接下来进行步骤S23。
步骤S23:任务服务器在执行任务之后,删除数据库服务器中该任务的数据。在本步骤中任务服务器在执行任务之后可根据需要修改所述对应关系。因为任务已经被执行,所以为了避免重复执行的逻辑错误发生,此时可以在数据库服务器中删除任务的数据,还可以在所述调度列表中删除该任务和执行该任务的任务服务器的对应关系,这样同时能够释放数据库服务器的存储空间。
在本发明实施例的方法中,任务服务器在执行任务之前对自身的权限进行了判断,若有权限则执行任务,反之则放弃执行,这样能够保证任务被调度到有权限的任务服务器。
另外本发明实施例中的方法适用于包含有两台以上任务服务器的应用系统。因为若该系统中只包含一台任务服务器,则所有任务都应当由该任务服务器来完成,不存在调度任务的问题。
基于上述方法,下面说明本发明实施例中相应的装置。本发明实施例给出的调度任务的系统由应用服务器、数据库服务器以及任务服务器组成。应用服务器用于生成每项任务的数据和任务与有权限执行该任务的任务服务器的对应关系。数据库服务器用于保存应用服务器生成的任务的数据和任务与有权限执行该任务的任务服务器的对应关系。每台任务服务器用于根据任务与有权限执行该任务的任务服务器的对应关系执行自身有权限执行的任务。
应用服务器的一种结构是包括任务数据生成模块和权限设置模块。
任务数据生成模块用于生成任务的数据。权限设置模块用于保存任务与有权限执行该任务的任务服务器的对应关系。
任务服务器的一种结构是包括确认模块、获取模块和执行模块。
确认模块用于根据预设的任务与有权限执行该任务的任务服务器的对应关系确认一项任务服务器有权限执行的任务;获取模块用于从数据库服务器中获取确认模块确认的任务的数据;执行模块用于根据获取模块获取的数据执行任务。
此外任务服务器还可以包括删除模块,用于在获取模块获取到任务的数据之后,删除数据库服务器中该任务的数据。
任务服务器的另一种结构是包括获取模块、设置模块、判断模块和执行模块。
获取模块用于从数据库服务器中获取任务的数据。设置模块用于设置获取模块获取的任务的数据在数据库服务器中的属性为不可读。判断模块用于在获取模块获取任务的数据后,根据预设的任务与有权限执行该任务的任务服务器的对应关系判断任务服务器是否有权限执行该任务。执行模块用于执行任务服务器有权限执行的任务。获取模块进一步用于当判断模块判断任务服务器没有权限执行获取的任务,则不重复地从数据库服务器中获取其他任务的数据。设置模块进一步用于当判断模块判断任务服务器没有权限执行获取的任务,则设置该任务的数据在数据库服务器中的属性为可读。
此外任务服务器还可以包括删除模块,用于在获取模块获取到任务的数据之后,删除数据库服务器中该任务的数据。
应用本发明实施例给出的技术方案,通过引入权限机制,建立了任务与有权限执行该任务的任务服务器的对应关系,对每项任务规定了有权限执行该任务的任务服务器,从而确保任务能够被调度到指定的任务服务器而执行。此外因为应用本发明实施例给出的技术方案,在需要保证任务被指定任务服务器执行时,并不需要关闭任何任务服务器,所以本发明实施例中的技术方案也不会影响系统原有的任务处理能力。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。