用于处理任务的方法、系统和存储介质

阅读: 评论:0

著录项
  • CN201711441511.7
  • 20171226
  • CN108228349A
  • 20180629
  • 北京市商汤科技开发有限公司
  • 刘文民;陈前;石端广;周舒岩
  • G06F9/50
  • G06F9/50

  • 北京市海淀区中关村东路1号院3号楼7层710-712房间
  • 北京(11)
  • 北京思源智汇知识产权代理有限公司
  • 毛丽琴
摘要
本公开实施例公开了一种用于处理任务的方法,所述方法包括:计算节点根据当前自身运行状态,确定是否有空余计算能力,若计算节点确定有空余计算能力,则向任务中心发起任务处理申请;计算节点接收任务中心响应于所述任务处理申请发送的第一任务的任务信息。本公开实施例可避免由于任务发送方去频繁获取计算节点的负载情况带来的延迟。
权利要求

1.一种用于处理任务的方法,其特征在于,包括:

计算节点根据当前自身运行状态,确定是否有空余计算能力;

若确定有空余计算能力,所述计算节点向任务中心发送任务处理申请;

所述计算节点接收所述任务中心响应于所述任务处理申请发送的第一任务的任务信 息。

2.根据权利要求1所述的方法,其特征在于,所述计算节点根据当前自身运行状态,确 定是否有空余计算能力,包括:

所述计算节点判断当前处理的第二任务是否执行完毕,和/或

所述计算节点判断当前是否有空闲线程或空闲进程。

3.根据权利要求1或2所述的方法,其特征在于,在所述计算节点判断当前处理的第二 任务是否执行完毕之后,还包括:

所述计算节点判断所述第二任务是否处理成功;

若所述第二任务未处理成功,所述计算节点将所述第二任务的任务信息发送至所述任 务中心。

4.根据权利要求3所述的方法,其特征在于,在所述计算节点将所述第二任务的任务信 息发送至所述任务中心之前,还包括:

所述计算节点更新所述第二任务的任务信息中包括的任务处理失败计数值;

所述方法还包括:

所述任务中心根据所述计算节点发送的所述第二任务的任务信息中包括的任务处理 失败计数值,确定所述第二任务的处理策略。

5.根据权利要求4所述的方法,其特征在于,所述任务中心根据所述计算节点发送的所 述第二任务的任务信息中包括的任务处理失败计数值,确定所述第二任务的处理策略,包 括:

若所述第二任务的任务处理失败计数值达到失败次数阈值,所述任务中心将所述第二 任务的任务信息添加到失败任务队列中;和/或

若所述第二任务的任务处理失败计数值未达到所述失败次数阈值,所述任务中心将所 述第二任务的任务信息添加到待处理任务队列中。

6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:

所述任务中心根据至少一个待处理任务中每个任务的接收时间戳和/或任务优先级, 从所述至少一个待处理任务中确定所述第一任务。

7.根据权利要求6所述的方法,其特征在于,所述任务中心根据至少一个待处理任务中 每个任务的接收时间戳和/或任务优先级,从所述至少一个待处理任务中确定所述第一任 务,包括:

所述任务中心根据至少一个待处理任务中每个任务的接收时间戳和/或任务优先级, 确定所述至少一个待处理任务在待处理任务队列中的排列顺序;

所述任务中心将所述待处理任务队列中的首个任务确定为所述第一任务。

8.一种用于处理任务的系统,其特征在于,包括任务中心和至少一个计算节点;其中:

所述计算节点,用于

根据当前自身运行状态,确定是否有空余计算能力;

若确定有空余计算能力,向任务中心发送任务处理申请;以及

接收所述任务中心响应于所述任务处理申请发送的第一任务的任务信息。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被 至少一个处理器执行时实现权利要求1-7任一项所述方法。

10.一种任务处理系统,包括存储器和至少一个处理器,所述存储器用于存储计算机可 读指令,其特征在于,所述至少一个处理器执行所述计算机可读指令时实现权利要求1-7任 一项所述方法。

说明书
技术领域

本公开涉及计算机技术,尤其是一种用于处理任务的方法、系统和存储介质。

在任务处理系统中,包括任务中心和至少一个计算节点,其中,任务中心维护待处 理任务列表并负责列表中待处理任务的调度,例如,任务中心可以基于实时的负载检查等 方式进行计算任务的分配。计算节点可以接收任务中心为其分配的任务并进行相应处理。

本公开实施例提供一种用于处理任务的方法及系统、电子设备和存储介质的技术 方案。

本公开实施例提供一种用于处理任务的方法,包括:

计算节点根据当前自身运行状态,确定是否有空余计算能力;

若确定有空余计算能力,所述计算节点向任务中心发送任务处理申请;

所述计算节点接收所述任务中心响应于所述任务处理申请发送的第一任务的任 务信息。

在一种可选方式中,所述计算节点根据当前自身运行状态,确定是否有空余计算 能力,包括:

所述计算节点判断当前处理的第二任务是否执行完毕,和/或

所述计算节点判断当前是否有空闲线程或空闲进程。

在一种可选方式中,在所述计算节点判断当前处理的第二任务是否执行完毕之 后,还包括:

所述计算节点判断所述第二任务是否处理成功;

若所述第二任务未处理成功,所述计算节点将所述第二任务的任务信息发送至所 述任务中心。

在一种可选方式中,在所述计算节点将所述第二任务的任务信息发送至所述任务 中心之前,还包括:

所述计算节点更新所述第二任务的任务信息中包括的任务处理失败计数值;

所述方法还包括:

所述任务中心根据所述计算节点发送的所述第二任务的任务信息中包括的任务 处理失败计数值,确定所述第二任务的处理策略。

在一种可选方式中,所述任务中心根据所述计算节点发送的所述第二任务的任务 信息中包括的任务处理失败计数值,确定所述第二任务的处理策略,包括:

若所述第二任务的任务处理失败计数值达到失败次数阈值,所述任务中心将所述 第二任务的任务信息添加到失败任务队列中;和/或

若所述第二任务的任务处理失败计数值未达到所述失败次数阈值,所述任务中心 将所述第二任务的任务信息添加到待处理任务队列中。

在一种可选方式中,还包括:

所述任务中心根据至少一个待处理任务中每个任务的接收时间戳和/或任务优先 级,从所述至少一个待处理任务中确定所述第一任务。

在一种可选方式中,所述任务中心根据至少一个待处理任务中每个任务的接收时 间戳和/或任务优先级,从所述至少一个待处理任务中确定所述第一任务,包括:

所述任务中心根据至少一个待处理任务中每个任务的接收时间戳和/或任务优先 级,确定所述至少一个待处理任务在待处理任务队列中的排列顺序;

所述任务中心将所述待处理任务队列中的首个任务确定为所述第一任务。

在一种可选方式中,所述任务中心根据至少一个待处理任务中每个任务的接收时 间戳和/或任务优先级,确定所述至少一个待处理任务在待处理任务队列中的排列顺序,包 括:

所述任务中心按照任务优先级从高至低的顺序在所述待处理任务队列中依次排 列所述至少一个待处理任务;和/或

所述任务中心根据接收时间戳的先后在所述待处理任务队列中依次排列所述至 少一个待处理任务。

在一种可选方式中,所述任务中心根据至少一个待处理任务中每个任务的接收时 间戳和/或任务优先级,确定所述至少一个待处理任务在待处理任务队列中的排列顺序,还 包括:

若所述至少一个待处理任务包括具有相同任务优先级的第三任务和第四任务,按 照所述第第三任务和所述第四任务的接收时间戳的先后确定所述第三任务和所述第四任 务的排列顺序。

在一种可选方式中,还包括:

所述计算节点根据所述第一任务的任务信息,处理所述第一任务;

若所述计算节点成功处理所述第一任务,所述计算节点向所述第一任务的任务发 送方发送任务处理成功消息。

本公开实施例提供一种用于处理任务的系统,包括任务中心和至少一个计算节 点;其中:

所述计算节点,用于根据当前自身运行状态,确定是否有空余计算能力,若确定有 空余计算能力,则向任务中心发起任务处理申请;以及,接收所述任务中心响应于所述任务 处理申请发送的第一任务的任务信息。

