1.本发明涉及信息技术领域,尤其涉及一种任务调度方法及装置。
背景技术:2.用户在使用计算机的过程中会产生大量的任务数据,在分布式系统中,这些任务数据一般会由系统中的多个任务处理节点进行处理,由于任务数据数量较多且节点的数量与处理资源有限,为了使任务处理节点能够高效的执行任务,需要通过任务调度去合理安排任务数据的执行顺序。
3.目前,任务调度在对任务数据处理时,一般采用队列形式的调度模型,该调度模型使每个任务处理节点都对应一个队列,按照队列中任务数据的排序执行任务,当不同的队列排序的任务数据数量存在差异时,为了保证任务处理节点的高吞吐量,该调度模型会在不同的队列之间调度任务数据使每个队列中均存在待执行的任务数据,以提高任务数据的处理效率。
4.但是,目前队列形式的调度模型在调度任务时,为了保持高吞吐量的执行效果,容易出现将同一来源的任务数据调度至同一个队列中,而一旦该队列所对应的任务处理节点故障,将严重影响该来源任务数据的处理进度,由此可见,对于任务调度除了对处理效率的需求外,还需要兼顾对不同来源任务的调度离散化,以确保系统总体的任务执行进度。因此,对于现有的任务调度系统存在任务调度离散化与高效处理间无法兼顾的情况。
技术实现要素:5.鉴于上述问题,本发明提供一种任务调度方法及装置,主要目的是为了同时保证任务调度的充分离散化与高吞吐量。
6.为解决上述技术问题,本发明提出以下方案:
7.第一方面,本发明提供了一种任务调度方法,该方法包括:
8.获取多个任务数据集合,每个任务数据集合中含有至少一个任务;
9.利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;
10.根据预设周期提取目标时间轮分片中的任务并添加至执行队列;
11.从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。
12.优选地,所述获取多个任务数据集合,每个任务数据集合中含有至少一个任务,包括:
13.获取多个任务,所述多个任务归属于多个不同的预设维度;
14.按照预设维度划分所获取的多个任务,将同一维度的任务组成对应的任务数据集合,得到多个任务数据集合;
15.按照指定时间顺序对每个所述任务数据集合中的任务进行排序。
16.优选地,在利用时间轮与动态缓存分配所述任务的执行批次之前,所述方法还包括:
17.根据所述任务数据集合的数量确定所述时间轮中时间分片中存储任务的数量;
18.根据处理资源确定所述时间分片的数量与所述预设周期。
19.优选地,所述利用时间轮与动态缓存分配所述任务的执行批次,包括:
20.从各任务数据集合中分别提取至少一个任务添加至所述时间轮的一个时间分片中;
21.在所述时间轮中的所有时间分片均存储有任务时,判断所述任务数据集合中是否存在未储存的任务;
22.若存在,则将所述未储存的任务存入所述动态缓存。
23.优选地,将所述未储存的任务存入所述动态缓存,还包括:
24.在所述动态缓存中创建与所述任务数据集合对应的队列;
25.将所述未储存的任务存入其所属任务数据集合对应的队列中。
26.优选地,所述从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中,包括:
27.在所述目标时间轮分片中的任务被提取后,判断所述动态缓存中是否存在任务;
28.若存在,则从存储任务的各队列中分别提取指定数量的任务存入所述目标时间轮分片中。
29.优选地,所述方法还包括:
30.根据存入动态缓存的任务数量确定所述动态缓存的存储空间;
31.在从动态缓存中提取任务后,调整所述动态缓存的存储空间。
32.第二方面,本发明还提供了一种任务调度的装置,该装置包括:
33.获取单元,用于获取多个任务数据集合,每个任务数据集合中含有至少一个任务;
34.分配单元,用于利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;
35.提取单元,用于根据预设周期提取目标时间轮分片中的任务并添加至执行队列;
36.储存单元,用于从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。
37.优选地,所述获取单元,包括:
38.获取模块,用于获取多个任务,所述多个任务归属于多个不同的预设维度;
39.集合模块,用于按照预设维度划分所获取的多个任务,将同一维度的任务组成对应的任务数据集合,得到多个任务数据集合;
40.排序模块,用于按照指定时间顺序对每个所述任务数据集合中的任务进行排序。
41.优选地,所述装置还包括:
42.第一确定单元,用于根据所述任务数据集合的数量确定所述时间轮中时间分片中存储任务的数量;
43.第二确定单元,用于根据处理资源确定所述时间分片的数量与所述预设周期。
44.优选地,所述分配单元,包括:
45.提取模块,用于从各任务数据集合中分别提取至少一个任务添加至所述时间轮的一个时间分片中;
46.检测模块,用于在所述时间轮中的所有时间分片均存储有任务时,判断所述任务数据集合中是否存在未储存的任务;
47.储存模块,用于若所述任务数据集合中存在未储存的任务,则将所述未储存的任务存入所述动态缓存。
48.优选地,所述储存模块,还包括:
49.创建子模块,用于在所述动态缓存中创建与所述任务数据集合对应的队列;
50.储存子模块,用于将所述未储存的任务存入其所属任务数据集合对应的队列中。
51.优选地,所述储存单元,包括:
52.检测模块,用于在所述目标时间轮分片中的任务被提取后,判断所述动态缓存中是否存在任务;
53.储存模块,用于若所述动态缓存中存在任务,则从存储任务的各队列中分别提取指定数量的任务存入所述目标时间轮分片中。
54.优选地,所述装置还包括:
55.第三确定单元,用于根据存入动态缓存的任务数量确定所述动态缓存的存储空间;
56.调整单元,用于在从动态缓存中提取任务后,调整所述动态缓存的存储空间。
57.为了实现上述目的,根据本发明的第三方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述所述任务调度的方法。
58.为了实现上述目的,根据本发明的第四方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述任务调度方法。
59.借由上述技术方案,本发明提供的任务调度方法及装置,通过利用时间轮与动态缓存分配不同任务数据集合中任务数据,限定同一批任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务;再根据预设周期提取目标时间轮分片中的任务并添加至执行队列进行任务的执行,如此可以将至少两个任务数据集合中同维度的任务分散到时间轮的不同时间分片中,实现了将同一数据集合的任务放进时间轮中进行打散,使得任务数据高度离散在各个时间分片中,保证任务调度高度离散化,且调度周期可自定义;同时,本发明通过动态缓存将从时间轮溢出的任务进行保存,使得本发明在一个时间分片中的任务被提取后,能够从动态缓存中选取指定数量的任务并存入该时间轮分片中,如此可以及时补充任务到已空的时间分片中,保证时间轮运转的高效性。
60.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
61.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明
的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
62.图1示出了本发明实施例提供的一种任务调度方法流程图;
63.图2示出了本发明实施例提供的另一种任务调度方法流程图;
64.图3示出了本发明实施例提供的一种任务调度的组成框图;
65.图4示出了本发明实施例提供的另一种任务调度的组成框图。
具体实施方式
66.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
67.本发明实施例是应用在海量任务高频调度的场景下,该场景中高频调度形成的原因是在分布式系统中由于任务数据的数量较大,需要将任务数据调度到不同的任务数据处理节点去执行该任务,因此就会出现按照一定规则以队列的形式进行前后排序的任务队列,并且每个任务数据处理节点对应一个该任务队列,该任务数据处理节点按照任务数据排列的先后顺序进行执行任务,由于不同的任务数据节点处理的任务数据不同,那么,不同的任务数据处理的用时不同,就会出现某个任务数据处理节点出现空档的状态,导致处理效率低下,基于此种情况,就需要频繁的调度不同队列之间的任务数据来避免上述问题,因此形成一个海量任务高频调度的场景。
68.在上述海量任务高频调度的场景中,目前采用队列形式的调度模型进行任务调度,为了保持对海量任务处理的高吞吐量,容易出现将同一来源的任务数据调度至同一个队列中,无法保证对不同来源任务的调度离散化,而一旦该队列所对应的任务处理节点故障,将严重影响该来源任务数据的处理进度,因此,如何实现任务调度离散化与高效处理的同时兼顾是目前需要解决的问题。针对此问题,发明人想到利用时间轮与动态缓存进行任务的离散分配与高效处理。为此,本发明实施例提供了一种任务调度方法,通过该方法实现同时兼顾了任务调度离散化与高效处理,其具体执行步骤如图1所示,包括:
69.101、获取多个任务数据集合。
70.其中,每个任务数据集合中含有至少一个任务,每个任务数据集合为具有相同维度的数据集合。所述任务数据集合的数量等于不同维度的数量,所述维度可以为账号、id等,每个任务数据集合中的任务排序可以是按照产生的时间先后顺序进行排序,也可以是任务执行的先后顺序排列,对此本实施例不进行具体限定。
71.举例说明:以ip为维度,任务产生的先后顺序排序举例,分别为ip1任务数据集合,ip2任务数据集合和ip3任务数据集合,所述ip1任务数据集合包括ltem1、ltem2、ltem3;所述ip2任务数据集合包括ltem4、ltem5、ltem6;所述ip3任务数据集合包括ltem7、ltem8、ltem9;其中,所述ltem1、所述ltem2和所述ltem3均来自ip1,并且任务产生的先后顺序为ltem1、ltem2、ltem3;所述ltem4、所述ltem5和所述ltem6均来自ip2,并且任务产生的先后顺序为ltem4、ltem5、ltem6;所述ltem7、所述ltem8和所述ltem9均来自ip3,并且任务产生的先后顺序为ltem7、ltem8、ltem9。
72.102、利用时间轮与动态缓存分配任务的执行批次。
73.其中,同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务。
74.所述时间轮是一个存储任务数据的调度模型,数据结构由哈希表与链表组成。相比传统的队列形式的调度模型来说,所述时间轮是一个高效的延迟队列,能够批量高效的管理各种延时任务、周期任务、定时任务,将具有相同维度的任务数据依次打散放入各个时间分片中。所述动态缓存是存储任务数据集的哈希表,所述哈希表的容量是随系统运行动态变化的。
75.本步骤是将101步骤获取的多个任务数据集合中的任务数据分别按照先后顺序依次放入时间轮的时间分片中,每一个时间分片中包括至少两个任务数据集合的任务,来自同一个任务数据集合中的任务可以为一个或多个。其中,至少两个任务数据集合是指在同一个时间分片中要含有两个或者两个以上任务数据集合的任务,以避免处理该时间分片中的任务时过于集中处理某一个维度的任务。也就是说,同一个时间分片中的任务要选择多个任务数据集合,但不要求含有每个任务数据集合中的任务。
76.若时间轮中的时间分片都已经放满,任务数据集合还有未分配的任务数据则将所述任务数据放入动态缓存中进行储存,在所述动态缓存中根据不同的维度形成相应的不同队列。
77.举例说明:时间轮中的时间分片为6片,分别为时间分片slot1、时间分片slot2、时间分片slot3、时间分片slot4、时间分片slot5、时间分片slot6;任务数据集合为2个,分别为数据集合1和数据集合2,所述数据集合1包括ltem1、ltem2、ltem3、ltem4、ltem5、ltem6、ltem7、ltem8、ltem9;所述数据集合2包括tem10、ltem11、ltem12、ltem13、ltem14、ltem15、ltem16、ltem17、ltem18。将数据集合1中的ltem1和数据集合2中的tem10同时放入时间分片slot1中;再将数据集合1中的ltem2和数据集合2中的tem11同时放入时间分片slot2中,以此类推,最后将数据集合1中的ltem6和数据集合2中的tem15同时放入时间分片slot6中,此时,时间轮中的时间分片已经全部分配有任务数据,将所述数据集合1中剩余的ltem7、ltem8、ltem9和所述数据集合2中剩余的ltem16、ltem17、ltem18放入动态缓存中进行缓存,在动态缓存中形成两个队列,队列1对应数据集合1,包括的任务数据按顺序为ltem7、ltem8、ltem9;队列2对应数据集合2,包括的任务数据按顺序为ltem16、ltem17、ltem18。
78.103、根据预设周期提取目标时间轮分片中的任务并添加至执行队列。
79.其中,所述预设周期可以根据时间轮分片中任务数据的数量和处理所述任务数据的服务器性能进行设置,预设周期可以为1s、3s等,具体本实施例不具体限定。
80.所述目标时间轮分片经102步骤已经存入了任务数据,根据预先设置的周期随机或顺序读取时间轮的一个时间分片,将该时间分片中的所有任务数据都添加至执行队列中,由执行队列处理这些任务。
81.104、从动态缓存中选取指定数量的任务并存入目标时间轮分片中。
82.本步骤是利用动态缓存为时间轮补充待执行的任务,以确保任务调度的高效性,需要说明的是,本实施例中,动态缓存的应用是在时间轮无法全部保存任务的情况下,基于多出的任务数量而请求的缓存空间,而在时间轮的存储性能充足时,也可不应用动态缓存。
83.其中,所述指定数量是根据时间轮中时间分片所可容纳任务数据的数量而定。所述指定数量可以是不超过所述时间分片可容纳任务数据的数量。所述时间分片可容纳任务
数据的数量不少于任务数据集合的数量。
84.当时间轮的一个时间分片已经将其存储的任务数据释放后,该时间分片为空,此时,动态缓存将选取不超过时间分片中可容纳任务数据的数量的任务数据放入所述时间分片中。
85.基于上述图1实施例的实现方式可以看出,本发明提供一种任务调度方法,对于在分布式系统中,由于任务数据数量较多且节点的数量与处理资源有限,需要通过任务调度去合理安排任务数据的执行顺序,然而,目前队列形式的调度模型在调度任务时,容易出现将同一来源的任务数据调度至同一个队列中,这样调度任务会产生无法兼顾任务调度离散化与高效处理间的情况,严重影响该来源任务数据的处理进度,本发明通过获取多个不同维度的任务数据集合,且任务数据集合中的任务数据按照一定的顺序排列,为后续的任务数据的分配进行准备;再利用时间轮与动态缓存分配不同维度的任务数据集合中任务数据,限定同一批任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,实现了将调度任务放进时间轮中进行打散,使得任务数据高度离散在各个时间分片中,保证任务调度高度离散化,并且将溢出的任务数据存入动态缓存中,可以及时补充时间轮分片,以便于保证任务数据处理的高效性。再根据预设周期提取目标时间轮分片中的任务并添加至执行队列进行任务的执行,从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中,如此可以自定义调度周期,并且实现了任务调度的高效处理。
86.进一步的,作为对图1所示实施例的细化及扩展,本发明实施例还提供了另一种任务调度方法,如图2所示,其具体步骤如下:
87.201、获取多个任务数据集合。
88.本实施例中,所述任务数据集合是按照预设维度划分所获取的多个任务,将同一维度的任务组成对应的任务数据集合,以得到多个任务数据集合;所述预设维度可以为地址、账号等,具体本实施例不进行限定。并且按照指定时间顺序对每个所述任务数据集合中的任务进行排序。所述时间顺序是任务产生的时间顺序。
89.举例说明:以ip“1.1.1.1”举例,由ip“1.1.1.1”产生的任务数据集合在一起形成任务数据集合1,其内容如下所示:
90.[0091][0092]
其中,所述list表示任务数据集合中的任务数据以列表的形式储存;每一个任务数据包括ip地址和domain范围,所述ip地址均为相同的“1.1.1.1”表示所述任务数据集合中的任务数据均来自同一个ip地址,即同一纬度;所述domain范围“a.cdn.cn”、“b.cdn.cn”和“c.cdn.cn”均是所述ip“1.1.1.1”所产生的任务数据,任务数据产生的先后顺序为“a.cdn.cn”、“b.cdn.cn”、“c.cdn.cn”。
[0093]
本步骤中,需要先获取归属于多个不同预设维度的多个任务,之后再按照预设维度划分所获取的多个任务,可以将同一维度的任务组成对应的任务数据集合,进而获得多个不同维度的任务数据集合,并且按照指定时间顺序对所述任务数据集合中的任务进行排序,为后续的任务数据的分配做准备。
[0094]
202、根据任务数据集合的数量确定时间轮中时间分片中存储任务的数量;根据处理资源确定时间分片的数量与预设周期。
[0095]
本步骤是对时间轮进行配置,具体包括对时间轮中的时间分片数量以及处理不同分片中任务的时间间隔。在一个时间分片处理周期中,由于任务数据集合的数量是不确定的,为了保证每个任务数据集合中任务数据在时间轮中能够充分离散,因此需要时间分片中的容量是随着任务数据集合数量的变化而动态变化,因此,本发明采用根据任务数据集合的数量确定时间轮中时间分片中存储任务的数量;所述时间分片中储存任务的数量不少于所述任务数据集合的数量,一般为任务数据集合数量的整倍数。
[0096]
举例说明:任务数据集合的数量为10个,所述时间轮的时间分片可设置为可容纳10个任务数据(每个任务数据集合取1个任务),也可设置为可容纳20个任务数据(每个任务数据集合取2个任务)。
[0097]
此外,所述时间分片数量是根据时间轮所在设备的处理资源而确定的;所述处理资源可以是时间轮可调用的系统缓存空间;所述时间轮可用的储存空间越多,则时间轮可容纳任务数据数量越多;在时间分片中所存储的任务数量一定时,就可以设置更多数量的时间分片。
[0098]
举例说明:时间轮可调用的处理资源可容纳100个任务数据,当所述时间轮的每个时间分片可容纳10个任务数据时,所述时间轮的时间分片数量为不超过10个;当所述时间轮的每个时间分片为可容纳20个任务数据,所述时间轮的时间分片数量为不超过5个。
[0099]
所述预设周期是指读取两个时间分片中任务数据所间隔的时间,该预设周期同样可以根据设备的处理资源而定,处理资源越多,执行一个时间分片中任务数据的速度越快,如此就可以间隔更短的时间读取下一个时间分片中的任务数据。
[0100]
举例说明:执行队列中同一批任务数据为2个,执行所需的时间分别为2s和3s,则执行队列执行这两个同批次的任务数据所需的执行时间共计5s;所述预设周期则可设定为≥5s。如果预设周期的时长过短,将导致读取任务过多,使得执行队列中的任务积压。
[0101]
203、利用时间轮与动态缓存分配任务的执行批次。
[0102]
与102步骤相同的内容,在此不进行赘述。
[0103]
其中,从201步骤获得的各任务数据集合中分别提取至少一个任务添加至202步骤设定的所述时间轮的一个时间分片中;在所述时间轮中的所有时间分片均存储有任务时,判断所述任务数据集合中是否存在未储存的任务;若存在,则将所述未储存的任务存入所述动态缓存。将任务数据写入时间轮的流程步骤具体如下所示:
[0104]
开始:
[0105]
步骤1:获取多个任务数据集合;
[0106]
步骤2:获取时间轮的时间分片数量与当前维度在时间轮的写指针,计算可存储容量;
[0107]
步骤3:将步骤1的多个任务数据集合中的任务数据存入时间轮,本是实施例有两种具体存入方式:
[0108]
第一种方式是从不同的任务数据集合分别提取n个任务数据存入时间轮写指针指向的时间分片中(所述时间分片可容纳任务数据数量是任务数据集合数量的n倍),此时,该时间分片写满,写指针索引加一,写指针按照顺时针或逆时针方向转动指向下一个时间分片,继续从不同的任务数据集合分别提取n个任务数据存入时间轮写指针指向的时间分片中,按照上述添加方式将不同的任务数据集合中其余任务数据依次放入时间轮的时间分片中直至时间轮的每个时间分片均装满,若任务数据数量超过时间轮可存储容量,且检测还有剩余任务数据未放入时间分片中,则执行步骤4,否则执行步骤5;
[0109]
第二种方式是从不同的任务数据集合分别提取一个任务数据存入时间轮写指针指向的时间分片中,此时,该时间分片未写满,写指针索引加一,写指针按照顺时针或逆时针方向转动指向下一个时间分片,继续从不同的任务数据集合分别提取一个任务数据存入时间轮写指针指向的时间分片中,按照上述添加方式将不同的任务数据集合中其余任务数据依次放入时间轮的时间分片中直至时间轮分片无法在写入任务数据,若任务数据数量超过时间轮可存储容量,且检测还有剩余任务数据未放入时间分片中,则执行步骤4,否则执行步骤5;
[0110]
步骤4:将剩余的任务数据存入动态缓存中;
[0111]
步骤5:更新当前维度存储的数据量与写指针。
[0112]
结束。
[0113]
举例说明:将ip为“1.1.1.1”的任务数据集合中的任务数据“a.cdn.cn、b.cdn.cn、c.cdn.cn”按照顺序依次分别写入时间轮的时间分片“slot1、slot2、slot3”中,具体写入过程如下:
[0114]
[0115][0116][0117]
其中,所述time_wheel表示时间轮;所述index表示读指针索引;所述data为放入时间分片中的任务数据,所述data由ip地址和domain范围组成,所述ip为“1.1.1.1”,所述domain范围为“a.cdn.cn”或“b.cdn.cn”或“c.cdn.cn”;为所述slot为索引名,时间分片1的
索引名为slot1,时间分片2的索引名为slot2,以此类推;所述cache为动态缓存,所述pool表示超出时间轮写入性能的剩余任务数据所放置的位置,当时间轮的容量少于任务数据总量时,将未能储存的剩余任务数据存入所述cache的pool中。
[0118]
进一步的,在所述动态缓存中创建与所述任务数据集合对应的队列;将所述未储存的任务存入其所属任务数据集合对应的队列中,在队列中任务数据的排序方式是按照对应维度的任务数据集合的排序方式,所述排序方式可以为任务执行的先后顺序或任务产生的先后顺序,如此可以为后续从动态缓存中提取任务数据到时间分片中提供便利,可以直接将动态缓存中不同队列的头部任务数据提取后补充进时间轮的时间分片中,提高了任务调度的效率。例如:已知两个任务数据集合,分别为任务数据集合1和任务数据集合2,在动态缓存中创建队列1和队列2分别对应任务数据集合1和任务数据集合2,将任务数据集合1中的剩余任务数据存入队列1,将任务数据集合2中的剩余任务数据存入队列2。
[0119]
204、根据预设周期提取目标时间轮分片中的任务并添加至执行队列。
[0120]
与103步骤相同的内容,在此不进行赘述。
[0121]
205、从动态缓存中选取指定数量的任务并存入目标时间轮分片中。
[0122]
与104步骤相同的内容,在此不进行赘述。
[0123]
在所述目标时间轮分片中的任务被提取后,判断所述动态缓存中是否存在任务;若存在,则从存储任务的各队列中分别提取指定数量的任务存入所述目标时间轮分片中;如此能够及时从动态缓存中提取任务数据补充进时间分片中,保证了任务调度的高效率。
[0124]
在本实施例中,指定数量为动态缓存中存在的队列数量,每个队列对应于一个任务数据集合,即该指定数量不大于任务数据集合的数量。
[0125]
进一步的,根据存入动态缓存的任务数量确定所述动态缓存的存储空间;在从动态缓存中提取任务后,调整所述动态缓存的存储空间;可以保证动态缓存有足够的存储量而且占用资源适当。
[0126]
基于上述图2的实现方式可以看出,本发明一种任务调度方法,限定每个时间分片中对于来自同一个任务数据集合的任务只能存放一个任务,实现了将同一数据集合的任务放进时间轮中进行充分打散,再结合动态缓存储存剩余任务数据,及时对时间分片补充任务数据,可以实现任务调度同时兼顾充分离散化与高吞吐量。
[0127]
进一步的,作为对上述图1所示方法的实现,本发明实施例还提供了一种任务调度装置,用于对上述图1所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图3所示,该装置包括:
[0128]
获取单元31,用于获取多个任务数据集合,每个任务数据集合中含有至少一个任务;
[0129]
分配单元32,用于利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;
[0130]
提取单元33,用于根据预设周期提取所述分配单元32得到的目标时间轮分片中的任务并添加至执行队列;
[0131]
储存单元34,用于是啥分配单元32得到的从动态缓存中选取指定数量的任务并存
入所述目标时间轮分片中。
[0132]
进一步的,作为对上述图2所示方法的实现,本发明实施例是还提供了另一种任务调度装置,用于对上述图2所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图4所示,该装置包括:
[0133]
获取单元31,用于获取多个任务数据集合,每个任务数据集合中含有至少一个任务;
[0134]
分配单元32,用于利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;
[0135]
提取单元33,用于根据预设周期提取所述分配单元32得到的目标时间轮分片中的任务并添加至执行队列;
[0136]
储存单元34,用于所述分配单元32得到的从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。
[0137]
进一步的,所述获取单元31,包括:
[0138]
获取模块311,用于获取多个任务,所述多个任务归属于多个不同的预设维度;
[0139]
集合模块312,用于按照预设维度划分所述获取模块311获取的多个任务,将同一维度的任务组成对应的任务数据集合,得到多个任务数据集合;
[0140]
排序模块313,用于按照指定时间顺序对每个所述集合模块312得到的任务数据集合中的任务进行排序。
[0141]
进一步的,所述装置还包括:
[0142]
第一确定单元35,用于根据所述获取单元31得到的所述任务数据集合的数量确定所述时间轮中时间分片中存储任务的数量;
[0143]
第二确定单元36,用于根据处理资源确定所述第一确定单元35中的所述时间分片的数量与所述预设周期。
[0144]
进一步的,所述分配单元32,包括:
[0145]
提取模块321,用于从各任务数据集合中分别提取至少一个任务添加至所述时间轮的一个时间分片中;
[0146]
检测模块322,用于在所述提取模块321中的所述时间轮中的所有时间分片均存储有任务时,判断所述任务数据集合中是否存在未储存的任务;
[0147]
储存模块323,用于若检测模块322中的所述任务数据集合中存在未储存的任务,则将所述未储存的任务存入所述动态缓存。
[0148]
进一步的,所述储存模块323,还包括:
[0149]
创建子模块3231,用于在所述动态缓存中创建与所述任务数据集合对应的队列;
[0150]
储存子模块3232,用于将所述未储存的任务存入所述创建子模块3231得到的所属任务数据集合对应的队列中。
[0151]
进一步的,所述储存单元34,包括:
[0152]
检测模块341,用于在所述目标时间轮分片中的任务被提取后,判断所述动态缓存中是否存在任务;
[0153]
储存模块342,用于所述检测模块341得到的若所述动态缓存中存在任务,则从存储任务的各队列中分别提取指定数量的任务存入所述目标时间轮分片中。
[0154]
进一步的,所述装置还包括:
[0155]
第三确定单元37,用于根据所述分配单元32得到的存入动态缓存的任务数量确定所述动态缓存的存储空间;
[0156]
调整单元38,用于在从第三确定单元37得到的动态缓存中提取任务后,调整所述动态缓存的存储空间。
[0157]
进一步的,本发明实施例还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述图1-2中所述的任务调度方法。
[0158]
进一步的,本发明实施例还提供一种存储介质,所述存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行上述图1-2中所述的任务调度方法。
[0159]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0160]
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0161]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0162]
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0163]
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
[0164]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0165]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0166]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0167]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0168]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0169]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0170]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0171]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0172]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0173]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
技术特征:1.一种任务调度方法,其特征在于,包括:获取多个任务数据集合,每个任务数据集合中含有至少一个任务;利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;根据预设周期提取目标时间轮分片中的任务并添加至执行队列;从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。2.根据权利要求1所述的方法,其特征在于,所述获取多个任务数据集合,每个任务数据集合中含有至少一个任务,包括:获取多个任务,所述多个任务归属于多个不同的预设维度;按照预设维度划分所获取的多个任务,将同一维度的任务组成对应的任务数据集合,得到多个任务数据集合;按照指定时间顺序对每个所述任务数据集合中的任务进行排序。3.根据权利要求2所述的方法,其特征在于,在利用时间轮与动态缓存分配所述任务的执行批次之前,所述方法还包括:根据所述任务数据集合的数量确定所述时间轮中时间分片中存储任务的数量;根据处理资源确定所述时间分片的数量与所述预设周期。4.根据权利要求3所述的方法,其特征在于,所述利用时间轮与动态缓存分配所述任务的执行批次,包括:从各任务数据集合中分别提取至少一个任务添加至所述时间轮的一个时间分片中;在所述时间轮中的所有时间分片均存储有任务时,判断所述任务数据集合中是否存在未储存的任务;若存在,则将所述未储存的任务存入所述动态缓存。5.根据权利要求4所述的方法,其特征在于,将所述未储存的任务存入所述动态缓存,还包括:在所述动态缓存中创建与所述任务数据集合对应的队列;将所述未储存的任务存入其所属任务数据集合对应的队列中。6.根据权利要求5所述的方法,其特征在于,所述从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中,包括:在所述目标时间轮分片中的任务被提取后,判断所述动态缓存中是否存在任务;若存在,则从存储任务的各队列中分别提取指定数量的任务存入所述目标时间轮分片中。7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:根据存入动态缓存的任务数量确定所述动态缓存的存储空间;在从动态缓存中提取任务后,调整所述动态缓存的存储空间。8.一种任务调度装置,其特征在于,包括:获取单元,用于获取多个任务数据集合,每个任务数据集合中含有至少一个任务;分配单元,用于利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用
于储存所述任务数据集合中未分配到所述时间轮的任务数据;提取单元,用于根据预设周期提取目标时间轮分片中的任务并添加至执行队列;储存单元,用于从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。9.一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求7中任意一项所述用于任务调度方法。10.一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至权利要求7中任意一项所述用于任务调度方法。
技术总结本发明公开了一种任务调度方法及装置,涉及信息技术领域,主要目的在于实现任务调度系统同时兼顾任务调度离散化与高效处理。本发明主要的技术方案为:获取多个任务数据集合,每个任务数据集合中含有至少一个任务;利用时间轮与动态缓存分配所述任务的执行批次,其中同一执行批次的任务为分配在同一时间轮分片中且选自至少两个任务数据集合的任务,所述动态缓存用于储存所述任务数据集合中未分配到所述时间轮的任务数据;根据预设周期提取目标时间轮分片中的任务并添加至执行队列;从动态缓存中选取指定数量的任务并存入所述目标时间轮分片中。本发明用于对任务调度系统中任务的高效调度。高效调度。高效调度。
技术研发人员:左丰维 邱喆彬 沈鹏 张卓 齐向东 吴云坤
受保护的技术使用者:奇安信网神信息技术(北京)股份有限公司
技术研发日:2022.04.12
技术公布日:2022/7/5