CN109032779B - 任务处理方法、装置、计算机设备及可读存储介质 - Google Patents
任务处理方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN109032779B CN109032779B CN201810745788.7A CN201810745788A CN109032779B CN 109032779 B CN109032779 B CN 109032779B CN 201810745788 A CN201810745788 A CN 201810745788A CN 109032779 B CN109032779 B CN 109032779B
- Authority
- CN
- China
- Prior art keywords
- task
- waiting time
- length
- buffer queue
- processed
- 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
Links
Images
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)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明是关于一种任务处理方法、装置、计算机设备及可读存储介质,属于互联网技术领域。所述方法包括:根据任务缓冲队列,确定任务等待时间;当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳;基于当前时间戳和上一时间戳,生成时间差;当时间差大于等于任务等待时间时,生成任务处理速率;按照任务处理速率,处理待处理任务。本发明根据任务等待时间和任务缓冲队列包括的任务的任务数量生成任务处理速率,进而按照任务处理速率,处理待处理任务,使得无需再新建其他的任务处理线程,可以根据待处理任务的个数对当前的存在的任务处理线程的任务处理速率进行调整,避免服务器不稳定,节省了大量的线程资源。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种任务处理方法、装置、计算机设备及可读存储介质。
背景技术
随着互联网技术的普及,越来越多的用户使用依赖于互联网技术工作的终端处理各种各样的项目。对于一个项目来说,该项目可能包括多个互相关联的任务,用户可以基于所持的请求端,向目标端发送携带多个任务的多个任务处理请求,使得目标端开启任务处理线程,基于任务处理线程对接收到的多个任务请求进行处理。
相关技术中,由于目标端实时处理的任务数量是有限,因此,当目标端接收到请求端发送的多个任务处理请求时,如果当前正处于目标端接收任务处理请求的峰值期间,则目标端可以将多个任务处理请求添加到Queue(任务缓冲队列)中,并建立多个线程,采用多个线程处理Queue中包括的全部任务处理请求。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
如果目标端回到低谷期间,也即目标端接收到的任务处理请求的数量下降,一些线程可能不会分配到需要处理的任务,则目标端中便会空闲大量的线程,需要对线程进行销毁,使得目标端需要兼顾线程销毁和任务处理两种操作,导致目标端搭载的系统不稳定,浪费了大量线程资源。
发明内容
为克服相关技术中存在的目标端搭载的系统不稳定,浪费了大量线程资源的问题,本发明提供一种任务处理方法、装置、计算机设备及可读存储介质。
根据本发明实施例的第一方面,提供一种任务处理方法,所述方法包括:
根据任务缓冲队列,确定任务等待时间,所述任务缓冲队列中包括至少一个待处理任务;
当检测到新的待处理任务添加至所述任务缓冲队列中时,获取当前时间戳和上一时间戳,所述当前时间戳为当前所处时间点,所述上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;
基于所述当前时间戳和所述上一时间戳,生成时间差;
当所述时间差大于等于所述任务等待时间时,基于所述任务等待时间和所述任务缓冲队列包括的待处理任务的任务数量生成任务处理速率;
按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
在另一个实施例中,所述根据任务缓冲队列,确定任务等待时间包括:
获取所述任务缓冲队列的队列长度、第一档次、第二档次和第三档次,所述第一档次至少包括第一长度和第一候选等待时间,所述第二档次至少包括第二长度和第二候选等待时间,所述第三档次至少包括第三长度和第三候选等待时间;
如果所述队列长度大于等于所述第一长度,则确定所述第一候选等待时间为所述任务等待时间;
如果所述队列长度小于所述第一长度,则将所述队列长度与所述第二档次进行比对;
如果所述队列长度大于等于所述第二长度,则确定所述第二候选等待时间为所述任务等待时间;
如果所述队列长度小于所述第二长度,则确定所述第三候选等待时间为所述任务等待时间。
在另一个实施例中,所述根据任务缓冲队列,确定任务等待时间之后,所述方法还包括:
将所述任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
在另一个实施例中,所述基于所述当前时间戳和所述上一时间戳,生成时间差之后,所述方法还包括:
当所述时间差小于所述任务等待时间时,确定当前任务处理线程没有处理所述至少一个待处理任务的权限,停止所述当前任务处理线程的当前操作流程。
在另一个实施例中,所述按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务之后,所述方法还包括:
确定所述当前时间戳和所述上一时间戳,将所述上一时间戳的取值更新为所述当前时间戳的取值。
在另一个实施例中,所述方法还包括:
每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
基于所述新的任务等待时间和所述任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
将所述任务处理速率更新为所述新的任务处理速率,按照所述新的任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
根据本发明实施例的第二方面,提供一种任务处理装置,所述装置包括:
确定模块,用于根据任务缓冲队列,确定任务等待时间,所述任务缓冲队列中包括至少一个待处理任务;
获取模块,用于当检测到新的待处理任务添加至所述任务缓冲队列中时,获取当前时间戳和上一时间戳,所述当前时间戳为当前所处时间点,所述上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;
第一生成模块,用于基于所述当前时间戳和所述上一时间戳,生成时间差;
第二生成模块,用于当所述时间差大于等于所述任务等待时间时,基于所述任务等待时间和所述任务缓冲队列包括的待处理任务的任务数量生成任务处理速率;
执行模块,用于按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
在另一个实施例中,所述确定模块包括:
获取子模块,用于获取所述任务缓冲队列的队列长度、第一档次、第二档次和第三档次,所述第一档次至少包括第一长度和第一候选等待时间,所述第二档次至少包括第二长度和第二候选等待时间,所述第三档次至少包括第三长度和第三候选等待时间;
确定子模块,用于如果所述队列长度大于等于所述第一长度,则确定所述第一候选等待时间为所述任务等待时间;
比对子模块,用于如果所述队列长度小于所述第一长度,则将所述队列长度与所述第二档次进行比对;
所述确定子模块,还用于如果所述队列长度大于等于所述第二长度,则确定所述第二候选等待时间为所述任务等待时间;
所述确定子模块,还用于如果所述队列长度小于所述第二长度,则确定所述第三候选等待时间为所述任务等待时间。
在另一个实施例中,所述装置还包括:
同步模块,用于将所述任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
在另一个实施例中,所述装置还包括:
停止模块,用于当所述时间差小于所述任务等待时间时,确定当前任务处理线程没有处理所述至少一个待处理任务的权限,停止所述当前任务处理线程的当前操作流程。
在另一个实施例中,所述装置还包括:
更新模块,用于确定所述当前时间戳和所述上一时间戳,将所述上一时间戳的取值更新为所述当前时间戳的取值。
在另一个实施例中,所述确定模块,还用于每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
所述第二生成模块,还用于基于所述新的任务等待时间和所述任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
所述执行模块,还用于将所述任务处理速率更新为所述新的任务处理速率,按照所述新的任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
根据本发明实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,所述处理器执行所述计算机可执行指令时实现上述第一方面所述的任务处理方法。
根据本发明实施例的第四方面,提供一种可读存储介质,所述可读存储介质上存储有指令,所述指令被处理器执行以完成上述第一方面所述的任务处理方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
根据任务缓冲队列,确定任务等待时间,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,并基于当前时间戳和上一时间戳,生成时间差,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率,进而按照任务处理速率,处理任务缓冲队列中包括的待处理任务,使得无需再新建其他的任务处理线程,可以根据任务缓冲队列中待处理任务的个数对当前的存在的任务处理线程的任务处理速率进行调整,避免服务器不稳定,节省了大量的线程资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种任务处理方法的流程图;
图2A是根据一示例性实施例示出的一种任务处理方法的流程图;
图2B是根据一示例性实施例示出的一种任务处理方法的流程图;
图2C是根据一示例性实施例示出的一种任务处理方法的流程图;
图3A是根据一示例性实施例示出的一种任务处理装置的框图;
图3B是根据一示例性实施例示出的一种任务处理装置的框图;
图3C是根据一示例性实施例示出的一种任务处理装置的框图;
图3D是根据一示例性实施例示出的一种任务处理装置的框图;
图3E是根据一示例性实施例示出的一种任务处理装置的框图;
图4是根据一示例性实施例示出的一种任务处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种任务处理方法的流程图,如图1所示,该方法包括以下步骤。
在步骤101中,根据任务缓冲队列,确定任务等待时间,任务缓冲队列中包括至少一个待处理任务。
在步骤102中,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,当前时间戳为当前所处时间点,上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点。
在步骤103中,基于当前时间戳和上一时间戳,生成时间差。
在步骤104中,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率。
在步骤105中,按照任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
本发明实施例提供的方法,根据任务缓冲队列,确定任务等待时间,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,并基于当前时间戳和上一时间戳,生成时间差,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率,进而按照任务处理速率,处理任务缓冲队列中包括的待处理任务,使得无需再新建其他的任务处理线程,可以根据任务缓冲队列中待处理任务的个数对当前的存在的任务处理线程的任务处理速率进行调整,避免服务器不稳定,节省了大量的线程资源。
在另一个实施例中,根据任务缓冲队列,确定任务等待时间包括:
获取任务缓冲队列的队列长度、第一档次、第二档次和第三档次,第一档次至少包括第一长度和第一候选等待时间,第二档次至少包括第二长度和第二候选等待时间,第三档次至少包括第三长度和第三候选等待时间;
如果队列长度大于等于第一长度,则确定第一候选等待时间为任务等待时间;
如果队列长度小于第一长度,则将队列长度与第二档次进行比对;
如果队列长度大于等于第二长度,则确定第二候选等待时间为任务等待时间;
如果队列长度小于第二长度,则确定第三候选等待时间为任务等待时间。
在另一个实施例中,根据任务缓冲队列,确定任务等待时间之后,方法还包括:
将任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
在另一个实施例中,基于当前时间戳和上一时间戳,生成时间差之后,方法还包括:
当时间差小于任务等待时间时,确定当前任务处理线程没有处理至少一个待处理任务的权限,停止当前任务处理线程的当前操作流程。
在另一个实施例中,按照任务处理速率,处理任务缓冲队列中包括的待处理任务之后,方法还包括:
确定当前时间戳和上一时间戳,将上一时间戳的取值更新为当前时间戳的取值。
在另一个实施例中,方法还包括:
每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
基于新的任务等待时间和任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
将任务处理速率更新为新的任务处理速率,按照新的任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图2A是根据一示例性实施例示出的一种任务处理方法的流程图,如图2A所示,该方法包括以下步骤。
在步骤201中,根据任务缓冲队列,确定任务等待时间。
在本发明实施例中,任务缓冲队列中包括至少一个待处理任务。对于服务器来说,其中部署有多个用于处理任务的任务处理线程,每个任务处理线程处理任务的能力均是固定的,因此,如果服务器接收到的待处理任务过多,则服务器中部署的任务处理线程无法及时完成任务的处理,这样,便可以生成任务缓冲队列,将尚未处理的全部待处理任务添加到任务缓冲队列中。
发明人认识到,对于任务缓冲队列来说,为了更加高效的对任务缓冲队列中的待处理任务进行处理,如果任务缓冲队列的队列长度较长,表示当前接收到的待处理任务的数量较多,当前的多个任务处理线程处理待处理任务较为吃力,这时,便需要设置较短时间的任务等待时间,进而保证多个任务处理线程可以较快的完成待处理任务的处理;如果任务缓冲队列的队列长度较短,表示当前接收到的待处理任务的数量较少,当前的多个任务处理线程可以很高效的完成待处理任务的处理,这时,便可以设置较长时间的任务等待时间。另外,由于任务缓冲队列的长度是不断变化的,因此,发明人认识到,可以根据任务缓冲队列的队列长度,设置任务等待时间,进而在后续根据任务等待时间调整处理任务的任务处理速率,并在后续任务缓冲队列的队列长度发生变化时,对任务等待时间进行调整,实现高效的任务处理,也无需增加新的任务处理线程。其中,参见图2B,可以通过原子性动态调整函数实现,也即执行步骤2011至步骤2016,进而实现根据任务缓冲队列确定任务等待时间。
在步骤2011中,获取任务缓冲队列的队列长度、第一档次、第二档次和第三档次。
在本发明实施例中,第一档次至少包括第一长度和第一候选等待时间,第二档次至少包括第二长度和第二候选等待时间,第三档次至少包括第三长度和第三候选等待时间。由于任务缓冲队列的队列长度不同时,处理任务缓冲队列中包括的待处理任务耗费的时间是不同的,因此,可以为任务缓冲队列分别设置第一档次、第二档次和第三档次,并在后续将任务缓冲队列的长度分别与第一档次、第二档次和第三档次进行比对,进而根据任务缓冲队列的长度为任务缓冲队列设置任务等待时间。
需要说明的是,由于在不同的业务场景中用户发送的任务处理请求中涉及到的任务是不同的,因此,在不同的业务场景中,第一档次、第二档次和第三档次中包括内容的取值也可以是不同的,也即第一档次、第二档次和第三档次可以随着业务场景的变化而变化。例如,如果在场景A中添加到任务缓冲队列中的待处理任务耗费的处理时间相对较长,则在场景A中可将第一档次、第二档次和第三档次中涉及的候选等待时间适当缩短,进而保证任务处理的效率。本发明实施例对具体调整第一档次、第二档次和第三档次的方法不进行具体限定。
在步骤2012中,将队列长度与第一长度进行比对,如果队列长度大于等于第一长度,则执行下述步骤2013;如果队列长度小于第一长度,则执行下述步骤2014。
在本发明实施例中,当获取到任务缓冲队列的队列长度、第一档次、第二档次和第三档次后,便可将队列长度分别与第一档次、第二档次和第三档次包括的候选等待时间进行比对,进而根据任务缓冲队列的队列长度,为该任务缓冲队列设置适用于该队列长度的任务等待时间。
其中,在将队列长度分别与第一档次、第二档次和第三档次包括的候选等待时间进行比对时,可以先将队列长度与第一档次中的第一长度进行比对,如果队列长度大于等于第一长度,则表明当前任务缓冲队列的队列长度满足第一档次的条件,可将第一档次中的第一候选等待时间作为任务缓冲队列本次的任务等待时间,也即执行下述步骤2013;如果队列长度小于第一长度,则表明当前任务缓冲队列的队列长度不满足第一档次的条件,需要继续将队列长度与第二档次中的第二长度进行比对,判断队列长度是否满足第二档次的条件,也即执行下述步骤2014。
在步骤2013中,如果队列长度大于等于第一长度,则确定第一候选等待时间为任务等待时间。
在本发明实施例中,如果队列长度大于等于第一长度,则确定任务缓冲队列当前的队列长度满足第一档次的条件,这样,便可将第一档次中包括的第一候选等待时间作为任务缓冲队列在该队列长度下的任务等待时间。
在步骤2014中,如果队列长度小于第一长度,则将队列长度与第二档次进行比对;如果队列长度大于等于第二长度,则执行下述步骤2015;如果队列长度小于第二长度,则执行下述步骤2016。
在本发明实施例中,如果队列长队小于第一长度,则表示任务缓冲队列的队列长度并不满足第一档次的条件,无法将第一档次中的第一候选等待时间作为任务缓冲队列在该队列长度时的任务等待时间,因此,需要进一步将队列长度与第二档次包括的第二候选等待时间进行比对,从而判断任务缓冲队列的队列长度是否满足第二档次的条件。
其中,如果队列长度大于等于第二长度,则表明当前任务缓冲队列的队列长度满足第二档次的条件,可将第二档次中的第二候选等待时间作为任务缓冲队列本次的任务等待时间,也即执行下述步骤2015;如果队列长度小于第二长度,则表明当前任务缓冲队列的队列长队不满足第二档次的条件,这样,便可将第三档次中的第三候选等待时间作为任务缓冲队列本次的任务等待时间,也即执行下述步骤2016。
在步骤2015中,如果队列长度大于等于第二长度,则确定第二候选等待时间为任务等待时间。
在本发明实施例中,如果队列长度大于等于第二长度,则确定任务缓冲队列当前的队列长度满足第二档次的条件,这样,便可将第二档次中包括的第二候选等候时间作为任务缓冲队列在该队列长度下的任务等待时间。
在步骤2016中,如果队列长度小于第二长度,则确定第三候选等待时间为任务等待时间。
在本发明实施例中,如果队列长度小于第二长度,则确定任务缓冲队列当前的队列长度不满足第二档次的条件,这样,便需要将第三档次包括的第三候选等待时间作为任务缓冲队列在该队列长度下的任务等待时间。
需要说明的是,服务器在确定了任务等待时间后,可以选择当前存在的任务处理线程中的任一任务处理线程,在该任务处理线程中设置任务等待时间。而由于服务器对该任务处理线程进行的任务等待时间的设置对于服务器的CPU(Central Processing Unit,中央处理器)来说是具有原子可见性的,也即当任一任务处理线程的任务等待时间发生变化时,除该任务处理线程外的其他任务处理线程也是可见的,这样,便可将设置后的任务等待时间同步至服务器中当前存在的每一个任务处理线程中。
在步骤202中,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,基于当前时间戳和上一时间戳,生成时间差。
在本发明实施例中,当服务器接收到用户发送的新的待处理任务时,便会将接收到的新的待处理任务添加至任务缓冲队列中。对于服务器中多个任务处理线程中的任一处理线程,由于任务处理线程处理任务的能力是有限的,因此,服务器需要基于任务处理线程中的数据判断任务处理线程是否有权限处理任务缓冲队列中全部的待处理任务。
对于多个任务处理线程中的任一任务处理线程来说,该任务处理线程的时间差也即代表该任务处理线程在处理任务缓冲队列中多个待处理任务需要耗费的时间,如果任务处理线程的时间差大于等于在之前步骤中确定的任务等待时间,则表示该任务处理线程的一次任务处理流程可以完成当前任务缓冲队列中的待处理任务,该任务处理线程具备可以处理当前任务缓冲队列中待处理任务的能力,也即该任务处理线程具备处理当前任务缓冲队列中待处理任务的权限;如果任务处理线程的时间差小于在之前步骤中确定的任务等待时间,则表示该任务处理线程的一次任务处理流程不能完整当前任务缓冲队列中的待处理任务,该任务处理线程不具备可以处理当前任务缓冲队列中待处理任务的能力,也即该任务处理线程不具备处理当前任务缓冲队列中待处理任务的权限。
在生成时间差时,对于多个任务处理线程中的任一任务处理线程,当服务器检测到新的待处理任务已经完成添加到任务缓冲队列中时,便会获取该任务处理线程的当前时间戳和上一时间戳,进而根据当前时间戳和上一时间戳生成时间差,并在后续根据时间差确定该任务处理线程是否具有处理任务缓冲队列中待处理任务的权限。其中,当前时间戳为当前所处时间点,上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;获取到的当前时间戳可以用CurrentMS表示,上一时间戳可以用LastRunMs表示,这样,在生成时间差时,可以采用当前时间戳减去上一时间戳,将得到的差值作为时间差,也即将(CurrentMs-LastRunMs)作为时间差。
在步骤203中,确定当前时间戳和上一时间戳,将上一时间戳的取值更新为当前时间戳的取值。
在本发明实施例中,当生成了时间差后,由于在本次进行权限判断后,后续还会进行权限判断,因此,需要将上一时间戳的取值更新为当前时间戳的取值,进而判断在下一次权限判断时,可以基于下一时间戳与本次进行判断的时间戳对任务处理线程是否具有处理待处理任务的权限。
需要说明的是,步骤203中所述的将上一时间戳的取值更新为当前时间戳的取值的过程可以在生成时间差后执行,也可以在整个操作流程结束,也即下述步骤207执行完毕后执行,本发明实施例对将上一时间戳的取值更新为当前时间戳的取值的时机不进行具体限定。
在步骤204中,将时间差与任务等待时间进行比对,当时间差小于任务等待时间时,执行下述步骤205;当时间差大于等于任务等待时间时,执行下述步骤206。
在本发明实施例中,当确定任务等待时间并生成时间差后,将时间差与任务等待时间进行比对,当时间差小于任务等待时间时,表示该任务处理线程的一次任务处理流程不能完整当前任务缓冲队列中的待处理任务,该任务处理线程不具备可以处理当前任务缓冲队列中待处理任务的能力,也即该任务处理线程不具备处理当前任务缓冲队列中待处理任务的权限,这样,便需要执行下述步骤205;当时间差大于等于任务等待时间时,表示该任务处理线程的一次任务处理流程可以完成当前任务缓冲队列中的待处理任务,该任务处理线程具备可以处理当前任务缓冲队列中待处理任务的能力,也即该任务处理线程具备处理当前任务缓冲队列中待处理任务的权限,这样,便需要执行下述步骤206。
在步骤205中,当时间差小于任务等待时间时,确定当前任务处理线程没有处理至少一个待处理任务的权限,停止当前任务处理线程的当前操作流程。
在本发明实施例中,当时间差小于任务等待时间时,表示当前任务处理线程不具备可以处理当前任务缓冲队列中待处理任务的能力,这样,也即确定当前任务处理线程没有处理至少一个待处理任务的权限,需要停止当前任务处理线程的当前操作流程。在对当前任务处理线程的权限进行判断完成后,服务器便可以重新执行上述步骤202至步骤204中的内容,并继续判断其他的任务处理线程是否具备处理任务缓冲队列中待处理任务的权限。
在步骤206中,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率。
在本发明实施例中,当时间差大于等于任务等待时间时,表示当前任务处理线程具备可以处理当前任务缓冲队列中待处理任务的能力,这样,也即确定当前任务处理线程具有处理至少一个待处理任务的权限,便可以根据任务等待时间和任务缓冲队列包括的待处理任务的任务数量,生成任务处理速率,以便在后续基于任务处理速率对任务缓冲队列中包括的待处理任务进行处理。
其中,在生成任务处理速率时,可以统计任务缓冲队列中当前包括的全部待处理任务的任务数量,将任务数量记为N(N为正整数),计算任务等待时间与N之间的比值,将该比值作为任务处理速率。例如,设统计到的任务数量为10,任务等待时间为30s,则可以计算得到任务处理速率为3s/个。本发明实施例对生成任务处理速率的方式不进行具体限定。
在步骤207中,按照任务处理速率,处理任务缓冲队列中包括的待处理任务。
在本发明实施例中,当生成了任务处理速率后,便可以按照任务处理速率,处理对任务缓冲队列包括的待处理任务。
需要说明的是,由于服务器在进行任务处理的过程中会不断接收到用户发送的待处理任务,且任务缓冲队列中的待处理任务也会被依次处理,因此,使得任务缓冲队列中包括的待处理任务的数量是不断变化的,导致任务缓冲队列的队列长度也是不断变化的,这样,便需要根据任务缓冲队列的队列长度对任务处理速率进行调整。其中,服务器中可以设置预设时间周期,每隔预设时间周期便重复执行上述步骤201中根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;随后,重复执行上述步骤206中基于新的任务等待时间和任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率的过程;最后,将任务处理速率更新为新的任务处理速率,按照新的任务处理速率,执行对任务缓冲队列中任务的处理操作。
在实际应用的过程中,服务器在执行任务处理的流程时,可以参照图2C中的流程进行任务处理。
参见图2C,服务器根据任务缓冲队列确定任务等待时间,当服务器接收到新的待处理任务时,将新的待处理任务添加至任务缓冲队列中,并获取时间差,判断时间差是否大于任务等待时间,如果时间差小于任务等待时间,则结束当前的操作流程;如果时间差大于任务等待时间,则确定任务处理速率,按照任务处理速率进行任务处理。每隔预设时间周期,获取时间差和任务等待时间,生成新的任务处理速率,如果新的任务处理速率与当前的任务处理速率不同,则按照新的任务处理速率进行任务处理;如果新的任务处理速率与当前的任务处理速率一致,则继续按照当前任务处理速率进行任务处理,结束当前流程。
本发明实施例提供的方法,根据任务缓冲队列,确定任务等待时间,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,并基于当前时间戳和上一时间戳,生成时间差,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率,进而按照任务处理速率,处理任务缓冲队列中包括的待处理任务,使得无需再新建其他的任务处理线程,可以根据任务缓冲队列中待处理任务的个数对当前的存在的任务处理线程的任务处理速率进行调整,避免服务器不稳定,节省了大量的线程资源。
图3A是根据一示例性实施例示出的一种任务处理装置的框图。参照图3A,该装置包括确定模块301,获取模块302,第一生成模块303,第二生成模块304和执行模块305。
该确定模块301,用于根据任务缓冲队列,确定任务等待时间,任务缓冲队列中包括至少一个待处理任务;
该获取模块302,用于当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,当前时间戳为当前所处时间点,上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;
该第一生成模块303,用于基于当前时间戳和上一时间戳,生成时间差;
该第二生成模块304,用于当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率;
该执行模块305,用于按照任务处理速率,处理任务缓冲队列中包括的待处理任务。
本发明实施例提供的装置,根据任务缓冲队列,确定任务等待时间,当检测到新的待处理任务添加至任务缓冲队列中时,获取当前时间戳和上一时间戳,并基于当前时间戳和上一时间戳,生成时间差,当时间差大于等于任务等待时间时,基于任务等待时间和任务缓冲队列包括的待处理任务的任务数量生成任务处理速率,进而按照任务处理速率,处理任务缓冲队列中包括的待处理任务,使得无需再新建其他的任务处理线程,可以根据任务缓冲队列中待处理任务的个数对当前的存在的任务处理线程的任务处理速率进行调整,避免服务器不稳定,节省了大量的线程资源。
在另一个实施例中,参见图3B,该确定模块301,包括获取子模块3011,确定子模块3012和比对子模块3013。
该获取子模块3011,用于获取任务缓冲队列的队列长度、第一档次、第二档次和第三档次,第一档次至少包括第一长度和第一候选等待时间,第二档次至少包括第二长度和第二候选等待时间,第三档次至少包括第三长度和第三候选等待时间;
该确定子模块3012,用于如果队列长度大于等于第一长度,则确定第一候选等待时间为任务等待时间;
该比对子模块3013,用于如果队列长度小于第一长度,则将队列长度与第二档次进行比对;
该确定子模块3012,还用于如果队列长度大于等于第二长度,则确定第二候选等待时间为任务等待时间;
该确定子模块3012,还用于如果队列长度小于第二长度,则确定第三候选等待时间为任务等待时间。
在另一个实施例中,参见图3C,该装置还包括同步模块306。
该同步模块306,用于将任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
在另一个实施例中,参见图3D,该装置还包括停止模块307。
该停止模块307,用于当时间差小于任务等待时间时,确定当前任务处理线程没有处理至少一个待处理任务的权限,停止当前任务处理线程的当前操作流程。
在另一个实施例中,参见图3E,该装置还包括更新模块308。
该更新模块308,用于确定当前时间戳和上一时间戳,将上一时间戳的取值更新为当前时间戳的取值。
在另一个实施例中,该确定模块301,还用于每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
该第二生成模块304,还用于基于新的任务等待时间和任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
该执行模块305,还用于将任务处理速率更新为新的任务处理速率,按照新的任务处理速率,处理任务缓冲队列中包括的待处理任务。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种任务处理的装置400的框图。例如,装置400可以被提供为一服务器。参照图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述任务处理方法。
装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(I/O)接口458。装置400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,所述处理器执行所述计算机可执行指令时实现上述的任务处理方法。
一种可读存储介质,当所述存储介质中的指令由任务处理装置的处理器执行时,使得任务处理装置能够执行上述任务处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (12)
1.一种任务处理方法,其特征在于,所述方法包括:
根据任务缓冲队列,确定任务等待时间,所述任务缓冲队列中包括至少一个待处理任务;
当检测到新的待处理任务添加至所述任务缓冲队列中时,获取当前时间戳和上一时间戳,所述当前时间戳为当前所处时间点,所述上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;
基于所述当前时间戳和所述上一时间戳,生成时间差;
当所述时间差大于等于所述任务等待时间时,基于所述任务等待时间和所述任务缓冲队列包括的待处理任务的任务数量,生成任务处理速率;
按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务;
所述根据任务缓冲队列,确定任务等待时间包括:
获取所述任务缓冲队列的队列长度、第一档次、第二档次和第三档次,所述第一档次至少包括第一长度和第一候选等待时间,所述第二档次至少包括第二长度和第二候选等待时间,所述第三档次至少包括第三长度和第三候选等待时间;
如果所述队列长度大于等于所述第一长度,则确定所述第一候选等待时间为所述任务等待时间;
如果所述队列长度小于所述第一长度,则将所述队列长度与所述第二档次进行比对;
如果所述队列长度大于等于所述第二长度,则确定所述第二候选等待时间为所述任务等待时间;
如果所述队列长度小于所述第二长度,则确定所述第三候选等待时间为所述任务等待时间。
2.根据权利要求1所述的方法,其特征在于,所述根据任务缓冲队列,确定任务等待时间之后,所述方法还包括:
将所述任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
3.根据权利要求1所述的方法,其特征在于,所述基于所述当前时间戳和所述上一时间戳,生成时间差之后,所述方法还包括:
当所述时间差小于所述任务等待时间时,确定当前任务处理线程没有处理所述至少一个待处理任务的权限,停止所述当前任务处理线程的当前操作流程。
4.根据权利要求1所述的方法,其特征在于,所述按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务之后,所述方法还包括:
确定所述当前时间戳和所述上一时间戳,将所述上一时间戳的取值更新为所述当前时间戳的取值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
基于所述新的任务等待时间和所述任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
将所述任务处理速率更新为所述新的任务处理速率,按照所述新的任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
6.一种任务处理装置,其特征在于,所述装置包括:
确定模块,用于根据任务缓冲队列,确定任务等待时间,所述任务缓冲队列中包括至少一个待处理任务;
获取模块,用于当检测到新的待处理任务添加至所述任务缓冲队列中时,获取当前时间戳和上一时间戳,所述当前时间戳为当前所处时间点,所述上一时间戳为上一次确定处理待处理任务的任务处理速率的时间点;
第一生成模块,用于基于所述当前时间戳和所述上一时间戳,生成时间差;
第二生成模块,用于当所述时间差大于等于所述任务等待时间时,基于所述任务等待时间和所述任务缓冲队列包括的待处理任务的任务数量生成任务处理速率;
执行模块,用于按照所述任务处理速率,处理所述任务缓冲队列中包括的待处理任务,
所述确定模块,还用于获取所述任务缓冲队列的队列长度、第一档次、第二档次和第三档次,所述第一档次至少包括第一长度和第一候选等待时间,所述第二档次至少包括第二长度和第二候选等待时间,所述第三档次至少包括第三长度和第三候选等待时间;如果所述队列长度大于等于所述第一长度,则确定所述第一候选等待时间为所述任务等待时间;如果所述队列长度小于所述第一长度,则将所述队列长度与所述第二档次进行比对;如果所述队列长度大于等于所述第二长度,则确定所述第二候选等待时间为所述任务等待时间;如果所述队列长度小于所述第二长度,则确定所述第三候选等待时间为所述任务等待时间。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
同步模块,用于将所述任务等待时间同步至除当前任务处理线程外的其他任务处理线程。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
停止模块,用于当所述时间差小于所述任务等待时间时,确定当前任务处理线程没有处理所述至少一个待处理任务的权限,停止所述当前任务处理线程的当前操作流程。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
更新模块,用于确定所述当前时间戳和所述上一时间戳,将所述上一时间戳的取值更新为所述当前时间戳的取值。
10.根据权利要求6所述的装置,其特征在于,所述确定模块,还用于每隔预设时间周期,重复执行根据任务缓冲队列确定任务等待时间的过程,生成新的任务等待时间;
所述第二生成模块,还用于基于所述新的任务等待时间和所述任务缓冲队列的当前包括任务的新任务数据量,生成新的任务处理速率;
所述执行模块,还用于将所述任务处理速率更新为所述新的任务处理速率,按照所述新的任务处理速率,处理所述任务缓冲队列中包括的待处理任务。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,其特征在于,所述处理器执行所述计算机可执行指令时实现权利要求1-5任一项所述的任务处理方法。
12.一种可读存储介质,其特征在于,所述可读存储介质上存储有指令,所述指令被处理器执行以完成权利要求1-5任一项所述的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810745788.7A CN109032779B (zh) | 2018-07-09 | 2018-07-09 | 任务处理方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810745788.7A CN109032779B (zh) | 2018-07-09 | 2018-07-09 | 任务处理方法、装置、计算机设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032779A CN109032779A (zh) | 2018-12-18 |
CN109032779B true CN109032779B (zh) | 2020-11-24 |
Family
ID=64641209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810745788.7A Active CN109032779B (zh) | 2018-07-09 | 2018-07-09 | 任务处理方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032779B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684063B (zh) * | 2018-12-26 | 2021-03-26 | 亚信科技(中国)有限公司 | 一种任务调度方法和装置 |
CN113326170B (zh) * | 2021-06-09 | 2023-06-09 | 深圳前海微众银行股份有限公司 | 任务延迟风险检测方法、电子设备及存储介质 |
CN113835854A (zh) * | 2021-09-06 | 2021-12-24 | 中国银联股份有限公司 | 一种任务处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101103336A (zh) * | 2005-01-13 | 2008-01-09 | 皇家飞利浦电子股份有限公司 | 数据处理系统和任务调度的方法 |
CN102279731A (zh) * | 2011-08-01 | 2011-12-14 | 深圳市极限网络科技有限公司 | 一种实现单步执行的方法 |
CN102955549A (zh) * | 2011-08-29 | 2013-03-06 | 华为技术有限公司 | 一种多核cpu的电源管理方法、系统及cpu |
CN106155796A (zh) * | 2016-07-25 | 2016-11-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于队列的线程调度方法及装置 |
CN107608770A (zh) * | 2017-08-08 | 2018-01-19 | 西安交大捷普网络科技有限公司 | 多任务并发执行处理方法 |
CN107621972A (zh) * | 2016-07-15 | 2018-01-23 | 中兴通讯股份有限公司 | 大数据任务动态管理方法、装置及服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10268513B2 (en) * | 2016-12-23 | 2019-04-23 | Nice Ltd. | Computing resource allocation optimization |
-
2018
- 2018-07-09 CN CN201810745788.7A patent/CN109032779B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101103336A (zh) * | 2005-01-13 | 2008-01-09 | 皇家飞利浦电子股份有限公司 | 数据处理系统和任务调度的方法 |
CN102279731A (zh) * | 2011-08-01 | 2011-12-14 | 深圳市极限网络科技有限公司 | 一种实现单步执行的方法 |
CN102955549A (zh) * | 2011-08-29 | 2013-03-06 | 华为技术有限公司 | 一种多核cpu的电源管理方法、系统及cpu |
CN107621972A (zh) * | 2016-07-15 | 2018-01-23 | 中兴通讯股份有限公司 | 大数据任务动态管理方法、装置及服务器 |
CN106155796A (zh) * | 2016-07-25 | 2016-11-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于队列的线程调度方法及装置 |
CN107608770A (zh) * | 2017-08-08 | 2018-01-19 | 西安交大捷普网络科技有限公司 | 多任务并发执行处理方法 |
Non-Patent Citations (1)
Title |
---|
《异步任务处理系统的研究与构建》;王滨;《万方数据》;20160603;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109032779A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933534B (zh) | 一种数据同步方法和装置 | |
CN109032779B (zh) | 任务处理方法、装置、计算机设备及可读存储介质 | |
US9940162B2 (en) | Realtime optimization of compute infrastructure in a virtualized environment | |
CN107391243B (zh) | 线程任务处理设备、装置及方法 | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
CN108108463B (zh) | 基于时间片调度的同步任务处理方法及装置 | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
CN108121511B (zh) | 一种分布式边缘存储系统中的数据处理方法、装置及设备 | |
US20010010052A1 (en) | Method for controlling multithreading | |
CN111367630A (zh) | 一种基于云计算的多用户多优先级的分布式协同处理方法 | |
CN106874100B (zh) | 计算资源分配方法及装置 | |
CN109254913B (zh) | 设备共享方法、装置、电子设备及计算机存储介质 | |
CN113986534A (zh) | 任务调度方法、装置、计算机设备和计算机可读存储介质 | |
CN107704310B (zh) | 一种实现容器集群管理的方法、装置和设备 | |
CN110569252A (zh) | 一种数据处理系统及方法 | |
CN106664259B (zh) | 虚拟网络功能扩容的方法和装置 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
US20150365474A1 (en) | Computer-readable recording medium, task assignment method, and task assignment apparatus | |
CN116107710A (zh) | 用于处理离线渲染任务的方法、装置、设备和介质 | |
CN115617497A (zh) | 线程处理方法、调度组件、监测组件、服务器和存储介质 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN114816709A (zh) | 任务调度方法、装置、服务器及可读存储介质 | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN112099956A (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 |