在一种可选方式中,所述计算节点具体用于:判断当前处理的第二任务是否执行 完毕,和/或,判断当前是否有空闲线程或空闲进程。

在一种可选方式中,所述计算节点还用于:判断所述第二任务是否处理成功;若所 述第二任务未处理成功,则将所述第二任务的任务信息发送至所述任务中心。

在一种可选方式中,所述计算节点还用于:更新所述第二任务的任务信息中包括 的任务处理失败计数值;所述任务中心用于:根据所述计算节点发送的所述第二任务的任 务信息中包括的任务处理失败计数值,确定所述第二任务的处理策略。

在一种可选方式中,所述任务中心具体用于:若所述第二任务的任务处理失败计 数值达到失败次数阈值,则将所述第二任务的任务信息添加到失败任务队列中;和/或,若 所述第二任务的任务处理失败计数值未达到所述失败次数阈值,则将所述第二任务的任务 信息添加到待处理任务队列中。

在一种可选方式中,所述任务中心还用于:根据至少一个待处理任务中每个任务 的接收时间戳和/或任务优先级,从所述至少一个待处理任务中确定所述第一任务。

在一种可选方式中,所述任务中心具体用于:根据至少一个待处理任务中每个任 务的接收时间戳和/或任务优先级,确定所述至少一个待处理任务在待处理任务队列中的 排列顺序;将所述待处理任务队列中的首个任务确定为所述第一任务。

在一种可选方式中,所述任务中心具体用于:按照任务优先级从高至低的顺序在 所述待处理任务队列中依次排列所述至少一个待处理任务;和/或,根据接收时间戳的先后 在所述待处理任务队列中依次排列所述至少一个待处理任务。

在一种可选方式中,所述任务中心具体用于:若所述至少一个待处理任务包括具 有相同任务优先级的第三任务和第四任务,按照所述第三任务和所述第四任务的接收时间 戳的先后确定所述第三任务和所述第四任务的排列顺序。

在一种可选方式中,所述计算节点还用于:根据所述第一任务的任务信息,处理所 述第一任务;以及,若成功处理所述第一任务,向所述第一任务的任务发送方发送任务处理 成功消息。

本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在 于,所述计算机程序被至少一个处理器执行时实现上述任一项所述方法。

本公开实施例提供一种任务处理系统,包括存储器和至少一个处理器,所述存储 器用于存储计算机可读指令,其特征在于,所述至少一个处理器执行所述计算机可读指令 时实现上述任一项所述方法。

基于本公开上述实施例提供的用于处理任务的方法,不同于现有技术中计算节点 被动地被分配任务的方式,通过改变计算资源分发策略,基于计算节点进行申请,而不是基 于任务发送方去分发。由于每个计算节点根据自身负载情况,通过主动去任务中心申请计 算任务,这样就避免了任务发送方去频繁获取计算节点的负载情况带来的延迟。

下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。

构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释 本公开的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:

图1为本公开提供的用于处理任务的方法应用场景示例的示意图。

图2为本公开提供的用于处理任务的方法的实施例的流程图。

图3为本公开提供的用于处理任务的方法的实施例的另一流程图。

图4为本公开提供的用于处理任务的系统的实施例的结构示意图。

图5为本公开提供的用于处理任务的系统的实施例的另一结构示意图。

图6为本公开提供的电子设备的实施例的结构示意图。

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具 体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本 公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际 的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开 及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适 当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一 个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

参见图1,为本公开实施例中用于处理任务的方法的技术方案的应用场景示例的 示意图。该场景可以包括任务发送方10、任务中心20以及多个计算节点30。任务发送方10可 以是客户端设备(例如个人电脑、ipad、手机、等),也可以是一个局域网内的服务器,或者连 接多个客户端设备的网关设备等。任务发送方10可以提出任务请求,将任务相关信息发送 至任务中心20。任务中心20可以是位于网络侧的消息缓存设备或任务缓存设备,例如可以 是一台服务器或虚拟机等等。任务中心20是任务发送方10和计算节点30之间的桥梁,一方 面接收任务发送方10的任务提交,另一方面根据计算节点30的任务申请,从待处理任务队 列中确定待处理的任务并发送给计算节点30。计算节点30可以是具有计算能力的服务器或 者是虚拟设备。计算节点30数目可以根据实际应用需求确定。与其他方案中由任务中心进 行任务的分配与调度且计算节点被动接收任务中心分配的任务的方式相比,本公开实施例 中的各个计算节点30可以根据自身运行情况主动向任务中心20申请任务,从而能够避免任 务中心对于各个计算节点的当前状态信息的缺失而导致的任务分配不均或者由于频繁获 取计算节点的负载情况带来的延迟等问题,有利于提高计算节点的计算资源的利用率并实 现多个计算节点的负载均衡。

