一种群集部署环境中任务调度方法及装置
技术领域
本发明涉及数据处理领域,更具体的涉及一种集群部署环境中任务调度方法及装置。
背景技术
随着近些年信息化的加快,Web应用得到大量的部署,但是随着用户量的增大,在单服务器上部署的web应用很难适应大并发的用户访问,于是web应用的集群部署得到的大量的普及。集群环境下部署web应用,除了能够有效缓解服务器压力,同时,还具有另一个显而易见的优点,那就是避免了单点故障:通常***工程师会通过负载均衡技术将实际的用户导向集群中的某一台服务器,当这台服务器宕机之后,负载均衡器会将用户重新导向另外一台存活的服务器,继续保持通信服务。
虽然集群部署越来越普及,但是也存在一些问题,比如,当程序研发人员开发一个web应用的时候,往往会因为业务需要而在应用内部运行一些定时任务。含有定时任务的web应用在一台服务上做单机部署的时候是没有问题的,但是一旦放到集群环境中进行部署,由于web应用部署了多份,导致原本只需要在一个web应用中运行的任务会在多个web应用中被重复执行。并且由于高度并发可能会带来一些数据处理的异常。
综上所述,现有技术中存在集群部署导致任务重复执行或者并发执行的问题。
发明内容
本发明实施例提供一种群集部署环境中任务调度方法及装置,用以解决现有技术中存在集群部署导致任务重复执行或者并发执行的问题。
本发明实施例提供一种群集部署环境中任务调度方法,包括:
任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;
所述任务控制器根据所述任务查询请求,查询所述任务控制器中第一任务信息;其中,所述第一任务信息为所述任务控制器对各web应用的待执行任务注册信息调控后的任务信息;
所述任务控制器根据所述查询结果,确定是否允许执行所述当前待执行任务。
进一步地,所述任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求之前,还包括:
所述任务控制器接收所述各Web应用通过所述任务控制接口发送的所述待执行任务注册信息,并对所述待执行任务注册信息进行筛选,将筛选后所述待执行任务注册信息存储到所述第一任务信息中;
其中,所述待执行任务注册信息中至少携带有Web应用的机器物理地址、Web应用的IP地址和任务标识。
进一步地,所述任务控制器对接收的所述待执行任务注册信息进行筛选,具体为:
所述任务控制器依据所述待执行任务注册信息确定各待执行任务的属性信息,所述属性信息至少包括不可替代、可替代、可删除。
所述任务控制器对所述待执行任务注册信息调控,包括:
所述任务控制器接收的多个Web应用发送的所述待执行任务,从所述待执行任务查找相同的所述待执行任务;
将满足设定条件的相同的所述待执行任务合并为第一待执行任务;
对所述第一待执行任务设置第一任务调度表达式。
进一步地,所述任务控制器根据查询结果,确定是否允许执行所述当前待执行任务,具体为:
所述任务查询请求中携带有所述Web应用的机器物理地址、所述Web应用的IP地址和所述当前待执行任务的任务标识;
所述任务控制器根据所述当前待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址查询所述第一任务信息;
若确定所述第一任务信息中存在于所述待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址相匹配的任务信息,则允许执行所述当前待执行任务。
进一步地,所述允许执行所述当前待执行任务,包括:
若所述当前待执行任务为第一待执行任务,则按照第一任务调度表达式调度所述当前待执行任务。
进一步地,所述待执行任务注册信息还包括任务执行策略;
所述任务控制器接收任务调度修改请求,根据所述任务调度修改请求修改所述第一任务信息中对应任务的任务执行策略,以使所述对应任务执行修改后的任务执行策略。
本发明实施例还提供一种群集部署环境中任务调度装置,包括:
接收模块:用于接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;
查询模块:用于根据所述任务查询请求,查询所述任务控制器中第一任务信息;其中,所述第一任务信息为所述任务控制器对各web应用的待执行任务注册信息调控后的任务信息;
确定模块:用于根据所述查询结果,确定是否允许执行所述当前待执行任务。
进一步地,所述接收模块还用于:
接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求之前,
接收所述各Web应用通过所述任务控制接口发送的所述待执行任务注册信息,并对所述待执行任务注册信息进行筛选,将筛选后所述待执行任务注册信息存储到所述第一任务信息中;
其中,所述待执行任务注册信息中至少携带有Web应用的机器物理地址、Web应用的IP地址和任务标识。
进一步地,所述接收模块具体用于:
依据所述待执行任务注册信息确定各待执行任务的属性信息,所述属性信息至少包括不可替代、可替代、可删除。
所述任务控制器对所述待执行任务注册信息调控,包括:
所述任务控制器接收的多个Web应用发送的所述待执行任务,从所述待执行任务查找相同的所述待执行任务;
将满足设定条件的相同的所述待执行任务合并为第一待执行任务;
对所述第一待执行任务设置第一任务调度表达式。
进一步地,所述确定模块具体用于:
所述任务查询请求中携带有所述Web应用的机器物理地址、所述Web应用的IP地址和所述当前待执行任务的任务标识;
所述任务控制器根据所述当前待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址查询所述第一任务信息;
若确定所述第一任务信息中存在于所述待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址相匹配的任务信息,则允许执行所述当前待执行任务。
进一步地,所述确定模块具体用于:
若所述当前待执行任务为第一待执行任务,则按照第一任务调度表达式调度所述当前待执行任务。
进一步地,所述接收模块还用于:
接收任务调度修改请求,根据所述任务调度修改请求修改所述第一任务信息中对应任务的任务执行策略,以使所述对应任务执行修改后的任务执行策略。
本发明实施例中任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;所述任务控制器根据所述任务查询请求,查询所述任务控制器中第一任务信息;其中,所述第一任务信息为所述任务控制器对各web应用的待执行任务注册信息调控后的任务信息;所述任务控制器根据所述查询结果,确定是否允许执行所述当前待执行任务。上述实施例中,任务控制器可以分别和群集部署环境中各个Web应用进行通信,对各个Web应用的待执行任务注册信息进行调控,从而可以避免多个Web应用注册的相同的待执行任务会在多个Web应用中被重复执行。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种群集部署环境中任务调度方法流程示意图;
图2为本发明实施例提供的一种群集部署环境中任务调度装置结构图。
具体实施方式
本发明实施例任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;所述任务控制器根据所述任务查询请求,查询所述任务控制器中已注册任务信息;所述任务控制器根据所述任务查询请求的查询结果确定是否允许执行当前待执行任务和/或是否使用更新任务表达式调度当前待执行任务。上述实施例中,任务控制器可以分别和集群部署中的各个Web应用进行通信,并且可以协调各个Web应用,采用该方法,可以避免集群部署只需要在一个Web应用中运行的任何会在多个Web中被重复执行,并且避免集群部署导致认为并发执行。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种群集部署环境中任务调度方法及装置,用以解决现有技术中存在集群部署导致任务重复执行或者并发执行的问题。
参见图1,为本发明实施例提供的一种群集部署环境中任务调度方法流程示意图,该方法主要包括以下步骤:
步骤101,任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;
步骤102,所述任务控制器根据所述任务查询请求,查询所述任务控制器中第一任务信息;其中,所述第一任务信息为所述任务控制器对各web应用的待执行任务注册信息调控后的任务信息;
步骤103,所述任务控制器根据所述查询结果,确定是否允许执行所述当前待执行任务。
在步骤101中,任务控制器分别与各个Web应用连通,并且进行单独通信,通过与各个Web应用之间的单独通信。其中,任务控制接口包括注册任务接口和查询任务接口。
当Web应用通过控制接口发送当前待执行任务的任务查询请求之前,任务控制器还需要接收各个Web应用通过任务控制接口发送的待执行任务注册信息,其中,各个Web应用通过任务控制接口发送的待执行任务注册信息中至少携带有Web应用的机器物理地址、Web应用的IP地址和任务标识。
任务控制器对待执行任务注册信息进行筛选,然后将筛选后的待执行任务注册信息存储到任务控制器的一个列表中,而且可以将存储筛选后的待执行任务注册信息命名为第一任务信息,本发明实施例中对存储筛选后的待执行任务注册信息命名不做进一步的限定。
其中,各个Web应用通过任务控制接口发送的待执行任务注册信息可以如表1所示:
应用名称 |
待执行任务名称 |
Web应用1 |
待执行任务A |
Web应用1 |
待执行任务B |
Web应用1 |
待执行任务C |
Web应用2 |
待执行任务A |
Web应用2 |
待执行任务C |
Web应用2 |
待执行任务D |
Web应用3 |
待执行任务C |
Web应用3 |
待执行任务E |
Web应用4 |
待执行任务A |
表1注册信息列表
如表1所示,其中有4个Web应用通过任务控制接口发送的待执行任务注册信息,Web应用1总共发送了A、B和C三个待执行任务;Web应用2总共发送了A、C和D三个待执行任务;Web应用3总共发送了C和E两个待执行任务;Web应用4只共发送了一个待执行任务A。
由于Web应用1中待执行任务A、Web应用2中待执行任务A和Web应用4中待执行任务A是相同的待执行任务,所以任务控制器会将这三个Web应用发送的相同的待执行任务A进行筛选,只选择某一个Web应用执行一个待执行任务A,并且由于同时注册的有三个待执行任务A,因此可以将某一个Web应用执行的一个待执行任务A的属性信息设置为可替代。相应地,Web应用1中待执行任务C、Web应用2中待执行任务C和Web应用3中待执行任务C,任务控制器也可以选择某一个Web应用执行一个待执行任务C,并且将某一个Web应用执行的一个待执行任务C的属性信息设置为可替代。
由于三个Web应用中,只有Web应用1中有待执行任务B,而其它两个Web应用中都没有待执行任务B,因此可以确定任务控制器中只有一个待执行任务B,所以,任务控制器会将Web应用1中待执行任务B的属性信息设置为不可替代;相应地,由于三个Web应用中,只有Web应用3中有待执行任务E,而其它两个Web应用中都没有待执行任务E,因此可以确定任务控制器中只有一个待执行任务E,所以,任务控制器会将Web应用3中待执行任务E的属性信息设置为不可替代。
任务控制器度4个Web应用通过任务控制接口发送的待执行任务注册信息进行筛选后,可以得到各个待执行任务的属性信息,其中,属性信息列表如表2所示:
应用名称 |
待执行任务名称 |
属性信息 |
Web应用1 |
待执行任务A |
可替代 |
Web应用1 |
待执行任务B |
不可替代 |
Web应用1 |
待执行任务C |
可替代 |
Web应用2 |
待执行任务A |
可替代 |
Web应用2 |
待执行任务C |
可替代 |
Web应用2 |
待执行任务D |
不可替代 |
Web应用3 |
待执行任务C |
可替代 |
Web应用3 |
待执行任务E |
不可替代 |
Web应用4 |
待执行任务A |
可替代 |
表2待执行任务属性信息列表
其中,待执行任务的属性信息还可以包括可删除信息,只要是注册的待执行任务都有可能是可删除信息。本发明实施例对可删除不做具体的限定。
进一步地,任务控制器接收的多个Web应用发送的所述待执行任务,从待执行任务查找相同的所述待执行任务,将满足设定条件的相同的待执行任务合并为第一待执行任务。比如,Web应用1中的待执行任务A为Web应用1必须执行的自检待执行任务,Web应用2中的待执行任务A为Web应用2必须执行的自检待执行任务,Web应用4中的待执行任务A为Web应用4必须执行的自检待执行任务,所以Web应用1中的待执行任务A、Web应用2中待执行任务A和Web应用4中待执行任务A为不满足设定条件的相同的待执行任务,所以任务控制器不会将Web应用1中的待执行任务A、Web应用2中待执行任务A和Web应用4中待执行任务A合并为第一待执行任务;再比如,Web应用1中的待执行任务C不是Web应用1中必须执行的自检待执行任务,Web应用2中的待执行任务C不是Web应用2必须执行的自检待执行任务,Web应用3中的待执行任务C不是Web应用3必须执行的自检待执行任务,所以Web应用1中的待执行任务C、Web应用2中待执行任务C和Web应用3中待执行任务C满足设定条件的相同的待执行任务,所以任务控制器将Web应用1中的待执行任务C、Web应用2中待执行任务C和Web应用3中待执行任务C合并为第一待执行任务。
由于Web应用在将待执行任务进行注册时候,每个待执行任务都有设置好的任务调度表达式,当任务控制器将三个Web应用发送的3个相同的待执行任务合并为第一待执行任务之后,若任务控制器依然按照注册信息中设置好的任务调度表达式来调度者3个相同的待执行任务,则会出现重复执行的问题。
在本发明实施例中,任务控制器将满足设定条件的相同的待执行任务合并为第一待执行任务之后,对第一待执行任务设置第一任务调度表达式,并且将设定的第一任务调度表达式替代待执行任务进行注册是设置好的任务调度表达式。以表1为例,任务控制器将满足设定条件的相同的待执行任务合并为第一待执行任务,并且将第一待执行任务设置为第一任务调度表达式之后的第一任务信息如表3所示:
应用名称 |
待执行任务名称 |
属性信息 |
调控信息 |
Web应用1 |
待执行任务A |
可替代 |
|
Web应用1 |
待执行任务B |
不可替代 |
|
Web应用1 |
待执行任务C |
可替代 |
第一待执行任务 |
Web应用2 |
待执行任务A |
可替代 |
|
Web应用2 |
待执行任务D |
不可替代 |
|
Web应用3 |
待执行任务E |
不可替代 |
|
Web应用4 |
待执行任务A |
可替代 |
|
表3第一任务信息
在本发明实施例中,所述待执行任务注册信息还包括任务执行策略,其中,任务执行策略主要包括对注册的待执行任务设置按照注册时设置好的任务调度表达式进行调度注册的待执行任务,或者按照任务调度修改请求,对注册的待执行任务设置修改的任务调度表达式进行调度注册的待执行任务。其中,任务执行策略主要是根据任务控制器的调控,对选定的待执行任务修改任务调度表达式。
任务控制器对任务执行策略的修改主要包括:当任务控制器收到任务控制器对外接口发送的任务调度修改请求,根据该任务调度修改请求修改任务控制器中存储的第一任务信息中对应的任务的任务执行策略,从而,修改了任务执行策略的待执行任务会根据修改后的任务执行策略进行任务调度。比如,第一任务信息中Web应用1、待执行任务B对应的任务执行策略为“1.5****ls”其中,“1.5****ls”表示指定每小时的第5分钟执行一次任务;当任务控制器收到任务控制器对外接口发送的“Web应用1、待执行任务B、1.8****ls”则任务控制器需要根据接收到的消息,将第一任务信息中的Web应用1、待执行任务B对应的“1.5****ls”修改为“1.8****ls”,即Web应用1中待执行任务B从指定的每小时的第5分钟执行一次任务修改为每小时的第8分钟执行一次任务。本发明实施例中,任务调度修改请求可以包括第一任务信息中属性信息,也可以包括第一任务信息中的调度表达式,本发明实施例对任务调度修改请求的类型不做具体的限定。
其中,本发明实施例中涉及的调度表达式可以按照以下设定方式确定:
比如,将Minute设置为1,将Hour设置为2,将Day设置为3,将Month设置为4,将Dayof Week设置为5。其中,Minute表示每个小时的第几分钟执行该任务,Hour表示每天的第几个小时执行该任务,Day表示每月的第几天执行该任务,Month表示每年的第几个月执行该任务,Day of Week表示每周的第几天执行该任务。
若任务调度表达式为:“1.1****ls”,则根据每个字母的含义,可以确定该任务调度表达式的含义为:指定每小时的第1分钟执行一次任务。
若任务调度表达式为:“1.30 5***ls”则根据每个字母的含义,可以确定该任务调度表达式的含义为:指定每天的5:30执行任务。
若任务调度表达式为:“1.30 7 8**ls”则根据每个字母的含义,可以确定该任务调度表达式的含义为:指定每月8号的7:30分执行任务。
若任务调度表达式为:“1.30 5 8 6*ls”则根据每个字母的含义,可以确定该任务调度表达式的含义为:指定每年的6月8日5:30执行任务。
若任务调度表达式为:“1.30 6**0 ls”则根据每个字母的含义,可以确定该任务调度表达式的含义为:指定每星期日的6:30执行任务。
在步骤102中,任务控制器根据任务查询请求,查询任务控制器中第一任务信息。
其中,Web应用在向任务查询接口发送待执行任务查询请求中,会携带有Web应用的机器物理地址、Web应用的IP地址和当前待执行任务的任务标识。
任务控制器根据Web应用通过任务查询接口发送的Web应用的机器物理地址、Web应用的IP地址和当前待执行任务的任务标识,从任务控制器的存储的的第一任务信息列表中查找是否有与Web应用发送的Web应用的机器物理地址、Web应用的IP地址和当前待执行任务的任务标识相匹配的信息。
在步骤103中,任务控制器根据当前Web应用发送的Web应用的机器物理地址、Web应用的IP地址和当前待执行任务的任务标识,查询任务控制器存储的第一任务信息列表,查询结果包括存在相匹配的代执行任务,或者不存在相匹配的待执行任务。若存在相匹配的待执行任务,则表示允许执行该待执行任务;若不存在相匹配的待执行任务,则表示不允许执行该待执行任务。
在本发明实施例中,由于Web应用通过任务控制接口发送的当前待执行任务的任务已经被任务控制器进行过筛选和调控,即便是Web应用发送的Web应用的机器物理地址、Web应用的IP地址和当前待执行任务的任务标识和任务控制器中存储的第一任务信息中相匹配,在执行待执行任务的时候,还要进一步的确认,与第一任务信息中相匹配的待执行任务是否为第一待执行任务。
若所述待执行任务为第一待执行任务,则按照第一任务调度表达式调度当前待执行任务。
若所述待执行任务不是第一待执行任务,则按照该待执行任务注册是设置的任务调度表达式调度当前待执行任务。
在本发明实施例中,还包括:若任务控制器确定第一任务信息中的待执行任务对应的Web应用没有向任务控制器发送待执行任务查询请求,则任务控制器会确定该Web应用宕机了,任务控制器会根据自身存储的第一任务信息中的内容,先确定宕机了的Web应用对应的待执行任务是否为可替代任务,比如,任务控制器确定需要执行表3在的Web应用1的待执行任务C,但是没有收到Web应用1发送的待执行任务C的任务查询请求,则任务控制器会根据表3中确定待执行任务C的属性信息,若根据属性信息确定待执行任务C为可替代任务,则任务控制器从Web应用2、Web应用3和Web应用4中选择与Web应用1类型相同的类型来执行待执行任务C。在比如,任务控制器确定需要执行表3在的Web应用1的待执行任务B,但是没有收到Web应用1发送的待执行任务B的任务查询请求,则任务控制器会根据表3中确定待执行任务C的属性信息,若根据属性信息确定待执行任务B为不可替代任务,则任务控制器不会从Web应用2、Web应用3和Web应用4中选择与Web应用1类型相同的类型来执行待执行任务B。本发明实施例中,对确定具有相同类型的Web应用的方法不做具体的限定。
本发明实施例任务控制器接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;所述任务控制器根据所述任务查询请求,查询所述任务控制器中已注册任务信息;所述任务控制器根据所述任务查询请求的查询结果确定是否允许执行当前待执行任务和/或是否使用更新任务表达式调度当前待执行任务。上述实施例中,任务控制器可以分别和集群部署中的各个Web应用进行通信,并且可以协调各个Web应用,采用该方法,可以避免集群部署只需要在一个Web应用中运行的任何会在多个Web中被重复执行,并且避免集群部署导致认为并发执行。
基于同一发明构思,本发明实施例还提供了一种群集部署环境中任务调度装置,该装置的详细内容可以参见方法部分,在此不再重复介绍。
如图2所述,一种群集部署环境中任务调度装置主要包括:接收模块21、查询模块22和确定模块23。接收模块21:用于接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求;
查询模块22:用于根据所述任务查询请求,查询所述任务控制器中第一任务信息;其中,所述第一任务信息为所述任务控制器对各web应用的待执行任务注册信息调控后的任务信息;
确定模块23:用于根据所述查询结果,确定是否允许执行所述当前待执行任务。
进一步地,所述接收模块21还用于:
接收Web应用通过任务控制接口发送的当前待执行任务的任务查询请求之前,
接收所述各Web应用通过所述任务控制接口发送的所述待执行任务注册信息,并对所述待执行任务注册信息进行筛选,将筛选后所述待执行任务注册信息存储到所述第一任务信息中;
其中,所述待执行任务注册信息中至少携带有Web应用的机器物理地址、Web应用的IP地址和任务标识。
进一步地,所述接收模块21具体用于:
依据所述待执行任务注册信息确定各待执行任务的属性信息,所述属性信息至少包括不可替代、可替代、可删除。
所述任务控制器对所述待执行任务注册信息调控,包括:
所述任务控制器接收的多个Web应用发送的所述待执行任务,从所述待执行任务查找相同的所述待执行任务;
将满足设定条件的相同的所述待执行任务合并为第一待执行任务;
对所述第一待执行任务设置第一任务调度表达式。
进一步地,所述确定模块23具体用于:
所述任务查询请求中携带有所述Web应用的机器物理地址、所述Web应用的IP地址和所述当前待执行任务的任务标识;
所述任务控制器根据所述当前待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址查询所述第一任务信息;
若确定所述第一任务信息中存在于所述待执行任务的任务标识、所述Web应用的机器物理地址和所述Web应用的IP地址相匹配的任务信息,则允许执行所述当前待执行任务。
进一步地,所述确定模块23具体用于:
若所述当前待执行任务为第一待执行任务,则按照第一任务调度表达式调度所述当前待执行任务。
进一步地,所述接收模块21还用于:
接收任务调度修改请求,根据所述任务调度修改请求修改所述第一任务信息中对应任务的任务执行策略,以使所述对应任务执行修改后的任务执行策略。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。