一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种任务调度方法、系统、计算设备和存储介质与流程

2021-11-26 21:38:00 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,具体涉及一种任务调度方法、系统、计算设备和存储介质。


背景技术:

2.在云运维平台建设过程中,需要对各种云资源、进程、服务等组件实例进行实时的采集和监控,随着云平台资源规模、技术服务数量以及客户规模越来越庞大,需要采集和监控的数据规模也呈指数级增长。现有技术中对于大规模数据进行采集时,采用定时任务的方式进行数据同步和比对,常用的方法一般有两种:第一种是定时任务部署在单个节点上,逐条对数据进行处理;第二种是定时任务部署在多个节点上,处理完一条数据后打上相应的标识,采用第二种方法每次处理数据前,需判断数据是否已被处理过。
3.然而,针对第一种方法,当待处理数据量比较大时,速度会比较慢,效率较低,同时处理过程中存在单节点故障风险,不具备高可用性;针对第二种方法,每次处理数据前,都需要先校验数据是否已被处理,而且存在多个节点同时查询一条未处理的数据的情况,有可能导致一条数据被多个节点同时处理的情况。


技术实现要素:

4.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种任务调度方法、系统、计算设备和存储介质。
5.根据本发明的一个方面,提供了一种任务调度方法,包括:
6.多个任务处理节点向调度节点发送注册请求;
7.所述调度节点根据所述注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息;
8.所述调度节点获取所述待执行任务对应的待处理数据,根据所述待处理数据的数量和所述节点注册信息拆分所述待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。
9.根据本发明的另一方面,提供了一种任务调度系统,包括多个任务处理节点和调度节点;
10.其中所述多个任务处理节点用于向调度节点发送注册请求;
11.所述调度节点用于根据所述注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息;以及,获取所述待执行任务对应的待处理数据,根据所述待处理数据的数量和所述节点注册信息拆分所述待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。
12.根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
13.所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述
任务调度方法对应的操作。
14.根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述任务调度方法对应的操作。
15.根据本发明的任务调度方法、系统、计算设备和存储介质,通过多个任务处理节点向调度节点发送注册请求;调度节点根据注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息;调度节点获取待执行任务对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。本发明通过多个任务处理节点向调度节点发送注册请求,调度节点将待执行任务动态调度给多个任务处理节点,通过多个任务处理节点并发处理数据,避免多个任务处理节点之间竞争处理任务或重复处理任务的情况发生,从而大大提高数据处理的效率,提高大批量数据处理的效率和健壮性。
16.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
17.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
18.图1示出了本发明实施例提供的一种任务调度方法流程图;
19.图2示出了本发明实施例提供的一种任务调度装置的结构示意图;
20.图3示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
21.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
22.图1示出了本发明一种任务调度方法实施例的流程图,如图1所示,该方法包括以下步骤:
23.s101:多个任务处理节点向调度节点发送注册请求。
24.在一种可选的方式中,步骤s101进一步包括:多个任务处理节点按照预设执行周期进行唤醒,并随机地生成对应的节点识别码;针对每个任务处理节点,判断该任务处理节点对应的节点识别码是否有效;若无效,则重新生成对应的节点识别码;若有效,则向调度节点发送携带有节点识别码的注册请求。
25.具体地说,可根据实际需要自定义预设执行周期,例如通过后台预设执行周期为30s,则多个任务处理节点每30s自动唤醒,并随机生成每个任务处理节点对应的节点识别码(universally unique identifier,uuid)作为该任务处理节点的身份标识,并在一定有效期内有效,有效期时效长短可根据实际需求自定义设置;进一步地,针对每个任务处理节
点,该任务处理节点判断该uuid是否有效,若无效,如该uuid不存在或失效,则重新生成该任务处理节点的uuid;若有效,则向调度节点发送携带有节点识别码的注册请求。
26.在一种可选的方式中,在对多个任务处理节点进行注册之后,该方法还包括:调度节点将待执行任务的任务标识写入至任务处理信息表中。
27.具体地说,在本实施例中,调度节点负责执行任务调度进程,对多个任务处理节点的统一调度信息集中保存在任务调度表中,表1为任务调度表的数据模型,如表1所示,任务调度表包括:待执行任务id,即待执行任务的任务标识;待执行任务创建时间,即调度节点需要调度的待执行任务创建的时间(精确到时分秒)以及待执行任务的处理状态,其中,0代表任务待开始;1代表任务进行中;2代表任务结束;多个任务处理节点负责对待执行任务对应的待处理数据进行处理,对待处理数据的处理信息保存在任务处理信息表中,表2为任务处理信息表的数据模型,如表2所示,任务处理信息表包括:索引行主键,即主键id,用于更快的查询数据;待执行任务id,即任务调度表分配的待执行任务id;任务处理节点的节点识别码,即uuid;任务处理节点的注册时间(精确到时分秒);任务处理节点的节点状态,其中,0代表失效;1代表有效;任务处理状态,即任务处理节点处理调度节点分配的待执行任务的处理状态,其中,0代表未完成;1代表已完成。
28.字段名称字段说明待执行任务id唯一主键id待执行任务创建时间调度任务创建的时间,精确到时分秒待执行任务的处理状态0:任务待开始;1:任务进行中;2:任务结束
29.表1任务调度表的数据模型
30.字段名称字段说明主键唯一主键id待执行任务id任务调度表中的待执行任务id任务处理节点的节点识别码默认uuid任务处理节点注册时间任务处理节点注册的时间任务处理节点的节点状态0:失效;1:有效任务处理状态0:未完成;1:已完成
31.表2任务处理信息表的数据模型
32.一般来说,调度节点和多个任务处理节点类似,也按照预设执行周期进行唤醒,且多个任务处理节点的唤醒时间一般要晚于调度节点,可根据待处理数据的数据量规模自定义该时间间隔,例如自定义多个任务处理节点的唤醒时间比调度节点晚10秒。
33.s102:调度节点根据注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息。
34.具体地说,调度节点按照预设的执行周期首先自动被唤醒,生成待执行任务id,将待执行任务id添加至任务调度表中,然后进入休眠时间,休眠时间可以根据实际需要自定义设置,如30s;进一步地,多个任务处理节点晚于调度节点被唤醒,并通过步骤s101向调度节点发送携带有节点识别码的注册请求,调度节点根据该注册请求查询任务调度表中是否包含有待执行任务,若查询到有效的待执行任务id,例如查询到某待执行任务id对应的待执行任务的处理状态为任务待开始,即确认有待执行任务需要处理,则对多个任务处理节
点进行注册,生成节点注册信息,并将该待执行任务id,写入任务处理信息表,并将该待执行任务id返回给多个任务处理节点;多个任务处理节点收到调度节点返回的节点注册信息,节点注册成功,并获得待执行任务id,多个任务处理节点可进入休眠时间,等待预设执行周期进行再次唤醒,该休眠时间的时长可根据数据量进行调整,需要特别说明的是,多个任务处理节点的休眠时间的时长应大于或等于调度节点对待执行任务进行预处理的时长;若没有查询到有效的待执行任务id,即表示无待执行任务,则本次任务调度流程结束。
35.s103:调度节点获取待执行任务对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。
36.通过步骤s101-s102完成多个任务处理节点的注册之后,调度节点不再接收任何任务处理节点的注册请求,即已经确定用于处理待执行任务的任务处理节点的数量和其注册信息。在调度节点被唤醒之后,获取待执行任务对应的待处理数据,更新目标数据表,把节点识别码字段设置为空,数据处理结果设置为0(0表示未处理,1表示已处理)。
37.进一步地,随着多个任务处理节点完成注册,并进入休眠时间之后,调度节点可开始对待执行任务进行预处理:获取待执行任务id对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,例如,通过待处理数据的总量与任务处理节点数量相除求商,计算结果取整,根据该计算结果将待处理数据拆分,并将拆分后的待处理数据从第一行开始,依次分配指定数量的待处理数据给多个任务处理节点,最后一个任务处理节点分配上述剩余的数据,同时,将该分配结果保存在目标数据表中,并更新每条待处理数据对应的任务处理节点的节点识别码。
38.例如,有100001条待处理数据,4个任务处理节点。100001除以4取整结果为25000,则第一个任务处理节点分配1
--
25000行待处理数据;第二个任务处理节点分配25001
--
50000行待处理数据,第3个任务处理节点分配50001
--
75000行待处理数据;第四个任务处理节点分配剩余的所有行的待处理数据,即75001
--
100001行数据。
39.在一种可选的方式中,该方法还包括步骤s104:多个任务处理节点获取调度节点所分配的待处理数据,对待处理数据进行处理,并实时更新待处理数据的处理状态。
40.在一种可选的方式中,步骤s104进一步包括:多个任务处理节点从目标数据表中获取调度节点所分配的待处理数据,并逐条处理待处理数据;实时记录并更新待处理数据的处理时间和处理结果,并在处理完所有的待处理数据之后,将处理结果上报至调度节点,以供调度节点根据处理结果更新任务处理信息表中的任务处理状态。
41.具体地说,任务处理节点休眠时间结束后,多个任务处理节点可从目标数据表中获取待处理数据,并开始处理待处理数据,每处理完一条数据,更新该条待处理数据的处理时间和处理结果,例如,在目标数据表中增加字段:待处理数据对应的任务处理节点的节点识别码、数据处理结果(0:未处理1:已处理)和数据处理时间(精确到秒);任务处理节点处理完所有的待处理数据后,将处理结果上报至调度节点,并更新任务处理信息表中任务处理状态,将任务处理状态更新为1,表示待处理数据已处理完成。
42.在一种可选的方式中,该方法进一步还包括:调度节点遍历任务处理信息表,查询多个任务处理节点对应的任务处理状态;若待执行任务对应的待处理数据全部处理完成,则更新待执行任务的处理状态;若待执行任务对应的待处理数据未全部处理完成,则对未
完成任务处理的任务处理节点进行健康检查。
43.具体地说,调度节点根据待处理任务id,遍历任务处理信息表,如果所有任务处理节点都已经完成待处理数据的处理,更新任务调度表中待执行任务的处理状态,将处理状态更新为2,表示任务结束。如果任意一个任务处理节点未完成待处理数据的处理,则调度节点可先进入休眠时间进行等待,休眠时间可根据待处理数据的数据量调整,休眠结束后再次判断任务处理节点是否全部完成待处理数据的处理。
44.上述场景即正常情况下的待处理数据的处理流程,在对待处理数据的处理过程中,当任务处理节点发生故障时,调度节点可经过预设的休眠次数,多次查询多个任务处理节点对应的任务处理状态,若待执行任务对应的待处理数据仍未全部处理完成,则对未完成任务处理的任务处理节点进行健康检查。
45.在一种可选的方式中,对未完成任务处理的任务处理节点进行健康检查进一步包括:查询未完成任务处理的任务处理节点最近一次处理待处理数据的处理时间,并计算当前时间与最近一次处理待处理数据的处理时间之间的时间间隔;判断时间间隔是否大于预设休眠时间间隔;若是,则将该任务处理节点的节点状态更新为失效状态,并将该任务处理节点未完成处理的待处理数据分配给其他任务处理节点进行处理。
46.具体地说,通过查询目标数据表中未完成任务处理的任务处理节点最近一次处理待处理数据的处理时间,并计算当前时间与最近一次处理待处理数据的处理时间之间的时间间隔,若该时间间隔大于预设休眠时间间隔,则默认该任务处理节点发生故障,将该任务处理节点的节点状态更新为失效状态,即将该任务处理节点踢出集群;同时,调度节点对待执行任务对应的未处理的待处理数据进行二次调度:即首先查询已经完成待处理数据的处理的其他任务处理节点,将未完成处理的待处理数据重新分配至其他任务处理节点,过程与步骤s103类似,直至所有待处理数据全部处理完成。
47.采用本实施例的这种方法,首先,通过多个任务处理节点自动发送注册请求,调度节点待处理数据的数量和节点注册信息平均分配待处理数据给多个任务处理节点进行处理,这样多个任务处理节点处理待处理数据时,不会发生竞争,确保了数据处理的效率和准确性;其次,由于多个任务处理节点的初始待处理数据的数量基本保持一致,从而各个任务处理节点的完成时间基本一致,提高了数据的处理效率;最后,在任意一个任务处理节点发生故障,无法继续处理待处理数据时,调度节点可以二次调度其他已完成任务的任务处理节点进行未完成的待处理数据的接管,保障待执行任务的完成。
48.图2示出了本发明一种任务调度系统实施例的结构示意图。如图2所示,该系统200包括多个任务处理节点201和调度节点202。
49.其中,多个任务处理节点201用于:向调度节点202发送注册请求。
50.在一种可选的方式中,多个任务处理节点201进一步用于:按照预设执行周期进行唤醒,并随机地生成对应的节点识别码;判断每个任务处理节点对应的节点识别码是否有效;若无效,则重新生成对应的节点识别码;若有效,则向调度节点202发送携带有节点识别码的注册请求。
51.调度节点202用于:根据注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节201进行注册,生成节点注册信息;以及,获取待执行任务对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,并将拆
分后的待处理数据分配给多个任务处理节点201进行处理。
52.在一种可选的方式中,调度节点202进一步用于:将待执行任务的任务标识写入至任务处理信息表中。
53.在一种可选的方式中,多个任务处理节点201进一步用于:获取调度节点201所分配的待处理数据,对待处理数据进行处理,并实时更新待处理数据的处理状态。
54.具体地,多个任务处理节点201从目标数据表中获取调度节点202所分配的待处理数据,并逐条处理待处理数据;实时记录并更新待处理数据的处理时间和处理结果,并在处理完所有的待处理数据之后,将处理结果上报至调度节点202,以供调度节点202根据处理结果更新任务处理信息表中的任务处理状态。
55.在一种可选的方式中,调度节点202进一步还用于:遍历任务处理信息表,查询多个任务处理节点201对应的任务处理状态;若待执行任务对应的待处理数据全部处理完成,则更新待执行任务的处理状态;若待执行任务对应的待处理数据未全部处理完成,则对未完成任务处理的任务处理节点进行健康检查。
56.具体地说,调度节点202通过查询未完成任务处理的任务处理节点最近一次处理待处理数据的处理时间,并计算当前时间与最近一次处理待处理数据的处理时间之间的时间间隔;判断时间间隔是否大于预设休眠时间间隔;若是,则将该任务处理节点的节点状态更新为失效状态,并将该任务处理节点未完成处理的待处理数据分配给其他任务处理节点进行处理。
57.采用本实施例提供的这种系统,首先,通过多个任务处理节点自动发送注册请求,调度节点待处理数据的数量和节点注册信息平均分配待处理数据给多个任务处理节点进行处理,这样多个任务处理节点处理待处理数据时,不会发生竞争,确保了数据处理的效率和准确性;其次,由于多个任务处理节点的初始待处理数据的数量基本保持一致,从而各个任务处理节点的完成时间基本一致,提高了数据的处理效率;最后,任意一个任务处理节点发生故障,无法继续处理待处理数据时,调度节点可以二次调度其他已完成任务的任务处理节点进行未完成的待处理数据的接管,保障待执行任务的完成。
58.本发明实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的任务调度方法。
59.可执行指令具体可以用于使得处理器执行以下操作:
60.多个任务处理节点向调度节点发送注册请求;
61.调度节点根据注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息;
62.调度节点获取待执行任务对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。
63.图3示出了本发明计算设备实施例的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
64.如图3所示,该计算设备可以包括:
65.处理器(processor)、通信接口(communications interface)、存储器(memory)、以及通信总线。
66.其中:处理器、通信接口、以及存储器通过通信总线完成相互间的通信。通信接口,
用于与其它设备比如客户端或其它服务器等的网元通信。处理器,用于执行程序,具体可以执行上述任务调度方法实施例中的相关步骤。
67.具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。
68.处理器可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。服务器包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
69.存储器,用于存放程序。存储器可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
70.程序具体可以用于使得处理器执行以下操作:
71.多个任务处理节点向调度节点发送注册请求;
72.调度节点根据注册请求查询任务调度表中是否包含有待执行任务,若查询到待执行任务,则对多个任务处理节点进行注册,生成节点注册信息;
73.调度节点获取待执行任务对应的待处理数据,根据待处理数据的数量和节点注册信息拆分待处理数据,并将拆分后的待处理数据分配给多个任务处理节点进行处理。
74.在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
75.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
76.类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
77.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
78.此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所
包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
79.本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
80.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献