图2为本公开提供的用于处理任务的方法的实施例的示意性流程图。该实施例方 法包括S201-S203。

S201:计算节点根据当前自身运行状态,确定是否有空余计算能力。

计算节点可以是具有计算能力的设备或者是虚拟机。有别于其他方案中计算节点 被动接受任务中心分配的任务的方式,本公开实施例中,计算节点可以根据自身运行情况, 在自身具有空余计算能力的情况下,主动申请任务处理。

计算节点可以通过多种方式确定自身是否具有空余计算能力。在一些可选实施例 中,计算节点可以通过判断当前处理任务(以下称为第二任务)是否执行完毕来确定是否有 空余计算能力,其中,当前处理任务可以是计算节点正在处理的任务,并且当前处理任务的 数量可以为一个或多个。可选地,如果该计算节点具有多个正在处理的任务,则可以周期性 或触发性地判断这多个正在处理的任务中是否有执行完毕的任务。在一个例子中,如果计 算节点确定有执行完毕的任务,则可以确定自身有空余计算能力,而如果计算节点确定没 有执行完毕的任务,则可以确定自身没有空余计算能力。

作为一个可选例子,计算节点对第二任务执行完毕之后,还可以确定是否成功处 理第二任务。如果计算节点未能成功处理第二任务,即处理第二任务失败,则可以确定是否 重新执行第二任务。可选地,如果确定不重新执行第二任务,则可以确定自身具有空余计算 能力。

作为一个例子,如果计算节点处理第二任务失败,则计算节点还可以向任务中心 发送第二任务的任务信息,可选地,任务中心在接收到第二任务的任务信息之后,可以将第 二任务重新添加到待处理任务列表。可选地,第二任务的任务信息可以包含有处理失败次 数,此时,计算节点在向任务中心发送第二任务的任务信息之前,可以更新第二任务的任务 信息中的处理失败次数,例如,将处理失败次数加1,相应地,任务中心在接收到计算节点发 送的第二任务的任务信息之后,可以根据第二任务的任务信息中的处理失败次数,确定第 二任务的处理策略,例如,如果第二任务的处理失败次数未达到预设阈值,则可以将第二任 务添加到待处理任务列表,而如果第二任务的处理失败次数达到预设阈值,则可以将第二 任务添加到失败任务列表,以使得计算节点不再继续执行第二任务,但本公开实施例不限 于此。

在一些可选实施例中,计算节点可以判断当前线程或当前进程是否执行完毕,例 如,可以判断计算节点的一个或多个运行的线程中是否有执行完毕的线程,或者,可以判断 计算节点的一个或多个运行的进程中是否有执行完毕的进程。在一个例子中,如果计算节 点有执行完毕的线程和/或进程,则可以确定自身具有空余计算能力,否则,则可以确定自 身不具有空余计算能力。

