任务处理方法、装置、电子设备及存储介质与流程

文档序号:32860075发布日期:2023-01-07 00:36阅读:22来源:国知局
任务处理方法、装置、电子设备及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种任务处理方法、装置、电子设备及存储介质。


背景技术:

2.在业务的处理任务量较大时,为了提高业务的处理效率,通常将业务的总任务拆分成多个子任务,分发到不同的服务器执行,以提高业务的处理效率。
3.相关技术中,将业务的总任务拆分成子任务分发给(message queue,mq)中间件,由mq推送给各个任务执行服务器执行,以得到总任务的执行结果。
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.图1为本公开一实施例提供的任务处理方法的流程示意图;
30.图2为本公开另一实施例提供的任务处理方法的流程示意图;
31.图3为本公开另一实施例提供的任务处理方法的流程示意图;
32.图4为本公开另一实施例提供的任务处理方法的流程示意图;
33.图5为本公开另一实施例提供的任务处理方法的流程示意图;
34.图6为本公开另一实施例提供的任务处理方法的流程示意图;
35.图7为本公开另一实施例提供的任务处理方法的流程示意图;
36.图8为本公开另一实施例提供的任务处理方法的流程示意图;
37.图9为本公开另一实施例提供的任务处理方法的流程示意图;
38.图10为本公开另一实施例提供的任务处理方法的流程示意图;
39.图11为任务执行服务器执行预执行子任务的流程示例图;
40.图12为本公开另一实施例提供的任务处理方法的流程示意图;
41.图13为任务发布服务器、任务调度服务器和任务执行服务器三者之间的交互示意图;
42.图14为本公开一实施例提供的任务处理装置的结构示意图;
43.图15为本公开另一实施例提供的任务处理装置的结构示意图;
44.图16为本公开另一实施例提供的任务处理装置的结构示意图;
45.图17为本公开一实施例提供的电子设备的框图。
具体实施方式
46.下面详细描述本公开的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
47.下面参考附图描述本公开实施例的任务处理方法、装置、电子设备和存储介质。
48.图1为本公开一实施例提供的任务处理方法的流程示意图。需要说明的是,本公开实施例提供的任务处理方法的执行主体为任务调度服务器。
49.如图1所示,该方法包含以下步骤:
50.s101,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务。
51.任务发布服务器在发布总任务之后,将该总任务发送给任务调度服务器,任务调度服务器接收到该总任务之后将该总任务拆分成多个子任务。
52.s102,接收任务执行服务器发送的任务执行请求。
53.接收任务执行服务器发送的任务执行请求之前,还包括:向任务执行服务器发送任务广播,其中,任务广播用于指示任务执行服务器生成任务执行请求。
54.任务调度服务器将任务发布服务器发布的总任务拆分成多个子任务之后,可以将任务执行服务器发送任务广播,以唤醒该任务执行服务器。该任务执行服务器在接收到任务调度服务器发送的任务广播时,可以对该任务广播进行响应,基于自身的任务执行能力生成任务执行请求,并将该任务执行请求发送给任务调度服务器。
55.s103,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务。
56.任务调度服务器接收到任务执行服务器发送的任务执行请求后,根据该任务执行请求,确定该任务执行服务器当前的任务执行能力,并根据该任务执行服务器当前的任务执行能力,从总任务拆分的多个子任务中确定该任务执行服务器的预执行子任务,并将该预执行子任务发送给该任务执行服务器,由该任务执行服务器执行该预执行子任务。
57.s104,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。
58.任务执行服务器执行完预执行子任务,得到该预执行子任务的第一执行结果后,将该第一执行结果发送给任务调度服务器,任务调度服务器接收到该总任务拆分的所有子任务的第一执行结果后,可以根据该第一执行结果得到该总任务的第二执行结果。
59.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,接收任务执行服务器发送的任务执行请求,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。本公开实施例中,任务调度服务器可以根据任务执行服务器发送的任务执行请求,知晓任务执行服务器的任务执行能力,从而能够根据任务执行服务器的任务执行能力来分发任务,进而充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
60.图2为本公开一实施例提供的任务处理方法的流程示意图,在上述实施例的基础上,进一步结合图2,对总任务的拆分的过程进行解释说明,包含以下步骤:
61.s201,基于当前业务场景,从候选拆分策略中确定总任务的目标拆分策略。
62.其中,候选拆分策略为预先设定的拆分策略,该候选拆分策略可以包括:按照分表后缀拆分策略、按照数据身份标识(identity document,id)范围拆分策略等,此处不做任何限定。
63.s202,基于目标拆分策略,将总任务拆分成多个子任务。
64.在不同的业务场景下,可以使用不同的拆分策略,对总任务进行拆分。
65.举例而言,若当前业务场景为资产证券化(assetbacked securities,abs)业务,任务发布服务器发布的总任务为abs过滤任务,底层具有400张分表,则目标拆分策略可以为按照分表后缀拆分策略,可以采用按照分表后缀拆分策略将abs过滤任务拆分成400个子任务,每个子任务代表一个分表的资产过滤任务。当400个子任务完成时,全表扫描过滤了
一遍,此时整体abs过滤任务完成。
66.本公开实施例中,基于当前业务场景,从候选拆分策略中确定总任务的目标拆分策略,基于目标拆分策略,将总任务拆分成多个子任务。本公开实施例中,对于不同业务的总任务,可以采用不同的拆分策略对总任务进行拆分,避免总任务拆分混乱,影响任务的执行。
67.图3为本公开一实施例提供的任务处理方法的流程示意图。如图3所示,该方法包含以下步骤:
68.s301,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务。
69.s302,接收任务执行服务器发送的任务执行请求。
70.其中,任务执行请求包括网络协议(internet protocol address,ip)地址和任务数量。
71.关于步骤s301~s302的具体介绍可参见上述实施例中相关内容的记载,此处不再赘述。
72.s303,按照任务数量从多个子任务中,确定任务执行服务器的预执行子任务。
73.任务调度服务器接收到任务执行服务器发送的任务执行请求后,可以按照任务执行请求中的任务数量,从总任务拆分的多个子任务中,选取对应数量的预执行子任务。
74.举例而言,若任务调度服务器将任务发布服务器发布的总任务拆分成了400个子任务,任务服务器发送的任务执行请求指示任务数量为200个任务,则任务调度服务器从400个子任务中,选取200个预执行子任务发送给任务执行服务器。
75.s304,按照ip地址将预执行子任务发送给任务执行服务器。
76.任务调度服务器在确定预执行子任务后,可以按照任务执行请求中ip地址将预执行子任务发送给对应的任务执行服务器,由该任务执行服务器执行该预执行子任务,并将该预执行子任务的第一执行结果发送给任务调度服务器。
77.s305,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。
78.关于步骤s305的具体介绍可参见上述实施例中相关内容的记载,此处不再赘述。
79.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,接收任务执行服务器发送的任务执行请求,按照任务数量从多个子任务中,确定任务执行服务器的预执行子任务,按照ip地址将预执行子任务发送给任务执行服务器,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。本公开实施例中,根据任务执行服务器当前可执行的任务数量,向任务执行服务器分配对应数量的任务进行执行,能够充分发挥任务执行服务器的任务执行能力。
80.图4为本公开一实施例提供的任务处理方法的流程示意图。如图4所示,该方法包含以下步骤:
81.s401,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务。
82.s402,接收任务执行服务器发送的任务执行请求。
83.s403,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务。
84.关于步骤s401~s403的具体介绍可参见上述实施例中相关内容的记载,此处不再
赘述。
85.s404,锁定预执行子任务,其中,预执行子任务处于锁定状态时无法被再次发送。
86.任务调度服务器从多个子任务中,确定任务执行服务器预执行子任务并将该预执行子任务发送给任务执行服务器后,将该预执行子任务进行锁定,该预执行子任务处于锁定状态时无法被再次发送,以避免该预执行子任务被重复执行。
87.s405,响应于接收到预执行子任务的执行失败信息,则解除预执行子任务的锁定状态。
88.s406,响应于未接收到预执行子任务的执行失败信息,则保持锁定状态。
89.在预执行子任务被锁定之后,若任务调度服务器接收到了该预执行子任务的执行失败信息,则解除该预执行子任务的锁定状态,以重新对该预执行子任务进行调度,确保该预执行子任务被任务执行服务器执行;若任务调度服务器未接收到该预执行子任务的执行失败信息,则该预执行子任务继续保持锁定状态。
90.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,接收任务执行服务器发送的任务执行请求,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务,锁定预执行子任务,其中,预执行子任务处于锁定状态时无法被再次发送,响应于接收到预执行子任务的执行失败信息,则解除预执行子任务的锁定状态,响应于未接收到预执行子任务的执行失败信息,则保持锁定状态。本公开实施例中,将已分配的任务进行锁定,能够避免任务的重复分配,浪费算力资源。
91.图5为本公开一实施例提供的任务处理方法的流程示意图。如图5所示,该方法包含以下步骤:
92.s501,监控预执行子任务的执行进度。
93.可以通过确定预执行子任务是否被发送给任务执行服务器和预执行子任务的执行结果,确定该预执行子任务的执行进度。
94.s502,基于预执行子任务的当前执行进度,对预执行子任务的当前执行状态进行更新。
95.响应于预执行子任务未被发送给任务执行服务器,或者接收到预执行子任务的执行失败信息,则确定预执行子任务的当前状态为未被执行状态;响应于预执行子任务已被发送给任务执行服务器,则将预执行子任务的当前状态更新为执行中状态;响应于接收到预执行子任务的第一执行结果,则将预执行子任务的当前状态更新为已完成状态。
96.本公开实施例中,监控预执行子任务的执行进度,基于预执行子任务的当前执行进度,对预执行子任务的当前执行状态进行更新。本公开实施例能够根据任务的执行进度,自动更新任务的当前状态,以便于任务的分配管理。
97.图6为本公开一实施例提供的任务处理方法的流程示意图。如图6所示,该方法包含以下步骤:
98.s601,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务。
99.s602,接收任务执行服务器发送的任务执行请求。
100.s603,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务。
101.s604,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。
102.关于步骤s601~s604的具体介绍可参见上述实施例中相关内容的记载,此处不再赘述。
103.s605,获取总任务的标识信息。
104.可选地,标识信息可以为唯一id。
105.s606,基于标识信息,从候选任务发布服务器中,确定发布总任务的目标任务发布服务器。
106.s607,将第二执行结果发送给目标任务发布服务器。
107.一些实施例中,任务发布服务器在将总任务发送给任务调度服务器时,可以一同将该总任务的标识信息发送给任务调度服务器,服务器接收到该标识信息后,可以将该标识信息存储于自身的存储空间中,以基于该标识将总任务的执行结果发送给任务发布服务器。
108.具体地,任务调度服务器得到总任务的第二执行结果之后,可以从自身的存储空间中,调取该总任务的标识信息,并基于该标识信息,从候选任务发布服务器中,确定发布该总任务的目标任务发布服务器,并将该总任务的第二执行结果发送给该目标任务发布服务器。
109.上述实施例为任务调度服务器得到总任务的第二执行结果后,主动向任务发布服务器反馈总任务执行结果的情况。任务调度服务器得到总任务的第二执行结果后,也可以不主动向任务服务器反馈执行结果,而是由任务发布服务器主动向任务调度服务器查询总任务的执行结果。
110.另一实施例中,任务发布服务器向任务调度服务器发送总任务的标识信息,任务调度服务器接收到该标识信息后,可以以该标识信息为引索,查询该任务发布服务器发布的总任务的当前执行状态,若该总任务已完成,则将该总任务的第二执行结果发送给该任务服务器;若该总任务未完成,则将该总任务的当前执行状态发送给任务发布服务器。
111.进一步地,还可以将上述两个实施例所描述两种方案进行结合,使得任务调度服务器可以主动反馈总任务的执行结果,任务发布服务器也可以主动查询总任务的执行结果。其具体过程可以参见上述两个实施例的相关描述,此处不再赘述。
112.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,接收任务执行服务器发送的任务执行请求,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果,获取总任务的标识信息,基于标识信息,从候选任务发布服务器中,确定发布总任务的目标任务发布服务器。本公开实施例中,基于标识信息将任务发布服务器发布的总任务的执行结果发送给该任务发布服务器,能够避免数据出现紊乱,导致任务发布服务器的执行结果错误,保证了任务发布服务器得到的任务执行结果的正确性。
113.图7为本公开一实施例提供的任务处理方法的流程示意图。如图7所示,该方法包含以下步骤:
114.s701,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务。
115.关于步骤s701的具体介绍可参见上述实施例中相关内容的记载,此处不再赘述。
116.s702,按照设定间隔时间,向每个具备任务执行权限的任务执行服务器发送任务广播,以指示任务执行服务器按照设定间隔时间获取预执行子任务。
117.本公开实施例中,可以预先对任务执行服务器的任务执行权限进行设置,使得不具备任务执行权限的任务执行服务器无法执行任务。其中,任务执行权限可以根据实际需求进行设置,此处不做任何限制。
118.任务调度服务器在将任务发布服务器发布的总任务拆分成多个子任务后,可以按照设定间隔时间,向每个具备任务执行权限的任务执行服务器发送任务广播,具备任务执行权限的任务执行服务器接收到任务调度服务器发送的任务广播后,对该任务广播进行响应,生成任务执行请求,并将该任务执行请求发送给任务调度服务器。任务调度服务器接收到任务执行服务器发送的任务执行请求后,可以根据该任务执行请求从多个子任务中确定该任务执行服务器的预执行子任务,并将该预执行子任务发送给该任务执行服务器,由该任务执行服务器执行该预执行子任务。
119.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,按照设定间隔时间,向每个具备任务执行权限的任务执行服务器发送任务广播,以指示任务执行服务器按照设定间隔时间获取预执行子任务。本公开实施例中,任务调度服务器通过任务广播定时调度各个任务执行服务器,能够避免出现部分任务执行服务器处于空闲状态,从而能够充分发挥每一个任务执行服务器的性能,提高任务执行的效率。
120.图8为本公开一实施例提供的任务处理方法的流程示意图。需要说明的是,本公开实施例的执行主体为任务执行服务器。
121.如图8所示,该方法包含以下步骤:
122.s801,生成任务执行请求,并向任务调度服务器发送任务执行请求。
123.其中,任务执行请求用于指示任务调度服务器向任务执行服务器发送对应的预执行子任务。
124.在任务调度服务器将任务发布服务器发布的总任务拆分成多个子任务之后,任务执行服务器可以生成任务执行请求,并将该任务执行请求发送给任务调度服务器,任务调度服务器接收到该任务执行请求之后,根据该任务执行请求从多个子任务中,确定任务执行服务器的预执行子任务,并将该预执行子任务发送给该任务执行服务器。
125.s802,接收任务调度服务器发送的预执行子任务。
126.s803,执行预执行子任务,并将预执行子任务的第一执行结果发送给任务调度服务器,以生成总任务的第二执行结果。其中,总任务由多个预执行子任务组成。
127.任务执行服务器接收到任务调度服务器发送预执行子任务后,执行该预执行子任务,并将该预执行子任务的第一执行结果发送给任务调度服务器。在总任务的全部子任务完成之后,任务调度服务器可以根据全部子任务的第一执行结果,生成总任务的第二执行结果。
128.可选地,按照预执行子任务的设定优先级执行预执行子任务。
129.举例而言,假设总任务a的预执行子任务a的设定优先级为1,总任务b的预执行子任务b的设定优先级为2,则优先执行预执行子任务a。
130.进一步地,由于业务需求也是影响任务执行顺序的因素,还可以结合业务需求来
确定任务的执行顺序。
131.举例而言,假设总任务a的预执行子任务a的设定优先级为1;总任务b的预执行子任务b的优先级为2,则优先执行预执行子任务a。
132.场景一:总任务a和总任务b同时发布。可以按照设定优先级先执行总任务a的预执行子任务a,再执行总任务b的预执行子任务b。
133.场景二:总任务b先发布,总任务a后发布。可根据业务场景需要,选择先执行当前正在执行中的预执行子任务b,直到把总任务b的所有预执行子任务b执行完毕,再执行预执行子任务a。或者根据场景需要,先执行预执行子任务a,暂停正在执行中的预执行子任务b,插队把总任务a的所有预执行子任务a执行完毕后,再执行预执行子任务b。
134.本公开实施例中,生成任务执行请求,并向任务调度服务器发送任务执行请求,其中,任务执行请求用于指示任务调度服务器向任务执行服务器发送对应的预执行子任务,接收任务调度服务器发送的预执行子任务,执行预执行子任务,并将预执行子任务的第一执行结果发送给任务调度服务器,以生成总任务的第二执行结果,其中,总任务由多个预执行子任务组成。本公开实施例中,任务执行服务器可以根据自身当前的执行能力,请求任务调度服务器分发任务,从而充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
135.图9为本公开一实施例提供的任务处理方法的流程示意图。如图9所示,该方法包含以下步骤:
136.s901,响应于接收到任务调度服务器发送的任务广播,获取任务执行服务器当前的资源信息。
137.任务调度服务器将任务发布服务器发布的总任务拆分成多个子任务之后,向任务执行服务器发送任务广播,任务执行服务器接收到任务调度服务器发送的任务广播之后,获取自身当前的资源信息。
138.s902,基于资源信息,确定任务执行服务器是否满足任务执行条件。
139.可选地,资源信息包括cpu使用率和/或内存使用率。
140.可选地,基于cpu使用率和/或内存使用率,确定任务执行服务器是否满足任务执行条件,响应于cpu使用率和/或内存使用率大于各自的阈值,则确定任务执服务器满足任务执行条件;响应于cpu使用率和/或内存使用率小于或等于各自的阈值,则确定任务执服务器未满足任务执行条件。
141.s903,响应于满足任务执行条件,则生成任务执行请求。
142.可选地,基于cpu使用率和/或内存使用率,确定任务执行服务器可执行的任务数量,并基于任务数量和任务执行服务器的ip地址,生成任务执行请求。
143.本公开实施例中,响应于接收到任务调度服务器发送的任务广播,获取任务执行服务器当前的资源信息,基于资源信息,确定任务执行服务器是否满足任务执行条件,响应于满足任务执行条件,则生成任务执行请求。本公开实施例中,通过任务执行服务器当前的cpu使用率和/或内存使用率,能够准确地确定任务执行服务器当前可执行的任务数量,从而充分发挥任务执行服务器的任务执行能力。
144.图10为本公开一实施例提供的任务处理方法的流程示意图。如图10所示,该方法包含以下步骤:
145.s1001,将任务调度服务器发送的预执行子任务提交至线程池,并确定是否提交成功。
146.可选地,线程池可以为异步线程池,以异步执行预执行子任务。
147.s1002,响应于提交失败,则生成预执行子任务的执行失败信息。
148.s1003,将执行失败信息发送给任务调度服务器,其中,执行失败信息用于指示任务调度服务器将预执行子任务解除锁定状态。
149.s1004,响应于提交成功,则执行预执行子任务。
150.任务执行服务器接收到任务调度服务器发送的预执行子任务后,可以将该预执行子任务提交至线程池,并确定是否提交成功,若否,则生成该预执行子任务的执行失败信息,并将该预执行子任务的执行失败信息发送给任务调度服务器,任务调度服务器接收到该预执行子任务的执行失败信息后,可以将该预执行子任务解除锁定状态,以保证该预执行子任务能够被再次获取执行;若是,则任务执行服务器可以执行该预执行子任务。
151.本公开实施例中,将任务调度服务器发送的预执行子任务提交至线程池,并确定是否提交成功,响应于提交失败,则生成预执行子任务的执行失败信息,将执行失败信息发送给任务调度服务器,其中,执行失败信息用于指示任务调度服务器将预执行子任务解除锁定状态,响应于提交成功,则执行预执行子任务。本公开实施例中,任务执行服务器将任务调度服务器分配的任务提交至线程池,能够提高任务的执行效率,且在任务执行失败时可以解除任务锁定状态,以将任务重新分配,确保任务的执行。
152.图11为任务执行服务器执行预执行子任务的流程示例图。如图11所示,包括以下步骤:
153.s1101,任务调度服务器唤醒任务执行服务器。
154.s1102,任务执行服务器获取当前cpu使用率和/或内存使用率。
155.s1103,判断cpu使用率和/或内存使用率是否大于各自的阈值。若是,则执行步骤s1105;若否,则执行步骤s1104。
156.s1104,放弃获取任务,等待自身资源释放,本次任务获取操作结束。
157.s1105,生成任务执行请求,并发送给任务调度服务器。
158.s1106,获取预执行子任务,并提交至异步线程池。
159.s1107,判断是否提交成功。若是,则执行步骤s1109;若否,则执行步骤s1108。
160.s1108,生成执行失败信息发送给任务调度服务器,本次任务获取操作结束。
161.s1109,执行预执行子任务。
162.s1110,将预执行子任务的第一执行结果发送给任务调度服务器。
163.图12为本公开一实施例提供的任务处理方法的流程示意图。需要说明的是,本公开实施例的执行主体为任务发布服务器。
164.如图12所示包含以下步骤:
165.s1201,基于当前业务场景生成总任务。
166.确定当前业务场景,并根据当前业务场景生成总任务。
167.举例而言,假设当前业务场景为abs过滤的业务场景,则任务发布服务器可以生成abs过滤任务。
168.s1202,将总任务发送给任务调度服务器,由任务调度服务器对总任务进行拆分调
度,以得到总任务的执行结果。
169.任务发布服务器基于当前业务场景生成总任务之后,可以将该总任务发送给任务调度服务器,任务调度服务器接收到该总任务之后,可以将该总任务拆分成多个子任务,并将该多个子任务调度给任务执行服务器进行执行,以得到该总任务的执行结果。
170.需要说明的是,子任务的具体调度过程可以参见上述实施例中相关内容的记载,此处不再赘述。
171.s1203,接收任务调度服务器发送的执行结果。
172.一些实施例中,任务发布服务器在将总任务发送给任务调度服务器时,可以一同将该总任务的标识信息发送给任务调度服务器,服务器接收到该标识信息后,可以将该标识信息存储于自身的存储空间中,以基于该标识将总任务的执行结果发送给任务发布服务器。
173.具体地,任务调度服务器得到总任务的执行结果后,可以从自身的存储空间中调取该总任务的标识信息,并基于该标识信息,从多个候选任务发布服务器中,确定发布该总任务的任务发布服务器,并将该总任务的执行结果发送给该任务发布服务器。
174.另一实施例中,任务发布服务器向任务调度服务器发送总任务的标识信息,其中,该标识信息用于指示任务调度服务器查询总任务的执行结果,并将执行结果发送给所述任务发布服务器。
175.具体地,任务调度服务器接收到任务调度服务器发送的标识信息后,可以以该标识信息为引索,查询该任务发布服务器发布的总任务的当前执行状态,若该总任务已完成,则将该总任务的执行结果发送给该任务服务器;若该总任务未完成,则将该总任务的当前执行状态发送给任务发布服务器。
176.本公开实施例中,基于当前业务场景生成总任务,将总任务发送给任务调度服务器,由任务调度服务器对总任务进行拆分调度,以得到总任务的执行结果,接收任务调度服务器发送的执行结果。本公开实施例中,任务发布服务器将总任务发送给任务调度服务器,由任务调度服务器进行拆分调度,能够充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
177.图13为任务发布服务器、任务调度服务器和任务执行服务器三者之间的交互示意图。如图13所示,任务发布服务器的功能包括:发布总任务和查询结果。
178.任务调度服务器的功能包括:任务拆分、任务广播、任务锁定和任务状态更新。其中,任务拆分包括拆分策略,任务广播包括定时调度。
179.任务执行服务器的功能包括:获取任务和执行任务。
180.如图13所示,任务发布服务器、任务调度服务器和任务执行服务器三者之间的交互过程如下:
181.1、任务发布服务器发布总任务,并将总任务发送给任务调度服务器。
182.2、任务调度服务器拆分总任务。
183.3、任务调度服务器向任务执行服务器发送任务广播。
184.4、任务执行服务器获取预执行子任务。
185.5、任务执行服务器将预执行子任务锁定。
186.6、任务执行服务器执行预执行子任务。
187.7、任务调度服务器根据预执行子任务的执行进度更新任务状态。
188.8、任务发布服务器查询总任务的执行结果。
189.为了实现上述第一方面实施例的任务处理方法,本公开提出了一种任务处理装置,图14为本公开一实施例的任务处理装置的结构示意图。如图14所示,任务处理装置1400包括:
190.获取模块1410,用于获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务;
191.接收模块1420,用于接收任务执行服务器发送的任务执行请求;
192.第一发送模块1430,用于基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务;
193.生成模块1440,用于接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。
194.在本公开的一个实施例中,获取模块1410,还用于基于当前业务场景,从候选拆分策略中确定总任务的目标拆分策略;基于目标拆分策略,将总任务拆分成多个子任务。
195.在本公开的一个实施例中,任务处理装置1400还包括:第二发送模块,用于接收任务执行服务器发送的任务执行请求之前,向任务执行服务器发送任务广播,其中,任务广播用于指示任务执行服务器生成任务执行请求。
196.在本公开的一个实施例中,任务执行请求包括网络协议ip地址和任务数量,第一发送模块1430还用于:按照任务数量从多个子任务中,确定任务执行服务器的预执行子任务;按照ip地址将预执行子任务发送给任务执行服务器。
197.在本公开的一个实施例中,任务处理装置1400还包括:锁定模块,用于向任务执行服务器发送预执行子任务之后,锁定预执行子任务,其中,预执行子任务处于锁定状态时无法被再次发送;解除模块,用于响应于接收到预执行子任务的执行失败信息,则解除预执行子任务的锁定状态。
198.在本公开的一个实施例中,任务处理装置1400还包括:更新模块,用于监控预执行子任务的执行进度;基于预执行子任务的当前执行进度,对预执行子任务的当前执行状态进行更新。
199.在本公开的一个实施例中,更新模块,还用于响应于预执行子任务未被发送给任务执行服务器,或者接收到预执行子任务的执行失败信息,则确定预执行子任务的当前状态为未被执行状态;响应于预执行子任务已被发送给任务执行服务器,则将预执行子任务的当前状态更新为执行中状态;响应于接收到预执行子任务的第一执行结果,则将预执行子任务的当前状态更新为已完成状态。
200.在本公开的一个实施例中,任务处理装置1400还包括:第三发送模块,用于获取总任务的标识信息;基于标识信息,从候选任务发布服务器中,确定发布总任务的目标任务发布服务器;将第二执行结果发送给目标任务发布服务器。
201.在本公开的一个实施例中,任务处理装置1400还包括:第四发送模块,用于按照设定间隔时间,向每个具备任务执行权限的任务执行服务器发送任务广播,以指示任务执行服务器按照设定间隔时间获取预执行子任务。
202.需要说明的是,上述对第一方面的任务处理方法实施例的解释说明,也适用于本
公开实施例的任务处理装置,具体过程此处不再赘述。
203.本公开实施例中,获取任务发布服务器发布的总任务,并将总任务拆分成多个子任务,接收任务执行服务器发送的任务执行请求,基于任务执行请求,从多个子任务中确定任务执行服务器的预执行子任务,并向任务执行服务器发送预执行子任务,接收任务执行服务器发送的预执行子任务的第一执行结果,并基于第一执行结果,生成总任务的第二执行结果。本公开实施例中,任务调度服务器可以根据任务执行服务器发送的任务执行请求,知晓任务执行服务器的任务执行能力,从而能够根据任务执行服务器的任务执行能力来分发任务,进而充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
204.为了实现上述第二方面实施例的任务处理方法,本公开提出了一种任务处理装置,图15为本公开一实施例的任务处理装置的结构示意图。如图15所示,任务处理装置1500包括:
205.生成模块1510,用于生成任务执行请求,并向任务调度服务器发送任务执行请求,其中,任务执行请求用于指示任务调度服务器向任务执行服务器发送对应的预执行子任务;
206.接收模块1520,用于接收任务调度服务器发送的预执行子任务;
207.执行模块1530,用于执行预执行子任务,并将预执行子任务的第一执行结果发送给任务调度服务器,以生成总任务的第二执行结果,其中,总任务由多个预执行子任务组成。
208.在本公开的一个实施例中,生成模块1510,还用于响应于接收到任务调度服务器发送的任务广播,获取任务执行服务器当前的资源信息;基于资源信息,确定任务执行服务器是否满足任务执行条件;响应于满足任务执行条件,则生成任务执行请求。
209.在本公开的一个实施例中,资源信息包括cpu使用率和/或内存使用率,生成模块1510还用于:基于cpu使用率和/或内存使用率,确定任务执行服务器是否满足任务执行条件;响应于cpu使用率和/或内存使用率大于各自的阈值,则确定任务执服务器满足任务执行条件;响应于cpu使用率和/或内存使用率小于或等于各自的阈值,则确定任务执服务器未满足任务执行条件。
210.在本公开的一个实施例中,生成模块1510还用于:基于cpu使用率和/或内存使用率,确定任务执行服务器可执行的任务数量;基于任务数量和任务执行服务器的ip地址,生成任务执行请求。
211.在本公开的一个实施例中,任务处理装置1500还包括提交模块,用于将任务调度服务器发送的预执行子任务提交至线程池,并确定是否提交成功;响应于提交失败,则生成预执行子任务的执行失败信息;将执行失败信息发送给任务调度服务器,其中,执行失败信息用于指示任务调度服务器将预执行子任务解除锁定状态;响应于提交成功,则执行预执行子任务。
212.在本公开的一个实施例中,执行模块1530还用于按照预执行子任务的设定优先级执行预执行子任务。
213.需要说明的是,上述对第二方面的任务处理方法实施例的解释说明,也适用于本公开实施例的任务处理装置,具体过程此处不再赘述。
214.本公开实施例中,生成任务执行请求,并向任务调度服务器发送任务执行请求,其
中,任务执行请求用于指示任务调度服务器向任务执行服务器发送对应的预执行子任务,接收任务调度服务器发送的预执行子任务,执行预执行子任务,并将预执行子任务的第一执行结果发送给任务调度服务器,以生成总任务的第二执行结果,其中,总任务由多个预执行子任务组成。本公开实施例中,任务执行服务器可以根据自身当前的执行能力,请求任务调度服务器分发任务,从而充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
215.为了实现上述第三方面实施例的任务处理方法,本公开提出了一种任务处理装置,图16为本公开一实施例的任务处理装置的结构示意图。如图16所示,任务处理装置1600包括:
216.生成模块1610,用于基于当前业务场景生成总任务;
217.发送模块1620,用于将总任务发送给任务调度服务器,由任务调度服务器对总任务进行拆分调度,以得到总任务的执行结果;
218.接收模块1630,用于接收任务调度服务器发送的执行结果。
219.在本公开的一个实施例中,发送模块1620还用于接收任务调度服务器发送的执行结果之前,向任务调度服务器发送总任务的标识信息,其中,标识信息用于指示任务调度服务器查询总任务的执行结果,并将执行结果发送给任务发布服务器。
220.需要说明的是,上述对第二方面的任务处理方法实施例的解释说明,也适用于本公开实施例的任务处理装置,具体过程此处不再赘述。
221.本公开实施例中,基于当前业务场景生成总任务,将总任务发送给任务调度服务器,由任务调度服务器对总任务进行拆分调度,以得到总任务的执行结果,接收任务调度服务器发送的执行结果。本公开实施例中,任务发布服务器将总任务发送给任务调度服务器,由任务调度服务器进行拆分调度,能够充分发挥任务执行服务器的任务执行能力,提高任务执行的效率。
222.如图17所示,是根据本公开实施例的任务处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,智能语音交互设备、个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
223.如图17所示,该电子设备包括:一个或多个处理器1701、存储器1702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器1701可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图17中以一个处理器1701为例。
224.存储器1702即为本公开所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本公开所提供的任务处理方
法。本公开的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本公开所提供的任务处理方法。
225.存储器1702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本公开实施例中的任务处理方法对应的程序指令/模块。处理器1701通过运行存储在存储器1702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的任务处理方法。
226.存储器1702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据任务处理方法的电子设备的使用所创建的数据等。此外,存储器1702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1702可选包括相对于处理器1701远程设置的存储器,这些远程存储器可以通过网络连接至任务处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
227.任务处理方法的电子设备还可以包括:输入装置1703和输出装置1704。处理器1701、存储器1702、输入装置1703和输出装置1704可以通过总线或者其他方式连接,图17中以通过总线连接为例。
228.输入装置1703可接收输入的数字或字符信息,以及产生与任务处理方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1704可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
229.为了实现上述实施例,本公开还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开前述第一方面实施例或第二方面实施例或第三方面实施例提出的任务处理方法。
230.为了实现上述实施例,本公开提出了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开前述第一方面实施例或第二方面实施例或第三方面实施例的任务处理方法。
231.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
232.这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光
盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
233.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
234.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
235.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。
236.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
237.在本说明书的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
238.尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1