CN110737534B - 任务的处理方法、装置和服务器 - Google Patents

任务的处理方法、装置和服务器 Download PDF

Info

Publication number
CN110737534B
CN110737534B CN201911035713.0A CN201911035713A CN110737534B CN 110737534 B CN110737534 B CN 110737534B CN 201911035713 A CN201911035713 A CN 201911035713A CN 110737534 B CN110737534 B CN 110737534B
Authority
CN
China
Prior art keywords
task
thread
distributed
identifier
blocking queue
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.)
Active
Application number
CN201911035713.0A
Other languages
English (en)
Other versions
CN110737534A (zh
Inventor
李感恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JD Digital Technology Holdings Co Ltd
Jingdong Technology Holding Co Ltd
Original Assignee
JD Digital Technology Holdings Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201911035713.0A priority Critical patent/CN110737534B/zh
Publication of CN110737534A publication Critical patent/CN110737534A/zh
Application granted granted Critical
Publication of CN110737534B publication Critical patent/CN110737534B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例提供一种任务的处理方法、装置和服务器,在接收到包括待处理的一个或者多个任务的任务标识或者任务对象的任务请求时,可以先将该一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,并在接收到数据请求时,将分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,以通过目标线程处理目标任务,从而实现了对多个节点设备的线程池进行统一调度,以通过调度的线程处理待处理的任务,从而提高了整个集群中每一个节点设备的CPU利用率。

Description

任务的处理方法、装置和服务器
技术领域
本发明涉及计算机技术领域,尤其涉及一种任务的处理方法、装置和服务器。
背景技术
在数据库的业务系统中,通常会存在大量的后台任务(task)需要处理,在采用单线程进行任务处理时,由于线程从数据库中大量读取和写入数据耗时较长,且在该时间段时,该线程会一直处于等待状态,即该线程会处于阻塞状态,这样会对中央处理器(centralprocessing unit,CPU)的利用率造成限制。
为了提高CPU的利用率,且提高后台任务的运行效率,服务器可以采用多线程进行任务处理,即在同一时间段,可以通过该多个线程并行处理任务,这样可以避免采用但单线程的方式对CPU的利用率造成限制,从而实现了在提高CPU利用率的同时,提高了后台任务的运行效率。
但是,利用多线程的方式,仅能提高运行该多线程的单个节点设备的CPU利用率,而无法提高整个集群中其它节点设备的CPU利用率。
发明内容
本发明实施例提供一种任务的处理方法、装置和服务器,在进行分布式任务调度服务时,提高了整个集群中每一个节点设备的CPU利用率。
第一方面,本发明实施例提供一种任务的处理方法,应用于分布式任务调度服务,所述分布式任务调度服务用于调度多个节点设备的线程池,每一个节点设备的线程池中均包括多个线程,该任务的处理方法可以包括:
接收任务请求;所述任务请求中包括待处理的一个或者多个任务的任务标识或任务对象。
将所述一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中。
在接收数据请求时,将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,以通过所述目标线程处理所述目标任务。
在一种可能的实现方式中,所述接收任务请求之前,还包括:
检测所述分布式阻塞队列当前的队列长度。
根据所述当前的队列长度,确定所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
在一种可能的实现方式中,该任务的处理方法还可以包括:
在所述分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态。
若所述线程池中存在状态信息为空闲状态的第一线程,且所述第一线程的空闲时长大于预设阈值时,销毁所述第一线程。
在一种可能的实现方式中,该任务的处理方法还可以包括:
在确定所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,停止接收任务请求,直至所述分布式阻塞队列中有任务被处理,且所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
在一种可能的实现方式中,该任务的处理方法还可以包括:
在所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态。
在接收到新的任务请求时,若所述线程池中每一个线程的状态信息均为忙碌状态,则向所述每一个节点设备发送指示信息,所述指示信息用于指示所述每一个节点设备在所述线程池中增加新的线程。
在一种可能的实现方式中,所述将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,包括:
将序列化逻辑处理后的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程。
第二方面,本发明实施例还提供一种任务的处理装置,应用于分布式任务调度服务,所述分布式任务调度服务用于调度多个节点设备的线程池,每一个节点设备的线程池中均包括多个线程,该任务的处理装置可以包括:
接收单元,用于接收任务请求;所述任务请求中包括待处理的一个或者多个任务的任务标识或任务对象。
处理单元,用于将所述一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中。
发送单元,用于在接收数据请求时,将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,以通过所述目标线程处理所述目标任务。
在一种可能的实现方式中,所述处理单元,还用于检测所述分布式阻塞队列当前的队列长度;并根据所述当前的队列长度,确定所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
在一种可能的实现方式中,所述接收单元,还用于在所述分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态。
所述处理单元,还用于若所述线程池中存在状态信息为空闲状态的第一线程,且所述第一线程的空闲时长大于预设阈值时,销毁所述第一线程。
在一种可能的实现方式中,所述接收单元,还用于在确定所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,停止接收任务请求,直至所述分布式阻塞队列中有任务被处理,且所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
在一种可能的实现方式中,所述接收单元,还用于在所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态。
所述发送单元,还用于在接收到新的任务请求时,若所述线程池中每一个线程的状态信息均为忙碌状态,则向所述每一个节点设备发送指示信息,所述指示信息用于指示所述每一个节点设备在所述线程池中增加新的线程。
在一种可能的实现方式中,所述发送单元,具体用于将序列化逻辑处理后的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程。
第三方面,本发明实施例还提供一种集群服务器,该集群服务器可以包括存储器和处理器。
存储器,用于存储计算机程序。
处理器,用于读取存储器存储的计算机程序,并根据所述存储器中的计算机程序执行如上述第一方面任一项所述的任务的处理方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上述第一方面任一项所述的任务的处理方法。
本发明实施例提供的任务的处理方法、装置和服务器,在接收到包括待处理的一个或者多个任务的任务标识或者任务对象的任务请求时,可以先将该一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,并在接收到数据请求时,将分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,以通过目标线程处理目标任务,从而实现了对多个节点设备的线程池进行统一调度,以通过调度的线程处理待处理的任务,从而提高了整个集群中每一个节点设备的CPU利用率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明实施例提供的一种应用场景的示意图;
图2为本发明实施例提供的一种任务的处理方法的流程示意图;
图3为本发明实施例提供的另一种任务的处理方法的流程示意图;
图4为本发明实施例提供的一种任务的处理装置的结构示意图;
图5为本发明实施例提供的一种集群服务器的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本发明的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联任务对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本发明的文字描述中,字符“/”一般表示前后关联任务对象是一种“或”的关系。
基于现有技术中存在的问题,为了在进行分布式任务调度服务时,提高了整个集群中每一个节点设备的CPU利用率,本发明实施例提供了一种任务的处理方法,示例的,请参见图1所示,图1为本发明实施例提供的一种应用场景的示意图,该任务的处理方法可应用于分布式任务调度系统,该分布式任务调度系统可以安装在第三方集群服务器上,对应的,该应用场景中可以包括一个第三方集群服务器和多个节点设备,该多个节点设备中每一个节点设备的线程池中均包括多个线程,在有待处理的任务时,该第三方集群服务器可以通过分布式任务调度系统调度多个节点设备的线程池,以调度线程池中的线程处于该待处理的任务,即实现了对多个节点设备的线程池进行统一调度,从而通过调度的线程处理待处理的任务。当然,该分布式任务调度系统还可以包括线程池生产者,该线程池生产者用于创建任务标识或任务对象,并通过任务请求将其创建的任务标识或任务对象发送给第三方集群服务器,以使第三方集群服务器获取到待处理的任务。
基于图1所示的场景,在本发明实施例中,第三方集群服务器在接收到包括待处理的一个或者多个任务的任务标识或者任务对象的任务请求时,可以先将该一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,并在接收到数据请求时,将分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,以通过目标线程处理目标任务,从而实现了对多个节点设备的线程池进行统一调度,以通过调度的线程处理待处理的任务,从而提高了整个集群中每一个节点设备的CPU利用率。当然,还可以定时监控CPU负载,从而对负载过高的节点设备的线程池进行线程数限制。
示例的,第三方集群服务器可以为Redis集群服务器,也可以为其它具有Redis集群特性的服务器,具体可以根据实际需要进行设置。可以理解的是,本发明实施例只是以第三方集群服务器为Redis集群服务器为例进行说明,但并不代表本发明实施例仅局限于此。
下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图2为本发明实施例提供的一种任务的处理方法的流程示意图,应用于分布式任务调度服务,分布式任务调度服务用于调度多个节点设备的线程池,每一个节点设备的线程池中均包括多个线程,示例的,请参见图2所示,该任务的处理方法可以包括:
S201、接收任务请求。
其中,任务请求中包括待处理的一个或者多个任务的任务标识或任务对象。
示例的,分布式任务调度系统启动后,线程池生产者可以从外部存储(如数据库、文件系统等)中获取基础数据,并将基础数据加工为待处理的任务标识或任务对象,之后,再通过无线传输技术将待处理任务的任务标识或任务对象发送给第三方集群服务器,以使第三方集群服务器获取到包括该待处理任务的任务标识或任务对象的任务请求。
在接收到包括该待处理任务的任务标识或任务对象的任务请求之后,第三方集群服务器可以先将其接收到的一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,即执行下述S202:
S202、将一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中。
示例的,分布式阻塞队列的数据结构可以为redis的Lists数据结构,当然,也可以为其它与redis的Lists数据结构类似的数据结构,具体可以根据实际需要进行设置。
在将一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中时,需采用适当的序列化手段对任务标识或任务对象进行序列化处理,以使该一个或多个任务的任务标识或任务对象可通过网络传输,再使用rpush命令将该一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,该分布式阻塞队列中的任务标识或任务对象即为待处理任务的任务标识或任务对象。
S203、在接收数据请求时,将分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,以通过目标线程处理目标任务。
示例的,第三方集群服务器在接收数据请求时,该数据请求可以为多个节点设备中某一个节点设备中的线程发送的数据请求,也可以为多个节点设备中某两个甚至多个节点设备中的线程发送的数据请求。接收到线程发送的数据请求的过程可以理解为各个线程通过连接以抢占的方式从分布式阻塞队列拉取任务标识或者任务对象的过程。由于队列的特征为先进先出,因此,可以第三方集群服务器在接收到数据请求后,可以将分布式阻塞队列中最靠前的那一个目标任务的任务标识或者任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,从而通过目标线程处理目标任务。
示例的,各个线程通过连接以抢占的方式从分布式阻塞队列拉取任务标识或者任务对象时,可以使用blpop命令通过连接从分布式阻塞队列拉取任务标识或者任务对象。此外,还需要说明的是,各个线程使用blpop命令从分布式阻塞队列拉取任务标识或者任务对象时,若该分布式阻塞队列中无任务时,该各个线程会处于等待状态,即该各个线程均会被阻塞,且阻塞后的各个线程暂时不会再处理任务,直至其阻塞状态被解除。进一步地,在使用blpop命令从分布式阻塞队列拉取任务标识或者任务对象时,还需要对连接所属的连接池进行管理,防止blpop命令因线程阻塞而耗尽连接池,造成崩溃。
可以理解的是,在上述S201中,若第三方集群服务器接收到的任务请求中包括的是进行序列化逻辑处理后的任务标识或任务对象,即生产者设备从外部存储(如数据库,文件系统等)读取基础数据并创建任务标识或任务对象之后,先对待处理任务的任务标识和任务对象进行序列化逻辑处理,并将序列化逻辑处理之后的任务标识或任务对象发送给第三方集群服务器,这样第三方集群服务器接收到的任务请求中包括的是进行序列化逻辑处理后的任务标识或任务对象。在该种情况下,第三方集群服务器在将分布式阻塞队列中最靠前的那一个目标任务的任务标识或者任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程时,发送的是进行序列化逻辑处理后的目标任务的任务标识或者任务对象,即目标任务的任务标识或者任务对象的序列化结果。因此,目标线程在抢占任务后,需要先序列化逻辑处理后的目标任务的任务标识或者任务对象进行反序列化逻辑处理,从而得到序列化逻辑处理之前的目标任务的任务标识或者任务对象。
示例的,在对目标任务的任务标识和任务对象进行序列化逻辑处理时,可以使用目标任务的任务标识和任务对象的全类名,连接字符“@”,连接目标任务的任务标识和任务对象的json字符串,从而得到序列化逻辑处理之后的任务标识或任务对象。对应的,在对目标任务的任务标识或任务对象进行反序列化逻辑处理时,可以以字符“@”拆分字符串为两部分,字符串1为目标任务的任务标识和任务对象的全类名,字符串2为目标任务的任务标识和任务对象的json字符串,用全类名加载类,并对json字符串做解析可得任务序列化逻辑处理之前的目标任务的任务标识和任务对象。
由此可见,在本发明实施例中,在得到处理后的目标任务的任务标识或任务对象之后,就可以将处理后的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,从而实现了对多个节点设备的线程池进行统一调度,以通过调度的线程处理待处理的任务,从而提高了整个集群中每一个节点设备的CPU利用率。
基于图2所示的实施例,可以理解的是,由于分布式阻塞队列中可容纳的任务标识或任务对象有限,因此,为了避免因分布式阻塞队列无法容纳任务的任务标识或任务对象,第三方集群服务器在接收包括待处理的一个或者多个任务的任务标识或任务对象的任务请求之前,可以先检测分布式阻塞队列当前的队列长度,并在确定分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收包括待处理的一个或者多个任务的任务标识或任务对象的任务请求。示例的,请参见图3所示,图3为本发明实施例提供的另一种任务的处理方法的流程示意图,该任务的处理方法可以包括:
S301、检测分布式阻塞队列当前的队列长度。
示例的,在检测分布式阻塞队列当前的队列长度时,可以采用lua脚本实现,该lua脚本可以实现分布式阻塞队列当前的队列长度的检测,当然,本发明实施例只是以通过lua脚本实现分布式阻塞队列当前的队列长度的检测为例进行说明,但并不代表本发明实施例仅局限于此。
在检测到分布式阻塞队列当前的队列长度之后,就可以根据该当前的队列长度,确定分布式阻塞队列是否可再容纳任务的任务标识或任务对象,即执行下述S302:
S302、根据当前的队列长度,判断分布式阻塞队列可再容纳任务的任务标识或任务对象。
若分布式阻塞队列可再容纳任务的任务标识或任务对象,则执行上述S201接收任务请求。
在该种场景中,若确定分布式阻塞队列还可以再容纳任务的任务标识或任务对象,则可以接收任务请求,并将接收到的任务请求中包括的待处理的一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中;相反的,若确定分布式阻塞队列无法再容纳任务的任务标识或任务对象,则执行下述S303:
S303、若分布式阻塞队列无法再容纳任务的任务标识或任务对象,停止接收任务请求,直至分布式阻塞队列中有任务被处理,且分布式阻塞队列可再容纳任务的任务标识或任务对象。
在该种场景中,若确定分布式阻塞队列无法再容纳任务的任务标识或任务对象,此时即使接收到任务请求,也无法将接收到的任务请求中包括的待处理的一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,因此,可以先停止接收线程池生产者发送的任务请求,直至分布式阻塞队列中有任务被处理,且分布式阻塞队列可再容纳任务的任务标识或任务对象时,则可以执行S201接收任务请求,并将接收到的任务请求中包括的待处理的一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中,从而实现对分布式阻塞队列的有效管理。
进一步,基于上述图3所示的实施例中,在根据分布式阻塞队列当前的队列长度,判断分布式阻塞队列可再容纳任务的任务标识或任务对象之后,还可以进一步根据分布式阻塞队列是否可再容纳任务的任务标识或任务对象,对线程池中线程的数量进行管理。在对线程池中线程的数量进行管理时,可以根据分布式阻塞队列是否可再容纳任务的任务标识或任务对象,分为两种不同的管理规则。
在一种管理规则中,当分布式阻塞队列可再容纳任务的任务标识或任务对象时,第三方集群服务器可以接收每一个节点设备上报的线程池中线程的状态信息,状态信息为空闲状态或者忙碌状态,即第三方集群服务器可以获取到每一个节点设备上报的线程池中线程的状态信息,若线程池中存在状态信息为空闲状态的第一线程,且第一线程的空闲时长大于预设阈值时,销毁第一线程。
示例的,预设阈值可以为20分钟,也可以为21分钟,当然,也可以为19分钟,具体可以根据实际需要进行设置,在此,对于预设阈值的取值,本发明实施例不做进一步地限制。
可以看出,在该种管理规则中,在分布式阻塞队列可再容纳任务的任务标识或任务对象的场景下,当线程池中存在状态信息为空闲状态的第一线程,且第一线程的空闲时长大于预设阈值时,可以销毁该第一线程,以释放该第一线程占用的网络链接资源和内存资源,从而降低网络链接资源和内存资源的占用率。可以看出,通过销毁该第一线程,其目的在于减少线程池中的无用线程的数量,但是在减少线程池中的无用线程的数量时,不能无限制地减少,而是当减少到线程数量的下限值时,就不能再继续减少线程池中的线程的数量。其中,线程数量的下限值可以根据实际需要进行设置,在此,对于线程数量的下限值的取值,本发明实施例不做进一步地限制。
在另一种管理规则中,当分布式阻塞队列无法再容纳任务的任务标识或任务对象时,第三方集群服务器可以接收每一个节点设备上报的线程池中线程的状态信息,状态信息为空闲状态或者忙碌状态,即第三方集群服务器可以获取到每一个节点设备上报的线程池中线程的状态信息,并在接收到新的任务请求时,基于线程池中每一个线程的状态信息,判断线程池中每一个线程的状态信息是否均为忙碌状态,若线程池中每一个线程的状态信息均为忙碌状态,则向每一个节点设备发送指示信息,指示信息用于指示每一个节点设备在线程池中增加新的线程。
可以看出,在该种管理规则中,在分布式阻塞队列无法再容纳任务的任务标识或任务对象的场景下,当接收到新的任务请求,且线程池中每一个线程的状态信息均为忙碌状态时,则向每一个节点设备发送指示信息,以通过指示信息指示每一个节点设备在线程池中增加新的线程。可以看出,通过指示信息指示每一个节点设备在线程池中增加新的线程,其目的在于增加线程池中的线程的数量,以通过增加的线程处理任务。但是在增加线程池中的线程的数量时,不能无限制地增加,而是当增加到线程数量的上限值时,就不能再继续增加线程池中的线程的数量。同样的,线程数量的上限值可以根据实际需要进行设置,在此,对于线程数量的上限值的取值,本发明实施例不做进一步地限制。
图4为本发明实施例提供的一种任务的处理装置40的结构示意图,应用于分布式任务调度服务,分布式任务调度服务用于调度多个节点设备的线程池,每一个节点设备的线程池中均包括多个线程,示例的,请参见图4所示,该任务的处理装置40可以包括:
接收单元401,用于接收任务请求;任务请求中包括待处理的一个或者多个任务的任务标识或任务对象。
处理单元402,用于将一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中。
发送单元403,用于在接收数据请求时,将分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程,以通过目标线程处理目标任务。
可选的,处理单元402,还用于检测分布式阻塞队列当前的队列长度;并根据当前的队列长度,确定分布式阻塞队列可再容纳任务的任务标识或任务对象。
可选的,接收单元401,还用于在分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;状态信息为空闲状态或者忙碌状态。
处理单元402,还用于若线程池中存在状态信息为空闲状态的第一线程,且第一线程的空闲时长大于预设阈值时,销毁第一线程。
可选的,接收单元401,还用于在确定分布式阻塞队列无法再容纳任务的任务标识或任务对象时,停止接收任务请求,直至分布式阻塞队列中有任务被处理,且分布式阻塞队列可再容纳任务的任务标识或任务对象。
可选的,接收单元401,还用于在分布式阻塞队列无法再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;状态信息为空闲状态或者忙碌状态。
发送单元403,还用于在接收到新的任务请求时,若线程池中每一个线程的状态信息均为忙碌状态,则向每一个节点设备发送指示信息,指示信息用于指示每一个节点设备在线程池中增加新的线程。
可选的,发送单元403,具体用于将序列化逻辑处理后的目标任务的任务标识或任务对象发送给多个节点设备的线程池中最先抢占任务的目标线程。
本发明实施例所示的任务的处理装置40,可以执行上述任一附图所示的实施例中任务的处理方法的技术方案,其实现原理以及有益效果与任务的处理方法的实现原理及有益效果类似,此处不再进行赘述。
图5为本发明实施例提供的一种集群服务器50的结构示意图,示例的,请参见图5所示,该集群服务器50可以包括存储器501和处理器502。
存储器501,用于存储计算机程序。
处理器502,用于读取存储器501存储的计算机程序,并根据所述存储器501中的计算机程序执行上述任一实施例所示的任务的处理方法。
可选地,存储器501既可以是独立的,也可以跟处理器502集成在一起。当存储器501是独立于处理器502之外的器件时,集群服务器50还可以包括:总线,用于连接存储器501和处理器502。
可选地,本实施例还包括:通信接口,该通信接口可以通过总线与处理器502连接。处理器502可以控制通信接口来实现上述集群服务器50的接收和发送的功能。
本发明实施例所示的集群服务器50,可以执行上述任一附图所示的实施例中任务的处理方法的技术方案,其实现原理以及有益效果与任务的处理方法的实现原理及有益效果类似,此处不再进行赘述。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,执行如上述任一实施例所述的任务的处理方法,其实现原理以及有益效果与任务的处理方法的实现原理及有益效果类似,此处不再进行赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所展示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元展示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机节点设备(可以是个人计算机,服务器,或者网络节点设备等)或处理器(英文:processor)执行本发明各个实施例方法的部分步骤。
应理解的是,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital SignalProcessor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部节点设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本发明附图中的总线并不限定仅有一根总线或一种类型的总线。
上述计算机可读存储介质可以是由任何类型的易失性或非易失性存储节点设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种任务的处理方法,其特征在于,应用于第三方集群服务器,所述第三方集群服务器上安装有分布式任务调度系统,所述分布式任务调度系统用于统一调度多个节点设备的线程池,所述多个节点设备中每一个节点设备的线程池中均包括多个线程,在进行分布式任务调度服务时,所述方法包括:
检测所述分布式阻塞队列当前的队列长度;
根据所述当前的队列长度,确定所述分布式阻塞队列可再容纳任务的任务标识或任务对象;
接收任务请求;所述任务请求中包括待处理的一个或者多个任务的任务标识或任务对象;
将所述一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中;
在接收数据请求时,将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,以通过所述目标线程处理所述目标任务。
2.根据权利要求1所述的方法,其特征在于,所述分布式调度系统包括:线程池生产者,所述线程池生产者用于创建任务标识或任务对象,并通过所述任务请求将所述任务标识或所述任务对象发送给所述第三方集群服务器,所述方法还包括:
在所述分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态;
若所述线程池中存在状态信息为空闲状态的第一线程,且所述第一线程的空闲时长大于预设阈值时,销毁所述第一线程。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,停止接收任务请求,直至所述分布式阻塞队列中有任务被处理,且所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态;
在接收到新的任务请求时,若所述线程池中每一个线程的状态信息均为忙碌状态,则向所述每一个节点设备发送指示信息,所述指示信息用于指示所述每一个节点设备在所述线程池中增加新的线程。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,包括:
将序列化逻辑处理后的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程。
6.一种任务的处理装置,其特征在于,应用于第三方集群服务器,所述第三方集群服务器上安装有分布式任务调度系统,所述分布式任务调度系统用于统一调度多个节点设备的线程池,所述多个节点设备中每一个节点设备的线程池中均包括多个线程,在进行分布式任务调度服务时,所述装置包括:
接收单元,用于接收任务请求;所述任务请求中包括待处理的一个或者多个任务的任务标识或任务对象;
处理单元,用于将所述一个或者多个任务的任务标识或任务对象添加在分布式阻塞队列中;
发送单元,用于在接收数据请求时,将所述分布式阻塞队列中最靠前的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程,以通过所述目标线程处理所述目标任务;
所述处理单元,还用于检测所述分布式阻塞队列当前的队列长度;并根据所述当前的队列长度,确定所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
7.根据权利要求6所述的装置,其特征在于,所述分布式调度系统包括:线程池生产者,所述线程池生产者用于创建任务标识或任务对象,并通过所述任务请求将所述任务标识或所述任务对象发送给所述第三方集群服务器;
所述接收单元,还用于在所述分布式阻塞队列可再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态;
所述处理单元,还用于若所述线程池中存在状态信息为空闲状态的第一线程,且所述第一线程的空闲时长大于预设阈值时,销毁所述第一线程。
8.根据权利要求6所述的装置,其特征在于,
所述接收单元,还用于在确定所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,停止接收任务请求,直至所述分布式阻塞队列中有任务被处理,且所述分布式阻塞队列可再容纳任务的任务标识或任务对象。
9.根据权利要求8所述的装置,其特征在于,
所述接收单元,还用于在所述分布式阻塞队列无法再容纳任务的任务标识或任务对象时,接收每一个节点设备上报的线程池中线程的状态信息;所述状态信息为空闲状态或者忙碌状态;
所述发送单元,还用于在接收到新的任务请求时,若所述线程池中每一个线程的状态信息均为忙碌状态,则向所述每一个节点设备发送指示信息,所述指示信息用于指示所述每一个节点设备在所述线程池中增加新的线程。
10.根据权利要求6-9任一项所述的装置,其特征在于,
所述发送单元,具体用于将序列化逻辑处理后的目标任务的任务标识或任务对象发送给所述多个节点设备的线程池中最先抢占任务的目标线程。
11.一种集群服务器,其特征在于,包括存储器和处理器;
存储器,用于存储计算机程序;
处理器,用于读取存储器存储的计算机程序,并根据所述存储器中的计算机程序执行如权利要求1至5任一项所述的任务的处理方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至5任一项所述的任务的处理方法。
CN201911035713.0A 2019-10-29 2019-10-29 任务的处理方法、装置和服务器 Active CN110737534B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911035713.0A CN110737534B (zh) 2019-10-29 2019-10-29 任务的处理方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911035713.0A CN110737534B (zh) 2019-10-29 2019-10-29 任务的处理方法、装置和服务器

Publications (2)

Publication Number Publication Date
CN110737534A CN110737534A (zh) 2020-01-31
CN110737534B true CN110737534B (zh) 2021-05-25

Family

ID=69271840

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911035713.0A Active CN110737534B (zh) 2019-10-29 2019-10-29 任务的处理方法、装置和服务器

Country Status (1)

Country Link
CN (1) CN110737534B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338787B (zh) * 2020-02-04 2023-09-01 浙江大华技术股份有限公司 一种数据处理方法及装置、存储介质、电子装置
CN111352752B (zh) * 2020-03-06 2021-04-20 普迪飞半导体技术(上海)有限公司 半导体测试数据的处理系统、方法、装置与服务器
CN111552546B (zh) * 2020-04-16 2021-07-16 贝壳找房(北京)科技有限公司 一种基于多线程的任务实现方法、装置及存储介质
CN113297304B (zh) * 2020-06-30 2024-03-08 阿里巴巴集团控股有限公司 数据导入系统及方法
CN111813529B (zh) * 2020-07-20 2023-12-12 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质
CN112087512A (zh) * 2020-09-08 2020-12-15 浙江惠瀜网络科技有限公司 一种自动化扩展材料下载任务的方法
CN112099864B (zh) * 2020-09-24 2024-09-10 中国建设银行股份有限公司 一种异步数据的处理方法及装置
CN112817745A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种任务处理方法及装置
CN113806065A (zh) * 2021-01-22 2021-12-17 北京沃东天骏信息技术有限公司 一种数据处理的方法、装置和存储介质
CN113419824A (zh) * 2021-01-25 2021-09-21 阿里巴巴集团控股有限公司 数据处理方法、装置、系统及计算机存储介质
CN113391910A (zh) * 2021-06-29 2021-09-14 未鲲(上海)科技服务有限公司 任务处理方法、装置、计算机设备及存储介质
CN113703939B (zh) * 2021-08-30 2024-06-14 竞技世界(北京)网络技术有限公司 任务调度方法、系统及电子设备
CN114489474B (zh) * 2021-12-01 2024-04-09 湖南麒麟信安科技股份有限公司 一种解决GlusterFS IO阻塞造成文件系统挂起的方法及系统
CN118550675A (zh) * 2024-07-30 2024-08-27 苏州元脑智能科技有限公司 一种业务请求处理方法、系统、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461845A (zh) * 2014-11-17 2015-03-25 中国航天科工集团第二研究院七〇六所 日志采集系统线池自适应方法
CN104793992A (zh) * 2015-04-21 2015-07-22 浙江大学 一种基于任务分解的并行任务处理方法
CN106557363A (zh) * 2016-12-05 2017-04-05 广发证券股份有限公司 一种大数据任务调度的系统以及方法
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质
CN110377406A (zh) * 2019-06-17 2019-10-25 平安银行股份有限公司 一种任务调度方法、装置、存储介质和服务器节点

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7363369B2 (en) * 2003-10-16 2008-04-22 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
CN102360310B (zh) * 2011-09-28 2014-03-26 中国电子科技集团公司第二十八研究所 一种分布式系统环境下的多任务进程监视方法
US9547521B2 (en) * 2014-09-25 2017-01-17 Oracle International Corporation System and method for supporting dynamic thread pool sizing in a distributed data grid
CN110018892A (zh) * 2019-03-12 2019-07-16 平安普惠企业管理有限公司 基于线程资源的任务处理方法及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461845A (zh) * 2014-11-17 2015-03-25 中国航天科工集团第二研究院七〇六所 日志采集系统线池自适应方法
CN104793992A (zh) * 2015-04-21 2015-07-22 浙江大学 一种基于任务分解的并行任务处理方法
CN106557363A (zh) * 2016-12-05 2017-04-05 广发证券股份有限公司 一种大数据任务调度的系统以及方法
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质
CN110377406A (zh) * 2019-06-17 2019-10-25 平安银行股份有限公司 一种任务调度方法、装置、存储介质和服务器节点

Also Published As

Publication number Publication date
CN110737534A (zh) 2020-01-31

Similar Documents

Publication Publication Date Title
CN110737534B (zh) 任务的处理方法、装置和服务器
CN102508716B (zh) 任务控制装置和任务控制方法
US9858115B2 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US9311138B2 (en) System management interrupt handling for multi-core processors
US20150121387A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
CN112395097A (zh) 一种消息处理方法、装置、设备和存储介质
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
CN117573355A (zh) 任务处理方法、装置、电子设备以及存储介质
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
CN115981893A (zh) 消息队列任务处理方法、装置、服务器及存储介质
CN115794446B (zh) 一种消息处理方法、装置、电子设备和存储介质
EP3792757A1 (en) Method, apparatus, device, and storage medium for performing processing task
CN113220495B (zh) 一种进程异常事件处理方法、装置、电子设备及存储介质
CN116048756A (zh) 一种队列调度方法、装置及相关设备
CN101634956A (zh) 多核处理器消息调度方法及调度器
US20170052827A1 (en) Using Multiple Central Processing Unit Cores for Packet Forwarding in Virtualized Networks
US10884733B2 (en) Information processing apparatus, and information processing method
CN104956328A (zh) 一种可重入资源调度方法、设备及系统
CN109491948B (zh) 一种针对固态硬盘双端口的数据处理方法和装置
EP3818665A1 (en) Software switch and method therein
CN117687763B (zh) 高并发数据弱优先处理方法、装置、电子设备及存储介质
CN117938797A (zh) 消息推送方法、装置、电子设备及存储介质
CN115174689A (zh) 边缘节点的访问处理方法和装置
CN115454638A (zh) 多任务执行方法、装置、计算机可读存储介质及电子设备
CN116643855A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee before: Jingdong Digital Technology Holding Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Patentee before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.