本发明涉及任务调度,具体地,涉及动态分片的自适应任务调度方法和系统。
背景技术:
1、专利文献cn104899099a提供一种基于线程池的任务分配方法,其包括:步骤一,创建线程池和任务池;步骤二,预先确定一数量值n,初始化n个线程并将所述线程顺序存储至所述线程池列队中;步骤三,接收任务后遍历所述线程池,若所述线程池中有空闲线程时,则从所述线程池中顺序调取所述空闲线程并执行所述任务;若所述线程池中无空闲线程时,则将所述任务顺次存储至所述任务池的列队中。
2、但是专利文献cn104899099a没有解决大规模任务有可能长期占用资源,导致小规模任务阻塞的问题。
技术实现思路
1、针对现有技术中的缺陷,本发明的目的是提供一种动态分片的自适应任务调度方法和系统。
2、根据本发明提供的一种动态分片的自适应任务调度方法,包括:
3、步骤s1:令调度线程从任务表中,取新任务放入任务池;
4、步骤s2:遍历任务池获取每个任务的任务分片,并提交到任务执行线程池;
5、步骤s3:令任务执行线程池中的执行线程执行任务分片。
6、优选地,在任务池中,将任务分解划分为多个任务分片,每个任务分片对应一个独立的子任务,以任务分片作为任务调度执行的基本单元;任务分片的大小根据未投递人数、到期时间、优先级的任务属性动态调整;任务未投递人数越多,到期时间越短,任务优先级越高的任务,则任务分片越大。
7、优选地,所述步骤s1包括如下步骤:
8、步骤s1.1:从数据库任务表获取待发送状态的任务列表;
9、步骤s1.2:遍历任务列表,对于当前的任务,更新任务的节点编号,若更新失败,则遍历下一个任务,若更新成功,则触发步骤s1.3;
10、步骤s1.3:若任务池满,则新任务与任务池中的任务一起排序,剔除最低优先级、到期时间最长或者剩余人数最多的任务;若任务池未满,则新任务入池;
11、所述步骤s2包括如下步骤:
12、步骤s2.1:遍历任务池,若任务状态为已完成,则将该任务从任务池中剔除,否则触发步骤s2.2;
13、步骤s2.2:获取当前任务分片,任务分片人数规模len由到期时间t ime、未投递人数num、任务优先级系数p以及任务分片容量上限cap和下限base确定,公式如下:
14、
15、步骤s2.3:提交任务分片到任务执行线程池;
16、所述步骤s3包括如下步骤:
17、步骤s3.1:执行投递流程;
18、步骤s3.2:更新任务已投递人数;
19、步骤s3.3:若任务已投递人数等于总人数,则更新任务状态为已发送。
20、优选地,任务调度和执行在节点上运行,通过定时更新节点的状态,若节点发现其他节点状态异常,则会拉起异常节点的任务执行,从而实现故障转移;在任务分片执行完成后,会保存任务执行进度,保证任务断点续跑;通过竞争承担任务,如果节点承担的任务越多,那么节点的调度周期越长,相应地竞争的间隔周期也越长,承接新任务就越少。
21、根据本发明提供的一种动态分片的自适应任务调度系统,包括:
22、模块m1:令调度线程从任务表中,取新任务放入任务池;
23、模块m2:遍历任务池获取每个任务的任务分片,并提交到任务执行线程池;
24、模块m3:令任务执行线程池中的执行线程执行任务分片。
25、优选地,在任务池中,将任务分解划分为多个任务分片,每个任务分片对应一个独立的子任务,以任务分片作为任务调度执行的基本单元;任务分片的大小根据未投递人数、到期时间、优先级的任务属性动态调整;任务未投递人数越多,到期时间越短,任务优先级越高的任务,则任务分片越大。
26、优选地,所述模块m1包括:
27、模块m1.1:从数据库任务表获取待发送状态的任务列表;
28、模块m1.2:遍历任务列表,对于当前的任务,更新任务的节点编号,若更新失败,则遍历下一个任务,若更新成功,则触发模块m1.3;
29、模块m1.3:若任务池满,则新任务与任务池中的任务一起排序,剔除最低优先级、到期时间最长或者剩余人数最多的任务;若任务池未满,则新任务入池;
30、所述模块m2包括:
31、模块m2.1:遍历任务池,若任务状态为已完成,则将该任务从任务池中剔除,否则触发模块m2.2;
32、模块m2.2:获取当前任务分片,任务分片人数规模len由到期时间t ime、未投递人数num、任务优先级系数p以及任务分片容量上限cap和下限base确定,公式如下:
33、
34、模块m2.3:提交任务分片到任务执行线程池;
35、所述模块m3包括:
36、模块m3.1:执行投递流程;
37、模块m3.2:更新任务已投递人数;
38、模块m3.3:若任务已投递人数等于总人数,则更新任务状态为已发送。
39、优选地,任务调度和执行在节点上运行,通过定时更新节点的状态,若节点发现其他节点状态异常,则会拉起异常节点的任务执行,从而实现故障转移;在任务分片执行完成后,会保存任务执行进度,保证任务断点续跑;通过竞争承担任务,如果节点承担的任务越多,那么节点的调度周期越长,相应地竞争的间隔周期也越长,承接新任务就越少。
40、根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现所述的动态分片的自适应任务调度方法的步骤。
41、根据本发明提供的一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现所述的动态分片的自适应任务调度方法的步骤。
42、与现有技术相比,本发明具有如下的有益效果:
43、1、本发明通过采用任务动态分片的方式,从而解决了任务调度过程中的公平性、时效性和优先级问题,同时支持任务断点续跑、故障转移、负载均衡和动态扩容。
44、2、本发明通过任务分片抹平了任务规模上的差异,使得不同规模的任务都有机会调度到;任务未投递人数越多,到期时间越短,任务优先级越高的任务,则任务分片越大,从而满足任务的时效性和优先级。
45、3、本发明的调度方法通过竞争承担任务,如果节点承担的任务越多,那么节点的调度周期越长,相应地竞争的间隔周期也越长,承接新任务就越少,从而各节点可以起到负载均衡的效果。
1.一种动态分片的自适应任务调度方法,其特征在于,包括:
2.根据权利要求1所述的动态分片的自适应任务调度方法,其特征在于,在任务池中,将任务分解划分为多个任务分片,每个任务分片对应一个独立的子任务,以任务分片作为任务调度执行的基本单元;任务分片的大小根据未投递人数、到期时间、优先级的任务属性动态调整;任务未投递人数越多,到期时间越短,任务优先级越高的任务,则任务分片越大。
3.根据权利要求1所述的动态分片的自适应任务调度方法,其特征在于,所述步骤s1包括如下步骤:
4.根据权利要求1所述的动态分片的自适应任务调度方法,其特征在于,任务调度和执行在节点上运行,通过定时更新节点的状态,若节点发现其他节点状态异常,则会拉起异常节点的任务执行,从而实现故障转移;在任务分片执行完成后,会保存任务执行进度,保证任务断点续跑;通过竞争承担任务,如果节点承担的任务越多,那么节点的调度周期越长,相应地竞争的间隔周期也越长,承接新任务就越少。
5.一种动态分片的自适应任务调度系统,其特征在于,包括:
6.根据权利要求5所述的动态分片的自适应任务调度系统,其特征在于,在任务池中,将任务分解划分为多个任务分片,每个任务分片对应一个独立的子任务,以任务分片作为任务调度执行的基本单元;任务分片的大小根据未投递人数、到期时间、优先级的任务属性动态调整;任务未投递人数越多,到期时间越短,任务优先级越高的任务,则任务分片越大。
7.根据权利要求5所述的动态分片的自适应任务调度系统,其特征在于,所述模块m1包括:
8.根据权利要求5所述的动态分片的自适应任务调度系统,其特征在于,任务调度和执行在节点上运行,通过定时更新节点的状态,若节点发现其他节点状态异常,则会拉起异常节点的任务执行,从而实现故障转移;在任务分片执行完成后,会保存任务执行进度,保证任务断点续跑;通过竞争承担任务,如果节点承担的任务越多,那么节点的调度周期越长,相应地竞争的间隔周期也越长,承接新任务就越少。
9.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的动态分片的自适应任务调度方法的步骤。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的动态分片的自适应任务调度方法的步骤。