计算节点可以通过进程或线程实现对任务的执行。线程也可以被称为轻量级进程 (Light Weight Process,LWP),是程序执行流的最小单元。线程是进程中的一个实体,是被 系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不 可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。进程 (Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和 调度的基本单位,是操作系统结构的基础。可选地,进程是线程的容器。

在一些可选实施例中,计算节点可以判断自身是否有空闲线程或空闲进程。可选 地,如果计算节点具有空闲线程和/或空闲进程,则可以确定自身有空余计算能力。否则,则 计算节点可以认为自身不具有空余计算能力。

可选地,计算节点可以通过上述方式中的任意一种或至少两种的任意组合确定自 身是否有空余计算能力,或者,计算节点也可以通过其他方式确定自身是否有空余计算能 力,本公开实施例对此不做限定。

S202:若计算节点确定有空余计算能力,则向任务中心发送任务处理申请。

任务中心可以用于缓存任务发送方提交的任务信息,例如,任务中心可以以待处 理任务队列的方式存储任务信息,其中,该待处理任务队列中可以包含至少一个待处理任 务和/或其任务信息。任务中心是任务发送方和计算节点之间的桥梁,一方面接收任务发送 方的任务提交,一方面根据计算节点的任务申请,从待处理任务队列中确定出待处理的任 务并发送给计算节点。

当计算节点确定自身具有空余计算能力时,则向任务中心主动发起任务处理申 请,而不是等待任务中心或其他设备分配任务。可选地,计算节点可以向任务中心发送任务 处理申请或任务请求消息或任务传送指示等,本公开实施例可以对计算节点申请任务的具 体实现不作限定。

S203:计算节点接收任务中心返回的响应于任务处理申请的第一任务的任务信 息。

任务中心在接收到计算节点的任务处理申请之后,可以根据计算节点的任务处理 申请,从至少一个待处理任务中确定第一任务,并向计算节点发送第一任务的任务信息。可 选地,计算节点可以根据接收到的第一任务的任务信息,执行第一任务。

在一种可选方式中,任务中心可以具有待处理任务队列,并且从待处理任务队列 包括的至少一个待处理任务中确定第一任务。可选地,待处理任务队列是一个先进先出队 列,例如,待处理任务队列中的任务是按照各个任务进入队列的时间顺序排序的。可选地, 待处理任务队列还可以是根据任务优先级进行排序的,或者是结合任务优先级和任务添加 到队列的时间排序的,或者也可以是以其他方式进行排序的,本公开实施例对此不做限定。

在一种可选方式中,上述方法还包括步骤:任务中心根据至少一个待处理任务中 每个任务的接收时间戳和/或任务优先级,从至少一个待处理任务中确定第一任务。例如, 任务中心可以将接收时间戳对应的接收时间最早的任务确定为第一任务,或者,任务中心 可以将任务优先级最高的任务确定为第一任务,等等,任务中心可以以其他预设的固定规 则从至少一个待处理任务中确定第一任务,本公开实施例对任务中心确定第一任务的方式 不作限定。

在一种可选方式中,任务中心可以将待处理任务队列中排在最前面的任务(即待 处理任务队列中的首个任务)确定为第一任务。此时,任务中心可以不具有任务调度决策能 力,只是每次在接收到计算节点的请求时,响应计算节点的请求将待处理任务队列中排在 最前面的任务发送给计算节点。可选地,任务中心也可以将待处理任务队列中的预设规定 位置处的任务发送给计算节点,本公开实施例对该第一任务在待处理任务队列中的具体位 置不作限定。

可选地,任务中心可以根据至少一个待处理任务中每个任务的接收时间戳和/或 任务优先级,确定至少一个待处理任务在待处理任务队列中的排列顺序。作为一个例子,任 务中心可以按照任务优先级从高至低的顺序依次排列所述至少一个待处理任务。作为另一 个例子,任务中心可以根据接收时间戳的先后依次排列所述至少一个待处理任务,例如,将 接收时间戳对应的接收时间较早的任务排在接收时间戳对应的接收时间较晚的任务之前。 作为另一个例子,还可以结合任务优先级和接收时间戳排列至少一个待处理任务。例如,可 以按照任务优先级从高到低的顺序依次排列至少一个待处理任务,其中,对于具有相同的 任务优先级或没有任务优先级的两个或更多个任务,则可以按照任务的接收时间戳排列这 两个或更多个任务。例如,若至少一个待处理任务包括具有相同任务优先级的第三任务和 第四任务,按照第三任务和第四任务的接收时间戳的先后确定第三任务和第四任务的排列 顺序。再例如,可以按照任务的接收时间戳排列至少一个待处理任务,其中,对于接收时间 戳相同的两个或更多个任务,可以按照任务优先级排列这两个或更多个任务,等等,本公开 实施例对此不做限定。

由此,任务中心根据任务进入时间和/或优先级维护任务的顺序,并在计算节点申 请任务时,将待处理任务队列的首个任务分发下去,解决了不同任务的优先级问题。任务发 送方和计算节点间是异步进行的,解耦合了计算节点和任务发送方的关系,进一步加速计 算节点对任务的获取和计算。

在计算节点接收到第一任务的任务信息之后,即可根据第一任务的任务信息处理 第一任务,例如进行计算等数据处理。

可选地,若计算节点成功处理所述第一任务,计算节点可向第一任务的任务发送 方发送任务处理成功消息。例如,计算节点可以通过任务发送方的回调接口返回任务处理 成功消息,但本公开实施例对该任务处理成功消息的发送方式不做限定。

可选地,若计算节点未能成功处理第一任务,即处理第一任务失败,则可以记录错 误信息和/或将第一任务的任务信息发送至任务中心,以使得任务中心将第一任务重新添 加至待处理任务列表或对第一任务执行其他操作,本公开实施例对此不做限定。

可见,本公开实施例提供的用于处理任务的方法中,不同于现有技术中计算节点 被动地被分配任务的方式,通过改变计算资源分发策略,基于计算节点进行申请,而不是基 于任务发送方去分发。由于每个计算节点根据自身负载情况,通过主动去任务中心申请计 算任务,这样就避免了任务发送方去频繁获取计算节点的负载情况带来的延迟。

此外,可选地,在本公开实施例中,负载均衡策略可以由计算节点决定。任务发送 方将任务发送到任务中心,任务的获取速度由计算节点来控制。可选地,任务发送方、任务 中心和计算节点三者之间的整个信息交互过程是异步的,服务发送方将信息发送到任务中 心就完了一个过程,后续的计算节点获取任务并计算是异步进行的,任务发送方需要通过 回调接口等待结果返回。

参见图3,为本公开提供了一种用于处理任务的方法另一个实施例的流程图。如图 3所示,该实施例方法包括S301-S308。

S301:计算节点根据当前自身运行状态,确定是否有空余计算能力,若确定有空余 计算能力执行S302,若确定没有空余计算能力,返回执行S301。

S302:若确定有空余计算能力,则计算节点向任务中心发起任务处理申请。

当某一个计算节点确定自身具有空余计算能力时,则向任务中心主动发起任务处 理申请,而不是等待任务中心或其他设备分配任务。

S303:任务中心根据任务接收时间戳和/或任务优先级,从待处理任务队列中确定 出第一任务。

任务中心主要是用于缓存任务发送方提交的任务信息,可以以一个待处理任务队 列的方式存储任务信息。任务中心是任务发送方和计算节点之间的桥梁,一方面接收任务 发送方的任务提交,一方面根据计算节点的任务申请,从待处理任务队列中确定出待处理 的任务并发送给计算节点。

S304:计算节点从任务中心获取第一任务的任务信息。

S305:计算节点根据任务信息对第一任务进行处理。

计算节点根据任务信息对第一任务进行处理,例如,包括根据任务信息执行计算 或数据处理的过程。

S306:计算节点判断对第一任务的处理是否成功,若处理成功,执行步骤S307,若 处理不成功,执行步骤S308。

S307:计算节点向任务发送方发送任务处理成功消息。

在一种可选方式中,通过以下步骤实现向任务发送方发送任务处理成功消息:在 任务发送方发起任务的当前连接中,通过回调接口(例如通过设置结果回调函数的方式)向 任务发送方同步发送所述任务处理成功消息。其中,是在任务发送方发起任务的当前连接 中,将任务处理成功消息返回给任务发送方。例如,在用户建立的网络连接(例如http连接) 中,实时地将任务处理成功消息进行返回给用户,对用户而言,不存在延时感受,是同步得 到反馈的。

S308:计算节点将第一任务重新返回给任务中心。

如果任务处理失败,则将第一任务重新返回给任务中心,便于其他计算节点申请 处理该第一任务或便于对处理失败的第一任务进行分析。

在一种可选方式中,在计算节点将第一任务的任务信息发送至任务中心之前,还 包括:计算节点更新第一任务的任务信息中包括的任务处理失败计数值;任务中心根据计 算节点发送的第一任务的任务信息中包括的任务处理失败计数值,确定第一任务的处理策 略。其中:任务中心根据计算节点发送的第一任务的任务信息中包括的任务处理失败计数 值,确定第一任务的处理策略,包括:若第一任务的任务处理失败计数值达到失败次数阈 值,任务中心将第一任务的任务信息添加到失败任务队列中;和/或,若第一任务的任务处 理失败计数值未达到所述失败次数阈值,任务中心将所述第一任务的任务信息添加到待处 理任务队列中。

例如,可以在任务消息中设置任务处理失败计数值,利用该计数值统计任务被处 理失败的次数;并且设置一个任务失败次数阈值。在计算节点处理第一任务失败后,计算节 点更新第一任务的任务信息中包括的任务处理失败计数值(例如使任务处理失败计数值加 一)。计算节点将该第一任务返回给任务中心。任务中心接收到未处理成功的第一任务信息 之后,根据计算节点发送的第一任务的任务信息中包括的任务处理失败计数值,确定第一 任务的处理策略。例如,任务中心判断第一任务的任务处理失败计数值是否达到或超过预 置的任务失败次数阈值,若是,则将未处理成功的第一任务放置在失败任务队列中;若否, 才将未处理成功的第一任务设置在待处理任务队列中,等待下一次被处理。可见,通过判断 任务被失败处理的次数,以及维护一个失败任务队列,用于存放被多次(例如3次)处理失败 的任务,可避免这类本身可能有问题的任务继续占用正常的处理资源。后续可通过人工或 机器查看的方式,对失败任务队列中的任务进行检测和分析。

可见,本公开实施例中,首先采取的是“异步”实现方式:任务发送方和计算节点间 是异步进行的(分别向任务中心提交任务和申请任务处理),解耦合了计算节点和任务发送 方的关系,进一步加速计算节点对任务的获取和计算;然后将“异步”方式再转变为“同步” 方式:在任务发送方发起任务的当前连接中,将任务处理成功消息返回给任务发送方,使用 户同步得到反馈,用户体验感受好。

图4为本公开用于处理任务的系统一个实施例的结构示意图。该实施例的系统可 用于实现本公开上述各方法实施例。如图4所示,该实施例的系统用于由计算节点根据自身 计算能力主动申请处理任务从而实现在多个计算节点之间的负载均衡;所述用于处理任务 的系统包括任务中心401和至少一个计算节点402;其中:

所述计算节点402,用于根据当前自身运行状态,确定是否有空余计算能力,若确 定有空余计算能力,则向任务中心401发起任务处理申请;以及,接收所述任务中心401响应 于所述任务处理申请发送的第一任务的任务信息。

在一种可选方式中,所述计算节点402具体用于:判断当前处理的第二任务是否执 行完毕,和/或,判断当前是否有空闲线程或空闲进程。

在一种可选方式中,所述计算节点402还用于:判断所述第二任务是否处理成功; 若所述第二任务未处理成功,则将所述第二任务的任务信息发送至所述任务中心401。

在一种可选方式中,所述计算节点402还用于:更新所述第二任务的任务信息中包 括的任务处理失败计数值;所述任务中心401用于:根据所述计算节点402发送的所述第二 任务的任务信息中包括的任务处理失败计数值,确定所述第二任务的处理策略。

在一种可选方式中,所述任务中心401具体用于:若所述第二任务的任务处理失败 计数值达到失败次数阈值,则将所述第二任务的任务信息添加到失败任务队列中;和/或, 若所述第二任务的任务处理失败计数值未达到所述失败次数阈值,则将所述第二任务的任 务信息添加到待处理任务队列中。

在一种可选方式中,所述任务中心401还用于:根据至少一个待处理任务中每个任 务的接收时间戳和/或任务优先级,从所述至少一个待处理任务中确定所述第一任务。

在一种可选方式中,所述任务中心401具体用于:根据至少一个待处理任务中每个 任务的接收时间戳和/或任务优先级,确定所述至少一个待处理任务在待处理任务队列中 的排列顺序;将所述待处理任务队列中的首个任务确定为所述第一任务。

在一种可选方式中,所述任务中心401具体用于:按照任务优先级从高至低的顺序 在所述待处理任务队列中依次排列所述至少一个待处理任务;和/或,根据接收时间戳的先 后在所述待处理任务队列中依次排列所述至少一个待处理任务。

在一种可选方式中,所述任务中心401具体用于:若所述至少一个待处理任务包括 具有相同任务优先级的第三任务和第四任务,按照所述第三任务和所述第四任务的接收时 间戳的先后确定所述第三任务和所述第四任务的排列顺序。

图5为本公开用于处理任务的系统另一个实施例的结构示意图。该实施例的系统 可用于实现本公开上述各方法实施例。如图5所示,该实施例的系统除了包括任务中心401、 至少一个计算节点402之外,还包括任务发送方403。

在一种可选方式中,所述计算节点402还用于:根据所述第一任务的任务信息,处 理所述第一任务;以及,若成功处理所述第一任务,向所述第一任务的任务发送方403发送 任务处理成功消息。

本公开实施例还提供了一种电子系统,例如可以是移动终端、个人计算机(PC)、平 板电脑、服务器等。下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务 器的电子系统600的结构示意图:如图6所示,计算机系统600包括一个或多个处理器、通信 部等,所述一个或多个处理器例如:一个或多个中央处理单元(CPU)601,和/或一个或多个 图像处理器(GPU)613等,处理器可以根据存储在只读存储器(ROM)602中的可执行指令或者 从存储部分608加载到随机访问存储器(RAM)603中的可执行指令而执行各种适当的动作和 处理。通信部612可包括但不限于网卡,所述网卡可包括但不限于IB(Infiniband)网卡,

处理器可与只读存储器602和/或随机访问存储器630中通信以执行可执行指令, 通过总线604与通信部612相连、并经通信部612与其他目标设备通信,从而完成本申请实施 例提供的任一项方法对应的操作,例如,由计算节点根据自身计算能力主动申请处理任务, 从而实现在多个计算节点之间的负载均衡;所述方法包括:计算节点根据当前自身运行状 态,确定是否有空余计算能力,若确定有空余计算能力,则向任务中心发起任务处理申请; 计算节点接收任务中心响应所述任务处理申请的第一任务的任务信息。

此外,在RAM 603中,还可存储有装置操作所需的各种程序和数据。CPU601、ROM602 以及RAM603通过总线604彼此相连。在有RAM603的情况下,ROM602为可选模块。RAM603存储 可执行指令,或在运行时向ROM602中写入可执行指令,可执行指令使处理器601执行上述通 信方法对应的操作。输入/输出(I/O)接口605也连接至总线604。通信部612可以集成设置, 也可以设置为具有多个子模块(例如多个IB网卡),并在总线链接上。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射 线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608; 以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因 特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如 磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出 的计算机程序根据需要被安装入存储部分608。

需要说明的,如图6所示的架构仅为一种可选实现方式,在具体实践过程中,可根 据实际需要对上述图6的部件数量和类型进行选择、删减、增加或替换;在不同功能部件设 置上,也可采用分离设置或集成设置等实现方式,例如GPU和CPU可分离设置或者可将GPU集 成在CPU上,通信部可分离设置,也可集成设置在CPU或GPU上,等等。这些可替换的实施方式 均落入本公开公开的保护范围。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机 软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读 介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码,程序代码 可包括对应执行本申请实施例提供的方法步骤对应的指令,例如,接收待检测证件的图片 或视频;对待检测证件的图片或视频进行处理后,得到待检测证件图像;对待检测证件图像 进行特征提取,得到多个类别的特征信息;根据所述多个类别的特征信息进行证件伪造识 别,得到所述证件的识别结果。在这样的实施例中,该计算机程序可以通过通信部分609从 网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元 (CPU)601执行时,执行本申请的方法中限定的上述功能。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光 盘等各种可以存储程序代码的介质。

可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者 软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序 仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特 别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序 包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据 本公开的方法的程序的记录介质。本公开的描述是为了示例和描述起见而给出的,而并不 是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员 而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领 域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

本文发布于:2023-04-15 09:49:05,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/87087.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图