CN110119305A - 任务执行方法、装置、计算机设备及存储介质 - Google Patents
任务执行方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110119305A CN110119305A CN201910394881.2A CN201910394881A CN110119305A CN 110119305 A CN110119305 A CN 110119305A CN 201910394881 A CN201910394881 A CN 201910394881A CN 110119305 A CN110119305 A CN 110119305A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- assignment database
- database
- multiple process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开是关于一种任务执行方法、装置、计算机设备及存储介质,属于计算机技术领域。所述方法包括:通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务;将所述多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;通过所述多个进程执行各自对应的任务队列中的任务。本公开可以提高进程获取任务的效率,从而提高任务执行效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及任务执行方法、装置、计算机设备及存储介质。
背景技术
随着云计算技术的发展,分布式集群的规模越来越大,对于分布式集群控制的要求也越来越高,在分布式系统中,在同一个时刻通常会有很多个任务处于活动状态,如何执行这些任务成为一个值得关注的问题。
相关技术中执行任务的方法如下:一个进程不断轮询系统,每次把系统中新增的或者等待执行的任务轮流地分配给其他进程,其他进程获取到分配的任务后,将其读取到内存中,然后执行任务。
上述技术采用任务分配机制,一个进程需要不断地轮询系统中的任务,将任务分配给其他进程,其他进程需要等待任务分配,获取任务的效率低,导致任务执行效率低。
发明内容
本公开提供一种任务执行方法、装置、计算机设备及存储介质,能够克服任务执行效率低的问题。
根据本公开实施例的第一方面,提供一种任务执行方法,包括:
通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务;
将所述多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;
通过所述多个进程执行各自对应的任务队列中的任务。
在一种可能实现方式中,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务,包括:
通过所述多个进程中的每个进程,轮询所述任务数据库,对所述任务数据库中未被任一进程获取的任务进行加锁处理;
所述将所述多个进程获取到的任务存储到各自对应的任务队列中,包括:
将所述多个进程中的每个进程加锁处理后的任务存储到对应的任务队列中;
释放所述多个进程对应的任务队列中任务的锁。
在一种可能实现方式中,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务之后,所述方法还包括:
存储所述多个进程中的每个进程与各自获取到的任务的对应关系;
将所述多个进程获取到的任务的状态修改为第一状态,所述第一状态用于指示任务已被一个进程获取。
在一种可能实现方式中,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务,包括:
通过所述多个进程轮询所述任务数据库,根据所述任务数据库中待执行的任务的优先级,对所述任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
在一种可能实现方式中,所述通过所述多个进程执行各自对应的任务队列中的任务,包括:
开启所述多个进程中的每个进程对应的多个线程;
通过不同线程执行对应进程的任务队列中的不同任务。
在一种可能实现方式中,所述方法还包括:
通过所述多个进程周期性更新各自的心跳时间戳;
通过所述多个进程中的每个进程,检测各自所述进程以外的进程的心跳时间戳;
当所述进程以外的任一进程的心跳时间戳在所述目标时间间隔内未更新时,对所述任一进程对应的进程队列中的任务进行释放。
在一种可能实现方式中,所述对所述任一进程对应的进程队列中的任务进行释放,包括:
删除所述任一进程与所述任一进程获取的各个任务的对应关系,将所述各个任务的状态修改为第二状态,所述第二状态用于指示任务未被任一进程获取;或,
将所述各个任务存储到目标进程对应的任务队列中,将所述任一进程与所述各个任务的对应关系修改为所述目标进程与所述各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
在一种可能实现方式中,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务,包括:
通过所述多个进程中的每个进程,轮询所述任务数据库,根据所述进程当前已获取的任务数量和任务数量阈值,获取所述任务数据库中待执行的任务,所述任务数量阈值为进程能够获取的最大任务数量;或,
通过所述多个进程中的每个进程,轮询所述任务数据库,根据任务获取比例和所述任务数据库中待执行的任务的数量,获取所述任务数据库中待执行的任务,所述任务获取比例为进程当前能够获取的最大任务数量占所述任务数据库中待执行的任务的数量的比例。
在一种可能实现方式中,所述通过所述多个进程执行各自对应的任务队列中的任务,包括:
通过所述多个进程中的每个进程,通过各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,所述指示信息用于指示每次执行目标任务过程中,子任务的并发执行数。
在一种可能实现方式中,所述根据各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,包括:
根据任务存储到对应的任务队列中的先后顺序以及任务队列的先入先出策略,从对应的任务队列中取出任务;
根据当前取出的任务的指示信息,执行当前取出的任务中目标数量的子任务;
当所述目标数量的子任务执行完成后,对当前取出的任务中已执行完成的子任务进行标记;
在当前取出的任务中存在未执行的子任务时,将当前取出的任务重新存储到对应的任务队列中;
在当前取出的任务中不存在未执行的子任务时,将当前取出的任务的状态修改为第三状态,所述第三状态用于指示任务已执行完成;
继续执行上述各个步骤,直至任务队列为空。
在一种可能实现方式中,所述任务数据库为关系型数据库,所述方法还包括:
在所述任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳;或,
在所述任务数据库中存储任务的任务信息,在所述任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳时间戳。
根据本公开实施例的第二方面,提供一种任务执行装置,包括:
获取模块,被配置为执行通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务;
存储模块,被配置为执行将所述多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;
执行模块,被配置为执行通过所述多个进程执行各自对应的任务队列中的任务。
在一种可能实现方式中,所述获取模块被配置为执行:
通过所述多个进程中的每个进程,轮询所述任务数据库,对所述任务数据库中未被任一进程获取的任务进行加锁处理;
所述将所述多个进程获取到的任务存储到各自对应的任务队列中,包括:
将加锁处理后的任务存储到各自对应的任务队列中;
释放所述多个进程对应的任务队列中第一任务的锁。
在一种可能实现方式中,所述存储模块还被配置为执行:
存储所述多个进程中的每个进程与各自获取到的任务的对应关系;
将所述多个进程获取到的任务的状态修改为第一状态,所述第一状态用于指示任务已被一个进程获取。
在一种可能实现方式中,所述获取模块被配置为执行:
通过所述多个进程轮询所述任务数据库,根据所述任务数据库中待执行的任务的优先级,对所述任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
在一种可能实现方式中,所述执行模块被配置为执行:
开启所述多个进程中的每个进程对应的多个线程;
通过不同线程执行对应进程的任务队列中的不同任务。
在一种可能实现方式中,所述装置还包括:
处理模块,被配置为执行通过所述多个进程周期性更新各自的心跳时间戳;通过所述多个进程中的每个进程,检测各自以外的进程的心跳时间戳;当任一进程的心跳时间戳在所述目标时间间隔内未更新时,对所述任一进程对应的进程队列中的任务进行释放。
在一种可能实现方式中,所述处理模块被配置为执行:
删除所述任一进程与所述任一进程获取的各个任务的对应关系,将所述各个任务的状态修改为第二状态,所述第二状态用于指示任务未被任一进程获取;或,
将所述各个任务存储到目标进程对应的任务队列中,将所述任一进程与所述各个任务的对应关系修改为目标进程与所述各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
在一种可能实现方式中,所述获取模块被配置为执行:
通过所述多个进程中的每个进程,轮询所述任务数据库,根据当前已获取的任务数量和任务数量阈值,获取所述任务数据库中待执行的任务,所述任务数量阈值为进程能够获取的最大任务数量;或,
通过所述多个进程中的每个进程,轮询所述任务数据库,根据任务获取比例和所述任务数据库中待执行的任务的数量,获取所述任务数据库中待执行的任务,所述任务获取比例为进程当前能够获取的最大任务数量占所述任务数据库中待执行的任务的数量的比例。
在一种可能实现方式中,所述执行模块被配置为执行:
通过所述多个进程中的每个进程,根据各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,所述指示信息用于指示每次执行目标任务过程中,子任务的并发执行数。
在一种可能实现方式中,所述执行模块被配置为执行:
根据任务存储到对应的任务队列中的先后顺序以及任务队列的先入先出策略,从对应的任务队列中取出任务;
根据当前取出的任务的指示信息,执行当前取出的任务中目标数量的子任务;
当所述目标数量的子任务执行完成后,对当前取出的任务中已执行完成的子任务进行标记;
在当前取出的任务中存在未执行的子任务时,将当前取出的任务重新存储到对应的任务队列中;
在当前取出的任务中不存在未执行的子任务时,将当前取出的任务的状态修改为第三状态,所述第三状态用于指示任务已执行完成;
继续执行上述各个步骤,直至任务队列为空。
在一种可能实现方式中,所述任务数据库为关系型数据库,所述存储模块还被配置为执行:
在所述任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳;或,
在所述任务数据库中存储任务的任务信息,在所述任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳时间戳。
根据本公开实施例的第三方面,提供了一种计算机设备,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行上述第一方面或第一方面的任一种可能实现方式所述的任务执行方法。
根据本公开实施例的第四方面,提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述第一方面或第一方面的任一种可能实现方式所述的任务执行方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述第一方面或第一方面的任一种可能实现方式所述的任务执行方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,多个进程可以各自不断轮询任务数据库,获取任务数据库中的任务,无需等待其他进程为其分配任务,可以提高进程获取任务的效率,从而提高任务执行效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种任务执行方法的流程图。
图2是根据一示例性实施例示出的一种任务执行方法的流程图。
图3是根据一示例性实施例示出的一种进程部署的示意图。
图4是根据一示例性实施例示出的一种任务执行装置的框图。
图5是根据一示例性实施例示出的一种任务执行装置的框图。
图6是根据一示例性实施例示出的一种服务器600的框图。
图7是根据一示例性实施例示出的一种终端700的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种任务执行方法的流程图,如图1所示,任务执行方法用于计算机设备中,包括以下步骤:
在步骤S11中,通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务。
在步骤S12中,将该多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务。
在步骤S13中,通过该多个进程执行各自对应的任务队列中的任务。
本公开实施例提供的方法,通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,多个进程可以各自不断轮询任务数据库,获取任务数据库中的任务,无需等待其他进程为其分配任务,可以提高进程获取任务的效率,从而提高任务执行效率。
在一种可能实现方式中,该通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,包括:
通过该多个进程中的每个进程,轮询该任务数据库,对该任务数据库中未被任一进程获取的任务进行加锁处理;
该将该多个进程获取到的任务存储到各自对应的任务队列中,包括:
将所述多个进程中的每个进程加锁处理后的任务存储到对应的任务队列中;
释放该多个进程对应的任务队列中任务的锁。
在一种可能实现方式中,该通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务之后,该方法还包括:
存储该多个进程中的每个进程与各自获取到的任务的对应关系;
将该多个进程获取到的任务的状态修改为第一状态,该第一状态用于指示任务已被一个进程获取。
在一种可能实现方式中,该通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,包括:
通过该多个进程轮询该任务数据库,根据该任务数据库中待执行的任务的优先级,对该任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
在一种可能实现方式中,该通过该多个进程执行各自对应的任务队列中的任务,包括:
开启该多个进程中的每个进程对应的多个线程;
通过不同线程执行对应进程的任务队列中的不同任务。
在一种可能实现方式中,该方法还包括:
通过所述多个进程周期性更新各自的心跳时间戳;
通过该多个进程中的每个进程,检测各自以外的进程的心跳时间戳;
当该进程以外的任一进程的心跳时间戳在该目标时间间隔内未更新时,对该任一进程对应的进程队列中的任务进行释放。
在一种可能实现方式中,该对该任一进程对应的进程队列中的任务进行释放,包括:
删除该任一进程与该任一进程获取的各个任务的对应关系,将该各个任务的状态修改为第二状态,该第二状态用于指示任务未被任一进程获取;或,
将该各个任务存储到目标进程对应的任务队列中,将该任一进程与该各个任务的对应关系修改为该目标进程与该各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
在一种可能实现方式中,该通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,包括:
通过该多个进程中的每个进程,轮询该任务数据库,根据进程当前已获取的任务数量和任务数量阈值,获取该任务数据库中待执行的任务,该任务数量阈值为进程能够获取的最大任务数量;或,
通过该多个进程中的每个进程,轮询该任务数据库,根据任务获取比例和该任务数据库中待执行的任务的数量,获取该任务数据库中待执行的任务,该任务获取比例为进程当前能够获取的最大任务数量占该任务数据库中待执行的任务的数量的比例。
在一种可能实现方式中,该通过该多个进程执行各自对应的任务队列中的任务,包括:
通过该多个进程中的每个进程,通过各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,所述指示信息用于指示每次执行目标任务过程中,子任务的并发执行数。
在一种可能实现方式中,该通过各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,包括:
根据任务存储到对应的任务队列中的先后顺序以及任务队列的先入先出策略,从对应的任务队列中取出任务;
根据当前取出的任务的指示信息,执行当前取出的任务中目标数量的子任务;
当该目标数量的子任务执行完成后,对当前取出的任务中已执行完成的子任务进行标记;
在当前取出的任务中存在未执行的子任务时,将当前取出的任务重新存储到对应的任务队列中;
在当前取出的任务中不存在未执行的子任务时,将当前取出的任务的状态修改为第三状态,该第三状态用于指示任务已执行完成;
继续执行上述各个步骤,直至任务队列为空。
在一种可能实现方式中,该任务数据库为关系型数据库,该方法还包括:
在该任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳;或,
在该任务数据库中存储任务的任务信息,在该任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳时间戳。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种任务执行方法的流程图,如图2所示,任务执行方法用于计算机设备中,例如,该计算机设备可以是分布式系统中的计算机设备,该计算机设备可以是服务器,也可以是终端。该任务执行方法包括以下步骤:
在步骤S21中,创建多个线程。
本公开实施例中,计算机设备可以创建多个进程(或称为调度进程、调度器),每个进程的地位均等,负责获取数据库中未被任一进程获取(抢占)的任务,同时对于已获取的任务进行调度和执行。参见图3,提供了一种进程部署的示意图,如图3所示,进程支持横向扩展,计算机设备可以部署多个进程(图中仅示出进程1、进程2、进程3和进程4),后续还可以增加新的进程。
该多个进程中的每个进程可以对应有一个任务队列,该任务队列用于存储该进程已获取的任务,该任务队列可以是在内存中维护的一个队列,该任务队列可以是先入先出队列,也即是,先存储到该队列中的任务先取出来执行。
在步骤S22中,通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,将该多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务。
本公开实施例中,任务数据库提供数据存储的功能,例如,该任务数据库可以为关系型数据库,如Mysql数据库,该数据库采用关系型数据结构对数据进行存储。
在一种可能实现方式中,计算机设备可以在该任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳。通过在关系型数据库中存储任务信息、对应关系以及心跳时间戳,由于关系型数据库具有持久化存储的特点,使得这些信息可以实现持久化存储。
针对任务信息,任务信息可以包括任务的名称和状态(第一状态、第二状态、第三状态),该第一状态用于指示任务已被一个进程获取,第二状态用于指示任务未被任一进程获取,该第三状态用于指示任务已执行完成,可以包括执行成功和执行失败。任务名称可以是一个编号,也可以是根据任务内容命名的一个名称。
针对任务与进程的对应关系,任务与进程的对应关系是指已被获取的任务与获取该任务的进程之间的对应关系,例如,计算机设备每通过一个进程获取一个任务,则可以存储该任务与该进程的对应关系。
针对进程的心跳时间戳,该心跳时间戳用于表明进程的存活状态。计算机设备可以存储该多个进程的心跳时间戳,通过所述多个进程周期性更新各自的心跳时间戳。例如,每个进程启动时,可以在数据库中注册一条该进程的心跳信息,在注册时,计算机设备可以将注册时间作为该进程的心跳时间戳,之后,该进程可以不断地更新该心跳时间戳,表明自己仍然存活。
在另一种可能实现方式中,计算机设备也可以在该任务数据库中存储任务的任务信息,在该任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳信息。其中,内存数据库可以是Redis数据库。通过仅将任务信息存储在关系型数据库中,可以满足任务信息需要持久化存储的要求,同时符合数据结构的特点,对于任务与进程的对应关系和进程的心跳信息这些临时信息由于具有频繁读取、不需要持久化存储的特点,通过将其存储在内存数据库中,可以提高数据的读写速度,提高系统的任务执行效率。
针对进程获取任务的具体过程,在一种可能实现方式中,该步骤S22中通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务可以包括:通过该多个进程中的每个进程,轮询该任务数据库,对该任务数据库中未被任一进程获取的任务进行加锁处理。
该步骤S22中该将该多个进程获取到的任务存储到各自对应的任务队列中,包括:将所述多个进程中的每个进程加锁处理后的任务存储到各自对应的任务队列中,释放多个进程对应的任务队列中任务的锁。在一种可实现方式中,计算机设备还可以存储多个进程中的每个进程与各自获取到的任务的对应关系;将多个进程获取到的任务的状态修改为第一状态。
每个进程可以不断地轮询数据库,获取待执行的任务,每次获取时,可以通过SQL(Structured Query Language,结构化查询语言)语句,如select for update语句,对数据库中待执行的任务进行加锁,之后可以将锁住的任务存储到该进程的任务队列中,还可以将该任务与进程的对应关系存储到数据库(关系型数据库或内存数据库)中,将该任务的状态从第二状态修改为第一状态。为了便于后续执行该任务,还可以释放该任务的锁。
相比于相关技术中一个进程轮询数据库后分配任务给其他进程,本公开这种通过多个进程轮询数据库以获取任务的方式,可以减少轮询数据库的次数,减少系统开销。另外,本公开通过先获取任务然后执行任务的方式,可以提高任务的执行效率,减少系统资源的占用。
针对进程获取任务的优先规则,在一种可能实现方式中,计算机设备还可以通过该多个进程轮询该任务数据库,根据该任务数据库中待执行的任务的优先级,对该任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
计算机设备可以根据各个任务的重要性、发布时间、执行截止时间等因素来设置任务的优先级,数据库中每个任务的任务信息中还可以包含优先级,该优先级可以采用数字来表示,如数字越大表示优先级越高。进程在获取数据库中的任务时,可以优先获取优先级高的任务,对于优先级相同的任务,则可以采用随机获取方式进行获取。
通过根据任务的优先级来获取任务,对于优先级高的任务可以优先被获取到,从而存储到进程的任务队列中等待执行,使得高优先级的任务可以被快速、及时的执行,保证系统的资源能够合理的分配和利用。
需要说明的是,进程根据优先级获取任务的方式可以在进程获取任务的具体过程中进行,也即是,进程获取任务的优先规则可以应用在进程获取任务的具体过程中,例如,通过所述多个进程中的每个进程,轮询所述任务数据库时,根据任务数据库中待执行的任务的优先级,对该任务数据库中未被任一进程获取的任务进行加锁处理,优先级越高的任务越先被加锁。
在一种可能实现方式中,每个进程可以根据自身的负载情况来获取任务,相应地,通过该多个进程中的每个进程,轮询该任务数据库,根据当前已获取的任务数量和任务数量阈值,获取该任务数据库中待执行的任务,该任务数量阈值为进程能够获取的最大任务数量;或,通过该多个进程中的每个进程,轮询该任务数据库,根据任务获取比例和该任务数据库中待执行的任务的数量,获取该任务数据库中待执行的任务,该任务获取比例为进程当前能够获取的最大任务数量占该任务数据库中待执行的任务的数量的比例。
其中,任务数量阈值用于限定进程可以获取的最大任务数量,例如,任务数量阈值为20,则表明进程最多可以获取20个任务。如果进程当前已获取的任务数量小于任务数量阈值时可以继续获取任务,进程可以根据当前已获取的任务数量与任务数量阈值的差值,确定还可以获取的任务数量,例如进程当前已获取的任务数量为10,则表明进程还可以获取10个任务。任务获取比例用于限定进程当前可以获取的最大任务比例,例如,任务获取比例为10%,数据库中待执行的任务有100个,则表明进程还可以获取10个任务。
通过考虑每个进程的负载情况,限定进程能够获取的最大任务数量,或当前能够获取的最大任务比例,可以避免由于进程获取过多的任务导致负载过大、任务不能均衡分配、造成大量资源浪费的问题,保证进程能够具有较高的任务执行效率。
在一种可能实现方式中,针对计算机设备可以通过所述多个进程周期性更新各自的心跳时间戳,当所述多个进程中任一进程的心跳时间戳在目标时间间隔内未更新时,对该任一进程对应的进程队列中的任务进行释放。具体地,通过多个进程中的每个进程,检测各自以外的进程的心跳时间戳;当任一进程的心跳时间戳在目标时间间隔内未更新时,对该任一进程对应的进程队列中的任务进行释放。其中,进程的心跳时间戳在目标时间间隔内未更新可以是指进程的心跳时间戳距离当前时间的时间间隔大于目标时间间隔。
对于多个进程中的每个进程,可以通过该进程检测该进程以外的其他各个进程的心跳时间戳,如果其他任一进程的心跳时间戳在目标时间间隔内未更新,则对该心跳时间戳未更新的进程对应的进程队列中的任务进行释放。以该多个进程中的第一进程为例,通过该第一进程检测该多个进程中除第一进程以外的其他各个进程的心跳时间戳,如果第一进程检测到第二进程的心跳时间戳在目标时间间隔内未更新,则该第一进程可以对该第二进程对应的进程队列中的任务进行释放。
任一进程可以负责检查其他进程的存活状态,对于一段时间内没有心跳的进程,则认为该进程已经死亡(挂掉),该进程无法对其获取的任务进行执行,因此需要将死亡的进程获取的任务进行释放,保证这些任务可以被其他进程获取后执行。
需要说明的是,心跳时间戳的更新和任务的释放步骤可以在创建多个进程后的整个任务执行过程中进行,也即是,计算机设备执行步骤S21后,在计算机设备执行步骤S22和步骤S23的过程中,计算机设备可以通过该多个进程一直执行心跳时间戳的更新和任务的释放步骤。
该当该进程以外的任一进程的心跳时间戳在目标时间间隔内未更新时,对该任一进程对应的进程队列中的任务进行释放,可以包括以下两种方式:
第一种方式,当该任一进程的心跳时间戳在该目标时间间隔内未更新时,删除该任一进程与该任一进程获取的各个任务的对应关系,将该各个任务的状态修改为第二状态。
以该多个进程中的第一进程检测到第二进程的心跳时间戳在该目标时间间隔内未更新为例,该方式是当第一进程检查发现第二进程在一段时间内没有心跳时,可以直接删除第二进程与其获取的各个任务的对应关系,将这些任务的状态重置为初始状态,使得其他进程可以获取这些任务,可以为存活的各个进程提供对这些任务的获取机会。
第二种方式,当该任一进程的心跳时间戳在该目标时间间隔内未更新时,将该各个任务存储到目标进程对应的任务队列中,将该任一进程与该各个任务的对应关系修改为该目标进程与该各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
以该多个进程中的第一进程检测到第二进程的心跳时间戳在该目标时间间隔内未更新为例,该目标进程为第一进程,该方式是当第一进程检查发现第二进程在一段时间内没有心跳时,可以直接对第二进程与其获取的各个任务的对应关系进行修改,如将对应关系中的第二进程修改为第一进程,将这些任务存储到该第一进程的任务队列中,表明这些任务已被该第一进程获取,并对该这些任务的状态进行修改,使得这些任务可以直接被第一进程执行,在保证这些任务能够被执行的前提下,提高了这些任务的执行效率。
在步骤S23中,通过该多个进程执行各自对应的任务队列中的任务。
本公开实施例中,每个进程可以按照目标算法,从任务队列中选择任务来执行。例如,该算法可以是先入先出算法,也即是,先存储到该任务队列中的任务先取出来执行。
针对进程开启多个线程执行任务的方式,在一种可能实现方式中,该步骤S23可以包括:开启所述多个进程中的每个进程对应的多个线程;通过不同线程执行对应进程的任务队列中的不同任务。
每个进程可以开启多个线程(消费线程),如30个线程,通过多个线程不断地从同一个任务队列中获取任务来执行,可以提高任务执行的效率。
针对进程执行任务的具体过程,在一种可能实现方式中,该步骤S23可以包括:通过该多个进程中的每个进程,根据已获取的任务的指示信息,执行该进程对应的任务队列中的任务,所述指示信息用于指示每次执行目标任务过程中,子任务的并发执行数。
一个任务可以包含多个子任务,该任务可以有一个指示信息,一次执行一部分子任务,下次再执行另一部分子任务,直至全部子任务执行完成,也即是该任务执行完成。其中,子任务的并发执行数是指一次执行子任务的数量,如目标数量。
需要说明的是,进程开启多个线程执行任务的方式可以在进程执行任务的具体过程中进行,也即是,进程开启多个线程执行任务的方式可以应用在进程执行任务的具体过程中,例如,通过每个进程的多个线程执行不同任务时,根据不同任务的指示信息,执行不同任务。
相应地,在一种可能实现方式中,该通过该进程根据已获取的任务的指示信息,执行该进程对应的任务队列中的任务,包括:根据任务存储到对应的任务队列中的先后顺序以及任务队列的先入先出策略,从对应的任务队列中取出任务;根据当前取出的任务的指示信息,执行当前取出的任务中目标数量的子任务;当该目标数量的子任务执行完成后,对当前取出的任务中已执行完成的子任务进行标记;在当前取出的任务中存在未执行的子任务时,将当前取出的任务重新存储到对应的任务队列中;在当前取出的任务中不存在未执行的子任务时,将当前取出的任务的状态修改为第三状态,该第三状态用于指示任务已执行完成;继续执行上述各个步骤,直至任务队列为空。
进程可以按照先入先出策略,依次从任务队列中取出任务,该先入先出策略是指越先存储到任务队列中的任务越先取出,例如任务从该任务队列的一端存入,从另一端取出,则当前取出的该任务可以是该另一端的第一个任务。进程可以根据当前取出的任务的指示信息,执行该任务的一部分子任务,如该指示信息为10,则本次执行该任务的10个子任务,该10个子任务执行完后,对该任务中已执行完成的该10个子任务进行标记,表示该10个子任务已执行完成,再将该任务重新存储到该任务队列中,等待下次取出时,再执行其他的10个子任务,直至该任务的全部子任务执行完成后,不再将该任务存储到该任务队列中,而可以对该任务的状态进行修改。
上述执行方式在执行当前取出的任务时,是以对该任务中已执行完成的子任务进行标记后,将该任务重新存储到对应的任务队列中为例进行说明,在一些实施例中,当该任务中目标数量的子任务执行完成后,也可以仅将该任务中剩余未执行的子任务存储到对应的任务队列中,等待下一次从任务队列中取出该任务中剩余未执行的子任务来执行,每次仍执行目标数量的子任务。
本公开提供的技术方案优化了任务执行方法,通过创建多个进程,进程面向任务层面的调度和执行,进程可以不断地更新该心跳时间戳,表明自己仍然存活。该进程可以不断地获取数据库中已有的任务和新增的任务,该进程还可以不断调度和执行其任务队列中的任务。这种通过多个进程获取任务和执行任务的方式,提高了系统的吞吐量和任务执行效率,减少了系统的资源占用和开销,可以保证一个任务能够在短时间内(如1s内)被执行。此外,系统具备一定的容错性和灾备能力,多个进程保证任务可以被多次获取,保证任务能够被及时、准确地调度和执行。这种基于多个线程获取任务和执行任务的系统,易于扩展,如根据需要可以增加新的进程,通过新的线程参与任务的获取和执行。
本公开实施例提供的方法,通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,多个进程可以各自不断轮询任务数据库,获取任务数据库中的任务,无需等待其他进程为其分配任务,可以提高进程获取任务的效率,从而提高任务执行效率。
另外,在获取任务时,可以根据任务的优先级来获取任务,对于优先级高的任务可以优先被获取到,从而存储到进程的任务队列中等待执行,使得高优先级的任务可以被快速、及时的执行,保证系统的资源能够合理的分配和利用。
图4是根据一示例性实施例示出的一种任务执行装置的框图。参照图4,该装置包括获取模块401,存储模块402和执行模块403。
获取模块401被配置为执行通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务;
存储模块402被配置为执行将该多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;
执行模块403被配置为执行通过该多个进程执行各自对应的任务队列中的任务。
在一种可能实现方式中,该获取模块401被配置为执行:
通过该多个进程中的每个进程,轮询该任务数据库,对该任务数据库中未被任一进程获取的任务进行加锁处理;
该将该多个进程获取到的任务存储到各自对应的任务队列中,包括:
将加锁处理后的任务存储到各自对应的任务队列中;
释放多个进程对应的任务队列中该第一任务的锁。
在一种可能实现方式中,该存储模块402还被配置为执行:
存储该多个进程中的每个进程与各自获取到的任务的对应关系;
将该多个进程获取到的任务的状态修改为第一状态,该第一状态用于指示任务已被一个进程获取。
在一种可能实现方式中,该获取模块401被配置为执行:
通过该多个进程轮询该任务数据库,根据该任务数据库中待执行的任务的优先级,对该任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
在一种可能实现方式中,该执行模块403被配置为执行:
开启该多个进程中的每个进程对应的多个线程;
通过不同线程执行对应进程的任务队列中的不同任务。
在一种可能实现方式中,参见图5,该装置还包括:
处理模块404,被配置为执行通过所述多个进程周期性更新各自的心跳时间戳;通过该多个进程中的每个进程,检测各自以外的进程的心跳时间戳;当任一进程的心跳时间戳在该目标时间间隔内未更新时,对该任一进程对应的进程队列中的任务进行释放。
在一种可能实现方式中,该处理模块404被配置为执行:
删除该任一进程与该任一进程获取的各个任务的对应关系,将该各个任务的状态修改为第二状态,该第二状态用于指示任务未被任一进程获取;或,
将该各个任务存储到目标进程对应的任务队列中,将该任一进程与该各个任务的对应关系修改为该目标进程与该各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
在一种可能实现方式中,该获取模块401被配置为执行:
通过该多个进程中的每个进程,通过该进程轮询该任务数据库,根据当前已获取的任务数量和任务数量阈值,获取该任务数据库中待执行的任务,该任务数量阈值为进程能够获取的最大任务数量;或,
通过该多个进程中的每个进程,通过该进程轮询该任务数据库,根据任务获取比例和该任务数据库中待执行的任务的数量,获取该任务数据库中待执行的任务,该任务获取比例为进程当前能够获取的最大任务数量占该任务数据库中待执行的任务的数量的比例。
在一种可能实现方式中,该执行模块403被配置为执行:
通过该多个进程中的每个进程,根据各自对应的任务队列中任务的指示信息,执行各自对应的任务队列中的任务,所述指示信息用于指示每次执行目标任务过程中,子任务的并发执行数。
在一种可能实现方式中,该执行模块403被配置为执行:
根据任务存储到对应的任务队列中的先后顺序以及任务队列的先入先出策略,从对应的任务队列中取出任务;
根据当前取出的任务的指示信息,执行当前取出的任务中目标数量的子任务;
当该目标数量的子任务执行完成后,对当前取出的任务中已执行完成的子任务进行标记;
在当前取出的任务中存在未执行的子任务时,将当前取出的任务重新存储到对应的任务队列中;
在当前取出的任务中不存在未执行的子任务时,将当前取出的任务的状态修改为第三状态,该第三状态用于指示任务已执行完成;
继续执行上述各个步骤,直至任务队列为空。
在一种可能实现方式中,该任务数据库为关系型数据库,该存储模块402还被配置为执行:
在该任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳;或,
在该任务数据库中存储任务的任务信息,在该任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳时间戳。
本公开实施例中,通过多个进程轮询任务数据库,获取该任务数据库中待执行的任务,多个进程可以各自不断轮询任务数据库,获取任务数据库中的任务,无需等待其他进程为其分配任务,可以提高进程获取任务的效率,从而提高任务执行效率。
另外,在获取任务时,可以根据任务的优先级来获取任务,对于优先级高的任务可以优先被获取到,从而存储到进程的任务队列中等待执行,使得高优先级的任务可以被快速、及时的执行,保证系统的资源能够合理的分配和利用。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种服务器600的框图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)601和一个或一个以上的存储器602,其中,该存储器602中存储有至少一条指令,该至少一条指令由该处理器601加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
图7是本发明实施例提供的一种终端700的结构示意图。该终端700可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端700包括有:处理器701和存储器702。
处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请中方法实施例提供的任务执行方法。
在一些实施例中,终端700还可选包括有:外围设备接口703和至少一个外围设备。处理器701、存储器702和外围设备接口703之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备包括:射频电路704、显示屏705、摄像头706、音频电路707、定位组件708和电源709中的至少一种。
外围设备接口703可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器701和存储器702。在一些实施例中,处理器701、存储器702和外围设备接口703被集成在同一芯片或电路板上;在一些其他实施例中,处理器701、存储器702和外围设备接口703中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路704包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路704可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路704还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏705用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏705是触摸显示屏时,显示屏705还具有采集在显示屏705的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器701进行处理。此时,显示屏705还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏705可以为一个,设置终端700的前面板;在另一些实施例中,显示屏705可以为至少两个,分别设置在终端700的不同表面或呈折叠设计;在再一些实施例中,显示屏705可以是柔性显示屏,设置在终端700的弯曲表面上或折叠面上。甚至,显示屏705还可以设置成非矩形的不规则图形,也即异形屏。显示屏705可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件706用于采集图像或视频。可选地,摄像头组件706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件706还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路707可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器701进行处理,或者输入至射频电路704以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端700的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器701或射频电路704的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路707还可以包括耳机插孔。
定位组件708用于定位终端700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件708可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源709用于为终端700中的各个组件进行供电。电源709可以是交流电、直流电、一次性电池或可充电电池。当电源709包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端700还包括有一个或多个传感器710。该一个或多个传感器710包括但不限于:加速度传感器711、陀螺仪传感器712、压力传感器713、指纹传感器714、光学传感器715以及接近传感器716。
加速度传感器711可以检测以终端700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器711可以用于检测重力加速度在三个坐标轴上的分量。处理器701可以根据加速度传感器711采集的重力加速度信号,控制显示屏705以横向视图或纵向视图进行用户界面的显示。加速度传感器711还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器712可以检测终端700的机体方向及转动角度,陀螺仪传感器712可以与加速度传感器711协同采集用户对终端700的3D动作。处理器701根据陀螺仪传感器712采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器713可以设置在终端700的侧边框和/或显示屏705的下层。当压力传感器713设置在终端700的侧边框时,可以检测用户对终端700的握持信号,由处理器701根据压力传感器713采集的握持信号进行左右手识别或快捷操作。当压力传感器713设置在显示屏705的下层时,由处理器701根据用户对显示屏705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器714用于采集用户的指纹,由处理器701根据指纹传感器714采集到的指纹识别用户的身份,或者,由指纹传感器714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器714可以被设置终端700的正面、背面或侧面。当终端700上设置有物理按键或厂商Logo时,指纹传感器714可以与物理按键或厂商Logo集成在一起。
光学传感器715用于采集环境光强度。在一个实施例中,处理器701可以根据光学传感器715采集的环境光强度,控制显示屏705的显示亮度。具体地,当环境光强度较高时,调高显示屏705的显示亮度;当环境光强度较低时,调低显示屏705的显示亮度。在另一个实施例中,处理器701还可以根据光学传感器715采集的环境光强度,动态调整摄像头组件706的拍摄参数。
接近传感器716,也称距离传感器,通常设置在终端700的前面板。接近传感器716用于采集用户与终端700的正面之间的距离。在一个实施例中,当接近传感器716检测到用户与终端700的正面之间的距离逐渐变小时,由处理器701控制显示屏705从亮屏状态切换为息屏状态;当接近传感器716检测到用户与终端700的正面之间的距离逐渐变大时,由处理器701控制显示屏705从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图7中示出的结构并不构成对终端700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种非临时性计算机可读存储介质,当该存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述各个方法实施例提供的任务执行方法。
例如,该非临时性计算机可读存储介质可以是ROM(Read-Only Memory,只读内存)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述各个方法实施例提供的任务执行方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种任务执行方法,其特征在于,包括:
通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务;
将所述多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;
通过所述多个进程执行各自对应的任务队列中的任务。
2.根据权利要求1所述的任务执行方法,其特征在于,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务,包括:
通过所述多个进程中的每个进程,轮询所述任务数据库,对所述任务数据库中未被任一进程获取的任务进行加锁处理;
所述将所述多个进程获取到的任务存储到各自对应的任务队列中,包括:
将所述多个进程中的每个进程加锁处理后的任务存储到各自对应的任务队列中;
释放所述多个进程对应的任务队列中任务的锁。
3.根据权利要求1或2所述的任务执行方法,其特征在于,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务,包括:
通过所述多个进程轮询所述任务数据库,根据所述任务数据库中待执行的任务的优先级,对所述任务数据库中待执行的任务进行获取,优先级越高的任务越先被获取。
4.根据权利要求1所述的任务执行方法,其特征在于,所述通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务之后,所述方法还包括:
存储所述多个进程中的每个进程与各自获取到的任务的对应关系;
将所述多个进程获取到的任务的状态修改为第一状态,所述第一状态用于指示任务已被一个进程获取。
5.根据权利要求1所述的任务执行方法,其特征在于,所述方法还包括:
通过所述多个进程周期性更新各自的心跳时间戳;
通过所述多个进程中的每个进程,检测各自进程以外的进程的心跳时间戳;
当任一进程的心跳时间戳在所述目标时间间隔内未更新时,对所述任一进程对应的进程队列中的任务进行释放。
6.根据权利要求5所述的任务执行方法,其特征在于,所述对所述任一进程对应的进程队列中的任务进行释放,包括:
删除所述任一进程与所述任一进程获取的各个任务的对应关系,将所述各个任务的状态修改为第二状态,所述第二状态用于指示任务未被任一进程获取;或,
将所述各个任务存储到目标进程对应的任务队列中,将所述任一进程与所述各个任务的对应关系修改为所述目标进程与所述各个任务的对应关系,所述目标进程为检测所述任一进程的心跳时间戳的进程。
7.根据权利要求1所述的任务执行方法,其特征在于,所述任务数据库为关系型数据库,所述方法还包括:
在所述任务数据库中存储任务的任务信息、任务与进程的对应关系和进程的心跳时间戳;或,
在所述任务数据库中存储任务的任务信息,在所述任务数据库以外的内存数据库中存储任务与进程的对应关系和进程的心跳时间戳。
8.一种任务执行装置,其特征在于,包括:
获取模块,被配置为执行通过多个进程轮询任务数据库,获取所述任务数据库中待执行的任务;
存储模块,被配置为执行将所述多个进程获取到的任务存储到各自对应的任务队列中,不同进程对应的任务队列用于存储不同任务;
执行模块,被配置为执行通过所述多个进程执行各自对应的任务队列中的任务。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行权利要求1-7任一项所述的任务执行方法。
10.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1-7任一项所述的任务执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910394881.2A CN110119305B (zh) | 2019-05-13 | 2019-05-13 | 任务执行方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910394881.2A CN110119305B (zh) | 2019-05-13 | 2019-05-13 | 任务执行方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110119305A true CN110119305A (zh) | 2019-08-13 |
CN110119305B CN110119305B (zh) | 2022-01-21 |
Family
ID=67522306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910394881.2A Active CN110119305B (zh) | 2019-05-13 | 2019-05-13 | 任务执行方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110119305B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990132A (zh) * | 2019-11-01 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 异步任务处理方法、装置、计算机设备和存储介质 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111966476A (zh) * | 2020-08-16 | 2020-11-20 | 云知声智能科技股份有限公司 | 一种多进程的评测方法和设备、终端及计算机存储介质 |
CN117541356A (zh) * | 2023-12-04 | 2024-02-09 | 广州方舟信息科技有限公司 | 一种订单执行方法、系统、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180077A1 (en) * | 2005-11-15 | 2007-08-02 | Microsoft Corporation | Heartbeat Heuristics |
US20080148271A1 (en) * | 2006-12-19 | 2008-06-19 | Ianywhere Solutions, Inc. | Assigning tasks to threads requiring limited resources using programmable queues |
US20150363229A1 (en) * | 2014-06-11 | 2015-12-17 | Futurewei Technologies, Inc. | Resolving task dependencies in task queues for improved resource management |
CN105740326A (zh) * | 2016-01-21 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 浏览器的线程状态监测方法及装置 |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN108228326A (zh) * | 2017-12-29 | 2018-06-29 | 深圳乐信软件技术有限公司 | 批量任务处理方法和分布式系统 |
CN108334545A (zh) * | 2017-12-27 | 2018-07-27 | 微梦创科网络科技(中国)有限公司 | 一种实现异步服务的方法及装置 |
-
2019
- 2019-05-13 CN CN201910394881.2A patent/CN110119305B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180077A1 (en) * | 2005-11-15 | 2007-08-02 | Microsoft Corporation | Heartbeat Heuristics |
US20080148271A1 (en) * | 2006-12-19 | 2008-06-19 | Ianywhere Solutions, Inc. | Assigning tasks to threads requiring limited resources using programmable queues |
US20150363229A1 (en) * | 2014-06-11 | 2015-12-17 | Futurewei Technologies, Inc. | Resolving task dependencies in task queues for improved resource management |
CN105740326A (zh) * | 2016-01-21 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 浏览器的线程状态监测方法及装置 |
CN106095585A (zh) * | 2016-06-22 | 2016-11-09 | 中国建设银行股份有限公司 | 任务请求处理方法、装置和企业信息系统 |
CN108334545A (zh) * | 2017-12-27 | 2018-07-27 | 微梦创科网络科技(中国)有限公司 | 一种实现异步服务的方法及装置 |
CN108228326A (zh) * | 2017-12-29 | 2018-06-29 | 深圳乐信软件技术有限公司 | 批量任务处理方法和分布式系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990132A (zh) * | 2019-11-01 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 异步任务处理方法、装置、计算机设备和存储介质 |
CN110990132B (zh) * | 2019-11-01 | 2023-03-10 | 浙江大搜车软件技术有限公司 | 异步任务处理方法、装置、计算机设备和存储介质 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111797110B (zh) * | 2020-06-23 | 2024-01-26 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111966476A (zh) * | 2020-08-16 | 2020-11-20 | 云知声智能科技股份有限公司 | 一种多进程的评测方法和设备、终端及计算机存储介质 |
CN117541356A (zh) * | 2023-12-04 | 2024-02-09 | 广州方舟信息科技有限公司 | 一种订单执行方法、系统、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110119305B (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119305A (zh) | 任务执行方法、装置、计算机设备及存储介质 | |
US10877924B2 (en) | Instruction set processing method based on a chip architecture and apparatus, and storage medium | |
CN110841285B (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN108304265A (zh) | 内存管理方法、装置及存储介质 | |
CN109960582A (zh) | 在tee侧实现多核并行的方法、装置及系统 | |
WO2021164321A1 (zh) | 区块处理方法、基于区块链的数据查询方法及装置 | |
CN110471858A (zh) | 应用程序测试方法、装置及存储介质 | |
CN110209488A (zh) | 任务执行方法、装置、设备、系统及存储介质 | |
CN109977333A (zh) | 网页显示方法、装置、计算机设备及存储介质 | |
CN110134521A (zh) | 资源分配的方法、装置、资源管理器及存储介质 | |
CN115629884B (zh) | 一种线程调度方法、电子设备及存储介质 | |
CN109931934A (zh) | 无人机作业任务的规划方法及装置 | |
CN112162843A (zh) | 工作流执行方法、装置、设备及存储介质 | |
CN110147380A (zh) | 数据更新方法、装置、服务器以及存储介质 | |
CN110032384A (zh) | 资源更新的方法、装置、设备及存储介质 | |
CN111352633A (zh) | 应用程序的资源下载方法、装置、终端及存储介质 | |
CN110673944B (zh) | 执行任务的方法和装置 | |
CN110119243A (zh) | 指令处理方法、装置、终端和存储介质 | |
CN109783183A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN108984259A (zh) | 界面显示方法、装置及终端 | |
CN111914985B (zh) | 深度学习网络模型的配置方法、装置及存储介质 | |
CN110995842A (zh) | 业务数据下载方法、装置、设备及存储介质 | |
CN110045958A (zh) | 纹理数据生成方法、装置、存储介质及设备 | |
CN109240823A (zh) | 多端联动处理任务的方法、装置和可读存储介质 | |
CN111695981B (zh) | 资源转移方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |