CN114265679A - 数据处理方法、装置和服务器 - Google Patents
数据处理方法、装置和服务器 Download PDFInfo
- Publication number
- CN114265679A CN114265679A CN202111598784.9A CN202111598784A CN114265679A CN 114265679 A CN114265679 A CN 114265679A CN 202111598784 A CN202111598784 A CN 202111598784A CN 114265679 A CN114265679 A CN 114265679A
- Authority
- CN
- China
- Prior art keywords
- task
- target
- data processing
- processing
- threads
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 569
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 21
- 238000012216 screening Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种数据处理方法、装置和服务器。该方法包括:服务器可以从任务队列中获取排在第一个的数据处理任务,并将该数据处理任务作为目标任务。服务器可以从历史信息中获取与目标任务相关的任务处理记录,并生成处理记录集合。服务器可以确定该目标任务对应地目标时长。服务器可以根据该处理记录集合和目标时长,确定在目标时长内处理目标任务所需的目标线程数。服务器可以根据计算得到目标线程数,从线程池的空闲线程中获取目标线程数个线程,并将该目标线程数个线程分配给目标任务,以实现该目标任务的执行。本申请的方法,提高了数据处理的效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据处理方法、装置和服务器。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,数据处理技术也不例外。在金融行业中,对于数据处理的安全性、实时性通常具有更高的要求。因此,面对海量的数据,传统的集中式数据处理已经无法满足市场对于处理效率的需求,分布式数据处理逐渐成为主流。
目前,分布式数据处理主要通过将原先集中在单线程上处理的庞大计算任务,分成多个子任务。这些子任务可以被均衡地分派给线程池中的各个线程,从而实现数据的分布式处理,提高数据处理效率。
然而,现有技术中,无法根据子任务的优先级和时限要求,对其线程资源进行调整,存在数据处理效率低的问题。
发明内容
本申请提供一种数据处理方法、装置和服务器,用以解决数据处理效率低的问题。
第一方面,本申请提供一种数据处理方法,包括:
从任务队列中获取所述任务队列中的第一个待处理的数据处理任务,并将所述数据处理任务作为目标任务;所述任务队列中包括根据优先值排序的至少一个数据处理任务;
根据历史信息、目标时长和所述目标任务,确定在目标时长内处理所述目标任务所需的目标线程数;
从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务,以使所述目标任务使用所述目标线程数个线程执行数据处理。
可选地,所述根据历史信息、目标时长和所述目标任务,确定在目标时长内处理所述目标任务所需的目标线程数,包括:
从历史信息中获取所述目标任务的处理记录集合,所述处理记录集合中包括至少一任务处理记录,每一所述任务处理记录中包括历史线程数和历史处理时长;
根据所述处理记录集合中的全部历史线程数,计算平均历史线程数;根据所述处理记录集合中的全部历史处理时长,计算平均历史处理时长;
根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和预设权重,确定所述目标任务的所述目标线程数。
可选地,所述从历史信息中获取所述目标任务的处理记录集合,包括:
根据所述目标任务的任务名称,从所述历史信息中检索任务名称相同的任务处理记录;
根据当前所处时间段,从所述任务处理记录中筛选时间段相同的任务处理记录;
获取筛选得到的每一所述任务处理记录的处理参数,并添加到处理记录集合中。
可选地,所述根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和根据所述目标任务的优先级确定的预设权重,确定所述目标任务的所述目标线程数,包括:
根据所述平均历史线程数和所述平均历史处理时长的乘积的倒数,确定所述目标任务的平均处理速度;
根据所述平均处理速度和所述目标时长的乘积的倒数,确定所述目标任务的第一目标线程数;
根据所述第一目标线程数和所述预设权重的乘积,确定所述目标任务的所述目标线程数。
可选地,所述从任务队列中获取所述任务队列中的第一个待处理的数据处理任务之前,所述方法还包括:
根据预设周期,使用所述任务队列中每一所述数据处理任务的优先级和接收时间,计算当前周期内,每一所述数据处理任务的优先值;
根据每一所述数据处理任务的所述优先值和所述接收时间,对所述任务队列中的所述数据处理任务进行重新排序;
其中,所述优先值的计算公式为:
其中,P为优先级,Q为接收时间,Se为优先值。
可选地,当出现新增数据处理任务时,所述方法包括:
根据所述新增数据处理任务的优先级和接收时间,计算所述新增数据处理任务的优先值;
根据所述新增数据处理任务的所述优先值和所述接收时间,更新所述任务队列。
可选地,当出现新增数据处理任务,且所述新增数据处理任务为紧急任务时,所述方法,包括:
将所述新增数据处理任务从所述任务队列的头部插入所述任务队列。
可选地,所述从空闲线程中获取所述目标线程数个线程之前,所述方法还包括:
当所述空闲线程的数量小于所述目标任务所需的所述目标线程数时进入等待状态,直至空闲线程的数量大于等于所述目标任务所需的所述目标线程数后,从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务。
第二方面,本申请提供一种数据处理装置,包括:
获取模块,用于从任务队列中获取所述任务队列中的第一个待处理的数据处理任务,并将所述数据处理任务作为目标任务;所述任务队列中包括根据优先值排序的至少一个数据处理任务;
处理模块,用于根据历史信息、目标时长和所述目标任务,确定在目标时长内处理所述目标任务所需的目标线程数;从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务,以使所述目标任务使用所述目标线程数个线程执行数据处理。
可选地,所述处理模块,具体用于:
从历史信息中获取所述目标任务的处理记录集合,所述处理记录集合中包括至少一任务处理记录,每一所述任务处理记录中包括历史线程数和历史处理时长;
根据所述处理记录集合中的全部历史线程数,计算平均历史线程数;根据所述处理记录集合中的全部历史处理时长,计算平均历史处理时长;
根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和预设权重,确定所述目标任务的所述目标线程数。
可选地,所述处理模块,具体用于:
根据所述目标任务的任务名称,从所述历史信息中检索任务名称相同的任务处理记录;
根据当前所处时间段,从所述任务处理记录中筛选时间段相同的任务处理记录;
获取筛选得到的每一所述任务处理记录的处理参数,并添加到处理记录集合中。
可选地,所述根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和根据所述目标任务的优先级确定的预设权重,确定所述目标任务的所述目标线程数,包括:
根据所述平均历史线程数和所述平均历史处理时长的乘积的倒数,确定所述目标任务的平均处理速度;
根据所述平均处理速度和所述目标时长的乘积的倒数,确定所述目标任务的第一目标线程数;
根据所述第一目标线程数和所述预设权重的乘积,确定所述目标任务的所述目标线程数。
可选地,所述处理模块,还用于:
根据预设周期,使用所述任务队列中每一所述数据处理任务的优先级和接收时间,计算当前周期内,每一所述数据处理任务的优先值;
根据每一所述数据处理任务的所述优先值和所述接收时间,对所述任务队列中的所述数据处理任务进行重新排序;
其中,所述优先值的计算公式为:
其中,P为优先级,Q为接收时间,Se为优先值。
可选地,当出现新增数据处理任务时,所述处理模块,还用于:
根据所述新增数据处理任务的优先级和接收时间,计算所述新增数据处理任务的优先值;
根据所述新增数据处理任务的所述优先值和所述接收时间,更新所述任务队列。
可选地,当出现新增数据处理任务,且所述新增数据处理任务为紧急任务时,所述处理模块,还用于:
将所述新增数据处理任务从所述任务队列的头部插入所述任务队列。
可选地,所述处理模块,还用于:
当所述空闲线程的数量小于所述目标任务所需的所述目标线程数时进入等待状态,直至空闲线程的数量大于等于所述目标任务所需的所述目标线程数后,从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务。
第三方面,本申请提供一种服务器,包括:存储器和处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的数据处理方法。
第四方面,本申请提供一种可读存储介质,可读存储介质中存储有计算机程序,当服务器的至少一个处理器执行该计算机程序时,服务器执行第一方面及第一方面任一种可能的设计中的数据处理方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当服务器的至少一个处理器执行该计算机程序时,服务器执行第一方面及第一方面任一种可能的设计中的数据处理方法。
本申请提供的数据处理方法,通过从任务队列中获取排在第一个的数据处理任务;将该数据处理任务作为下述步骤中的目标任务;从历史信息中获取与目标任务相关的任务处理记录,并生成处理记录集合;在确定目标任务后,确定该目标任务对应地目标时长;根据该处理记录集合确定该目标任务的处理速度;根据该目标任务的处理速度和目标时长,确定在目标时长内处理目标任务所需的目标线程数;根据计算得到目标线程数,从线程池的空闲线程中获取目标线程数个线程;将该目标线程数个线程分配给目标任务;该目标线程数个线程将融合执行该目标任务的手段,实现提高数据处理效率效果。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种服务器中线程分配的场景示意图;
图2为本申请一实施例提供的一种数据处理方法的流程图;
图3为本申请一实施例提供的一种数据处理方法的流程图;
图4为本申请一实施例提供的一种优先级计算流程图;
图5为本申请一实施例提供的一种数据处理方法的流程图;
图6为本申请一实施例提供的一种数据处理装置的结构示意图
图7为本申请一实施例提供的一种服务器的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。
应当进一步理解,术语“包含”、“包括”表明存在的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。
此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
在金融技术领域中,数据量正处于急剧膨胀状态。面对海量的数据,传统的集中式数据处理已经无法满足市场对于处理效率的需求,分布式数据处理逐渐成为主流。数据处理可以包括对数据的采集、存储、检索、加工、变换和传输等操作。根据数据处理的处理设备的结构方式、工作方式等特性的不同,以及待处理数据在时间、空间上的分布方式的不同,可以对应使用不同的数据处理方式对数据进行处理。针对不同的数据处理方式,可以对应于不同的硬件设备和软件代码。
其中,分布式数据处理就是利用分布式计算技术对数据进行处理。通过该分布式计算技术,一个计算机中的资源可以被分配到多个线程中。这些线程可以存储在线程池中。每一个线程被分配的资源数量相同。当服务器获取到一个数据处理任务后,服务器可以将该数据处理任务划分为多个子任务。服务器可以将这些子任务分配给服务器中的线程进行处理。例如,当一个服务器的线程池中包括10个线程,且在该服务器需要处理100条下载任务时,该服务器每次可以将一个下载任务分配给一个线程进行处理。当该线程处理完该任务后,服务器可以为该线程分配另一个任务。例如,M={M1、M2、……、Mn}可以表示该线程池M中包括n个线程。A={a1、a2、……an}可以表示任务集合中包括的n个待处理的数据处理任务。该n个待处理的数据处理任务可以被对应分配给n个线程进行处理,该分配结果可以表示为:
M→A={(M1→a1)、(M2→a2)、…、(Mn→an)}
其中,“→”表示处理关系,(M1→a1)表示使用线程M1处理数据处理任务a1。该分布式处理方法中,将全部待处理数据划分为了n个数据处理任务。其中,每一数据处理任务由一个线程进行处理。该分布式数据处理方式,通过多线程实现了任务的并行处理,提高了处理效率,避免在数据急剧膨胀的情况下,数据无法及时处理导致的数据堵塞。
然而,目前的虽然但是,目前的分布式数据处理对于一些需要优先处理的任务,无法对这些任务进行优先分配,存在任务队列一旦固定无法修改的问题。并且,目前的分布式数据处理对于一些有处理时限要求的任务,无法对处理这些任务的线程进行资源调整,存在无法满足时限要求的问题。因此,现有技术中,无法根据子任务的优先级和时限要求,对其线程资源进行调整,存在数据处理效率低的问题。
针对上述问题,本申请提出了一种数据处理方法。本申请中,服务器可以获取待处理的数据,并将该待处理的数据划分为多个数据处理任务。服务器可以根据这些数据处理任务的优先级和接收时间,确定每一数据处理任务的优先值。服务器可以根据这些数据处理任务的优先值,对这些数据处理任务进行排序,并得到任务队列。该任务队列中的数据处理任务可以根据优先值排序。其中,优先值大的数据处理任务需要被优先处理。
服务器可以从任务队列中获取任务队列中的第一个待处理的数据处理任务。服务器可以将该数据处理任务作为目标任务。服务器可以根据该目标任务的任务名称和执行时间段,从历史信息中查询该目标任务在历史信息中的处理记录集合。该处理记录集合中可以包括至少一次任务处理记录。每一任务处理记录中可以包括该次数据处理的历史线程数和历史处理时长。服务器可以根据该处理记录集合中的全部历史线程数和历史处理时长,计算得到平均历史线程数和平均历史处理时长。服务器可以根据该平均历史线程数和平均历史处理时长、目标时长和预设权重,确定在目标时长内处理该目标任务所需的目标线程数。
服务器可以从线程池的空闲线程中获取目标线程数个线程。服务器可以将该目标线程数个线程分配给目标任务。该目标线程数个线程将分布式执行该目标任务。例如,当一个目标任务为下载任务,该目标线程数为10时,服务器可以将该下载任务平均划分为10个子任务。服务器可以将该10个子任务分配给该10个线程。该10个线程将在目标时长内完成该下载任务的执行。
本申请创建的任务队列为优先级队列。本申请通过使用该优先级队列,实现了根据优先值依次处理这些数据处理任务。此外,本申请还通过计算数据处理任务的在目标时长内处理该数据处理任务所需的目标线程数,动态分配每一数据处理任务的目标线程数,在确保优先级的基础上,提高了每一数据处理任务的处理效率,确保了每一数据处理任务的时限要求。每一数据处理任务的处理时限的控制,提高了每一数据处理任务的使用效率,提高处理后数据的利用率。当优先值最高的数据处理任务作为目标任务被分配线程后,优先值第二的数据处理任务将作为新的目标任务从剩余线程中选择目标线程数个线程为其分配。本申请所使用的方法,在确保优先处理优先值最高的数据处理任务的同时,其余数据处理任务也在进行处理,提高了数据处理的整体效率,提高了该服务器在数据处理过程中的实用性。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1示出了本申请一实施例提供的一种服务器中线程分配的场景示意图。如图所示,服务器可以根据从任务队列的队列头部获取优先值最高的数据处理任务1。当服务器从任务队列中获取该数据处理任务1后,该数据处理任务1将被从任务队列中删除。当该数据处理任务1被从该任务队列中删除后,原来排在第二位的数据处理任务2将成为该任务队列中排在第一个的任务。服务器可以预估在第一目标时长内处理该数据处理任务1需要的第一目标线程数。例如,当在第一目标时长内处理该数据处理任务1需要的第一目标线程数为3时,服务器可以将线程池空闲的线程1、线程2和线程3分配给数据处理任务1。线程1、线程2和线程3分布式执行数据处理任务1。当数据处理任务1完成处理后,该线程1、线程2和线程3将被释放。
在完成数据处理任务1的分配后,服务器可以继续从任务队列的头部获取优先值最高的数据处理任务2。当服务器从任务队列中获取该数据处理任务2后,该数据处理任务2将被从任务队列中删除。服务器可以预估在第二目标时长内处理该数据处理任务2需要的第二目标线程数。数据处理任务2的第二目标时长与数据处理任务1的第一目标时长为不同时长。例如,当在第二目标时长内处理该数据处理任务2需要的第二目标线程数为2时,由于线程池中的线程1、线程2和线程3已经被使用,因此,可以将空闲的线程4和线程5分配给数据处理任务2。
本申请中,以服务器为执行主体,执行如下实施例的数据处理方法。具体地,该执行主体可以为服务器的硬件装置,或者为服务器中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。
图2示出了本申请一实施例提供的一种数据处理方法的流程图。在图1所示实施例的基础上,如图2所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:
S101、从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值排序的至少一个数据处理任务。
本实施例中,任务队列中可以包括至少一个待处理的数据处理任务。在该任务队列中,这些数据处理任务可以根据优先值排序。当优先值越大代表该数据处理任务越重要时,该任务队列中的数据处理任务可以根据该优先值从大到小排列。当优先值越小代表该数据处理任务越重要时,该任务队列中的数据处理任务可以根据该优先值从小到大排列。服务器可以从任务队列中获取排在第一个的数据处理任务。服务器可以将该数据处理任务作为下述步骤中的目标任务。该目标任务为该任务队列中优先级最高的数据处理任务。
S102、根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。
本实施例中,服务器还可以在确定目标任务后,根据该目标任务的任务名称或者任务标签,从历史信息中筛选出该目标任务的任务处理记录,并得到处理记录集合。服务器可以在确定目标任务后,确定该目标任务对应地目标时长。服务器可以根据该处理记录集合确定该目标任务的处理速度。服务器可以根据该目标任务的处理速度和目标时长,确定在目标时长内处理目标任务所需的目标线程数。
一种实现方式中,服务器可以根据预设时长确定目标时长。该预设时长可以在生成该数据处理任务时对应生成。该预设时长可以为用户根据经验直接预设。例如,数据处理任务a1用于统计一个小时内的网站A的访问次数,则该数据处理任务a1完成该统计任务固定需要1小时。用户可以根据该经验,直接预设该数据处理任务a1的目标时长为1小时。又如,数据处理任务a3需要使用数据处理任务a1产生的数据A和数据处理任务a2产生的数据B。为了提高任务间的衔接效率,用户可以根据该经验,直接预设该数据处理任务a2的目标时长可以为1小时。
另一种实现方式中,服务器可以根据处理记录集合,确定该目标任务的目标时长。例如,服务器可以将处理记录集合中的平均历史处理时长作为目标时长。又如,服务器可以将处理记录集合中的最小历史处理时长作为目标时长。
再一种实现方式中,服务器还可以根据线程池中的剩余线程,确定该目标任务的目标时长
一种示例中,服务器计算该目标任务在目标时长内处理完成所需的目标线程数的该过程具体可以包括如下步骤:
步骤1、服务器从历史信息中获取目标任务的处理记录集合,处理记录集合中包括至少一任务处理记录,每一任务处理记录中包括历史线程数和历史处理时长。
本步骤中,服务器可以从历史信息中获取与目标任务相关的任务处理记录,并生成处理记录集合。其中,每一任务处理记录中可以包括历史线程数和历史处理时长。这些任务处理记录将被添加到任务处理集合中。
一种实现方式中,服务器可以根据目标任务的任务名称或者任务标签,从历史信息中检索得到任务名称相同或者任务标签相同的任务处理记录。在该过程中,服务器可以遍历历史数据的数据处理日志。服务器可以根据历史数据的数据处理日志中记录的任务名称或者任务标签,确定在该历史数据中,该数据处理任务的任务处理记录。
另一种实现方式中,由于服务器在各个时间段的业务量是不同的,因此,在业务波峰或者业务波谷时段,服务器处理同一数据处理任务时所花费的时间可能不同。该波峰或者波谷的时段还可以被更加详细切分为多个时间段。例如,可以将一天划分为24个时间段,每一个小时为一个时间段。又如,可以将一天划分为凌晨(0点-6点)、上午(6点-12点)、下午(12点-18点)、夜间(18点-24点)四个时间段。服务器在根据目标任务的任务名称或者任务标签,从历史信息中筛选得到任务处理记录的基础上,服务器还可以根据当前所处时间段,从这些任务处理记录中筛选出时间段相同的任务处理记录。
步骤2、服务器根据处理记录集合中的全部历史线程数,计算平均历史线程数。服务器根据处理记录集合中的全部历史处理时长,计算平均历史处理时长。
本步骤中,处理记录集合可以表示为:
Xai={(N1,T1)、(N2,T2)、......、(Nq,Tq)}
其中,Xai为目标任务ai的处理记录集合。ai为目标任务,为第i个数据处理任务。(N1,T1)为历史信息中一次任务处理记录中使用了N1个线程,历时T1完成了该目标任务的处理。q表示该服务器从历史信息中检索得到q个任务处理记录。
服务器根据该处理记录集合中的历史线程数计算平均历史线程数。该计算公式可以表示为:
其中,Navg为平均历史线程数。j为正整数,且j=1,2,…,q。Nj表示该任务处理记录为该处理记录集合中的第j个任务处理记录的历史线程数。
服务器根据该处理记录集合中的历史处理时长计算平均历史处理时长。该计算公式可以表示为:
其中,Tavg为平均历史处理时长。Tj表示该任务处理记录为该处理记录集合中的第j个任务处理记录的历史处理时长。
步骤3、服务器根据目标时长、平均历史线程数、平均历史处理时长,确定目标任务的目标线程数。
本步骤中,服务器可以根据平均历史线程数和平均历史处理时长计算得到该目标任务的平均处理速度,该计算公式可以表示为:
其中,Vi为目标任务ai的平均处理速度。ai为目标任务的任务量。
假设目标时长为Ti,则该目标任务的第一目标线程数Ni′的计算公式可以表示为:
一种实现方式中,该第一目标线程数可以作为目标线程数。
服务器还可以根据目标任务的优先级确定预设权重。该预设权重的设定可以使目标任务在优先级高的时候,分配到更多的线程。当目标任务的优先级低的时候,该预设权重的设置可以实现该目标任务线程数的适当减少。使用该预设权重和该第一目标线程数,计算目标线程数的公式可以为:
其中,Wi为目标任务ai的权重。例如,当优先级包括必须、应该、可以和不必要四个等级时,该四个等级对应的权重可为必须=1.5、应该=1.0、可以=0.8、不必要=0.5。例如,当目标任务的优先级为“必须”时,假设计算得到的第一目标线程数为10,则该目标任务实际被分配的目标线程数为15。即,当服务器使用10个线程处理该目标任务时,该目标任务可以在目标时长内完成。但是,由于该目标任务的优先级为“必须”,因此,为了保证该目标任务的顺利完成,服务器可以为该目标任务分配15个线程。又如,当目标任务的优先级为“不必要”时,假设计算得到的第一目标线程数为10,则该目标任务实际被分配的目标线程数为5。即,当服务器使用10个线程处理该目标任务时,该目标任务可以在目标时长内完成。但是,由于该目标任务的优先级为“不必要”,因此,服务器可以使用更长的时间来处理该目标任务,并且将更多的线程分配给其他任务使用。因为,服务器可以为该目标任务分配5个线程,以使该任务被执行。
S103、从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。
本实施例中,服务器可以根据计算得到目标线程数,从线程池的空闲线程中获取目标线程数个线程。服务器可以将该目标线程数个线程分配给目标任务。该目标线程数个线程将融合执行该目标任务。
一种实现方式中,该服务器可以将该目标线程数个线程的资源融合为一个目标线程。该目标线程将用于执行该目标任务。由于执行该目标任务的资源数量增加,因此,完成处理该目标任务的时间会相应缩短。即服务器可以在目标时长内完成该目标任务。
另一种实现方式中,该服务器可以将该目标任务平均分成目标线程数份子任务。服务器可以将该目标线程数份子任务分配给目标线程数个线程。由于该目标线程数个线程并行的执行了该目标任务,因此,该目标任务的执行效率将得到提高。服务器将在目标时长内完成该目标任务的执行。
一种实习方式中,服务器可以通过线程调度器完成线程池中线程的调度。其中,线程调度器是一个常驻内存的程序。该程序可以通过不断地对线程池中线程队列进行扫描,实现对线程的调度。同时,该线程调度器还可以通过对线程池中线程队列的扫描,实现对线程的条件调度。例如,将空闲时间较长的线程优先分配。
一种实现方式中,当服务器完成目标任务的线程的分配后,服务器可以任务队列中获取下一目标任务。服务器可以对下一目标任务进行目标线程数的计算和线程的分配。在该过程中,由于该服务器的线程池中的线程总量是固定的,因此,服务器可以根据任务队列中的排列的数据处理任务,将线程资源有限分配给优先值高的数据处理任务。
本申请提供的数据处理方法,服务器可以从任务队列中获取排在第一个的数据处理任务。服务器可以将该数据处理任务作为下述步骤中的目标任务。服务器可以从历史信息中获取与目标任务相关的任务处理记录,并生成处理记录集合。服务器可以在确定目标任务后,确定该目标任务对应地目标时长。服务器可以根据该处理记录集合确定该目标任务的处理速度。服务器可以根据该目标任务的处理速度和目标时长,确定在目标时长内处理目标任务所需的目标线程数。服务器可以根据计算得到目标线程数,从线程池的空闲线程中获取目标线程数个线程。服务器可以将该目标线程数个线程分配给目标任务。该目标线程数个线程将融合执行该目标任务。本申请中,通过根据数据处理任务的优先值,为优先值高的数据处理任务优先分配至少一个线程资源,提高了数据处理任务的处理效率,提高了数据处理的效率。
图3示出了本申请一实施例提供的一种数据处理方法的流程图。在图1和图2所示实施例的基础上,如图3所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:
S201、根据预设周期,使用任务队列中每一数据处理任务的优先级和接收时间,计算当前周期内,每一数据处理任务的优先值。
本实施例中,每一数据处理任务的优先值为根据该数据处理任务的优先级和接收时间计算得到的。因此,随着时间的变化,不同的数据处理任务的优先值可能会发生变化。与之对应的,当服务器中待处理的数据处理任务的优先值发生变化后,根据这些任务的优先值进行排序得到的任务队列中各个数据处理任务的排列顺序也可能发生变化。为了确保在各个数据处理任务的优先值发生变化后,这些数据处理任务任旧可以根据优先值从大到小逐一执行,服务器可以根据预设周期,周期性计算每一数据处理任务的优先值。
一种示例中,优先值的计算过程具体可以包括如下步骤:
步骤1、服务器获取全部待处理的数据处理任务的优先级。服务器根据预设的优先级表,确定每一数据处理任务的优先级对应的数值。
本步骤中,服务器中每一待处理的数据处理任务都对应有一个优先级。这些数据处理任务的优先级一共可以分为四个等级。这四个等级分别为:必须、应该、可以、不必要。其中,“必须”为必须优先处理的数据。优先级为“必须”的数据处理任务处理得到的数据通常为当下需要利用的数据。“应该”为仅次于“必须”的优先级。“应该”对应的数据处理任务处理得到的数据通常为当下不太紧急,但是后续一定需要利用的数据。“可以”为次于“应该”的优先级。“可以”对应的数据处理任务处理得到的数据通常为当下不需要利用,但后续需要利用的数据。“不必要”为次于“可以”的优先级。“不必要”对应的数据处理任务处理得到的数据通常为当下一定不需,且后续也不太紧急需要使用到的数据。
服务器中可以预先存储有预设的优先级表。该优先级表中可以包括每一优先级分别对应于一个数值。该数据将用于后续计算。例如,该优先级表中的映射关系可以包括必须=1.5、应该=1.0、可以=0.8、不必要=0.5。
一种实现方式中,服务器可以根据该优先级,确定每一数据处理任务的优先值。即,当一个数据处理任务的优先级为必须时,该数据处理任务的优先值可以为1.5。其后,在步骤S202中,服务器可以根据每一数据处理任务的该优先值和接收时间,排序得到任务队列。
步骤2、服务器获取全部待处理的数据处理任务的接收时间。服务器根据预设的接收时间表,确定每一数据处理任务的接收时间对应的数值。
本步骤中,服务器中每一待处理的数据处理任务都对应有一个接收时间。该接收时间即为服务器接收该数据处理任务的时间。通常接收时间越早说明该数据处理任务在任务队列中的滞留时长越长。而为了确保较早接收的数据处理任务处理得到的数据可以被使用,越早接收的数据处理任务的优先值应对应提高,以提高该数据处理任务被处理的可能性。
服务器可以根据每一数据处理任务的接收时间,确定该数据处理任务从接收到当前时刻的时间差。该时间差即为该数据处理任务已经在任务队列中滞留的时长。服务器中可以预先存储有预设的接收时间表。该接收时间表中可以包括该滞留时长与数值之间的映射关系。例如,当一个数据处理任务的滞留时长大于6小时时,其对应的数值可以为10;当一个数据处理任务的滞留时长在3-6小时时,其对应的数值可以为5;当一个数据处理任务的滞留时长在1-3小时时,其对应的数值可以为1;当一个数据处理任务的滞留时长小于1小时时,其对应的数值可以为0。
一种实现方式中,服务器可以根据该接收时间,确定每一数据处理任务的优先值。例如,当一个数据处理任务的滞留时长大于6小时时,该数据处理任务的优先值可以为10。其后,在步骤S202中,服务器可以根据每一数据处理任务的该优先值和接收时间,排序得到任务队列。
步骤3、服务器可以根据优先级对应的数值和接收时间对应的数值,计算得到优先值。
本步骤中,服务器可以根据优先级对应的数值和接收时间对应的数值计算得到优先值。
服务器可以根据优先级对应的数值P和接收时间对应的数值Q计算得到中间值。该中间值的计算公式可以为:
S=P+Q
其中,接收时间对应的数值Q可以为接收时刻到当前时刻的时间差。其中,优先级对应的数值可以根据预设优先级表确定。例如该优先级表中的映射关系可以包括必须=1.5、应该=1.0、可以=0.8、不必要=0.5。
一种实现方式中,该中间值可以作为计算得到的优先值。该优先值越大说明紧急度越高。
服务器可以根据该中间值和接收时间对应的数值Q,计算得到优先值。该计算公式可以为:
其中,S为优先级对应的数值与接收时间对应的数值之和。Se为优先值。该优先值Se越小表示数据处理任务越紧急。
S202、根据每一数据处理任务的优先值和接收时间,对任务队列中的数据处理任务进行重新排序。
本实施例中,服务器可以对当前时刻全部待处理的数据处理任务进行排序。服务器可以根据该优先值对数据处理任务进行排序。在优先值的排序过程中,如果存在多个数据处理任务的优先值相同,则服务器可以根据这些数据处理任务的接收时间进行排序。该排序为根据接收时间从早到晚排序。例如,服务器中包括5个数据处理任务,其中,数据处理任务1至数据处理任务5的优先值分别为2、4、4、4、6,接收时间为18:00、16:00、15:25、15:45、15:55。则服务器根据优先值从小到大排序后的顺序可以确定第一个为数据处理任务1,最后一个为数据处理任务5。数据处理任务2、数据处理任3和数据处理任务4的优先值相同,因此,服务器需要根据其接收时间进行排序。根据接收时间从早到晚,可以确定数据处理任务2至数据处理任务4的排列顺序为数据处理任3、数据处理任务4和数据处理任务2。因此,最终确定的排列顺序可以为数据处理任务1、数据处理任3、数据处理任务4、数据处理任务2和数据处理任务5。
S203、从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值从大到小排序的至少一个数据处理任务。
S204、根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。
S205、从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。
其中,步骤S203至步骤S205与图2实施例中的步骤S101至步骤S103实现方式类似,本实施例此处不再赘述。
S206、当空闲线程的数量小于目标任务所需的目标线程数时进入等待状态,直至空闲线程的数量大于等于目标任务所需的目标线程数后,从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务。
本实施例中,上述步骤S203至步骤S205是一个循环执行的过程。例如,如图5所示,当服务器在步骤S203中获取该任务队列中的第一个数据处理任务后,确定该数据处理任务为目标任务。该数据处理任务将从该任务队列中删除。服务器可以根据步骤S204和步骤S205,从空闲线程中获取目标线程数个线程分配给该目标任务。服务器将使用该目标线程数个线程执行该目标任务。当服务器完成该目标任务的线程分配后,该服务器可以生成完成信号。服务器将根据该完成信号,返回执行步骤S203,从该任务队列中获取该任务队列当前的第一个数据处理任务,并将该数据处理任务作为新的目标任务。服务器将从空闲线程中获取目标线程数个线程分配给该新的目标任务。
服务器将循环上述过程,直至服务器在计算得到一个目标任务的目标线程数后,服务器中的空闲线程的数量小于目标线程数。当该服务器中的空闲线程的数量小于目标线程数时,如果服务器将这些空闲线程分配给该目标任务,该目标任务将无法在目标时长内完成该目标任务的执行。因此,服务器将进入等待状态。当已经处于执行状态的数据处理任务完成该任务的执行后,该数据处理任务对应的线程将被释放。这些被释放的线程将成为空闲线程。当服务器中的空闲线程增加时,服务器可以重新比较空闲线程的数量与目标线程数。如果空闲线程的数量仍旧小于目标线程数,则服务器将继续等待。如果空闲线程的数量大于等于目标线程数,则服务器可以从这些空闲线程中获取目标线程数个线程分配给目标任务。
一种示例中,服务器可以预估使用当前时刻的空闲线程处理该目标任务的第一处理时长。服务器可以预估等待空闲线程增加后,增加后的空闲线程处理该目标任务的第二处理时长。服务器可以比较该第一处理时长和第二处理时长,确定该目标任务的执行方案。该执行方案可以包括直接使用当前时刻的空闲线程处理该目标任务。或者,等待空闲线程增加后使用增加后的空闲线程处理该目标任务。
本示例中,服务器的执行过程可以包括如下步骤:
步骤1、服务器可以获取当前时刻的空闲线程的数量。服务器可以根据该空闲线程的数量和该目标任务的处理速度,确定该目标任务的第一处理时长。该第一处理时长的计算公式可以为:
其中,TP1i为该目标任务ai的第一处理时长。Vi为目标任务ai的平均处理速度。Tavg为目标任务ai的平均历史处理时长。Navg为目标任务ai的平均历史线程数。NP1i为分配给目标任务ai的线程的数量。在上述公式中,NP1i=NP,NP为当前时刻的空闲线程的数量。
步骤2、服务器可以获取正在处理的数据处理任务的目标时长和已经处理的时长。服务器可以根据这些数据处理任务的目标时长和已经处理的时长,确定这些目标任务还需要处理的时长。服务器可以确定其中,还需要处理的时长最短的数据处理任务为即将完成的数据处理任务。服务器可以确定该即将完成的数据处理任务的还需要处理的时长为等待时长。服务器可以确定该即将完成的数据处理任务所使用的线程数为新增线程数。服务器可以额根据该等待时长、新增线程数,确定第二处理时长。
一种实现方式中,该第二处理时长的计算公式可以为:
其中,TP2i为该目标任务ai的第二处理时长。Vi为目标任务ai的平均处理速度。Tavg为目标任务ai的平均历史处理时长。Navg为目标任务ai的平均历史线程数。NP2i为分配给目标任务ai的线程的数量。在上述公式中,NP2i=NP+Nk,NP为当前时刻的空闲线程的数量,Nk为新增线程数。其中,Nk表示数据处理任务ak的目标线程数。其中,TWk为等待时长。
另一种实现方式中,如果增加后的空闲线程数仍旧大于目标线程数,则第二处理时长的计算公式可以为:
TP2i=Ti+TWk
其中,Ti为该目标任务ai的目标时长。
步骤3、服务器可以比较第一处理时长和第二处理时长。如果第一处理时长小于等于第二处理时长,则说明如果服务器直接将使用当前时刻的空闲线程处理该目标任务,服务器可以更快的完成该目标任务的处理。如果第一处理时长大于第二处理时长,则说明如果服务器等待即将完成的数据处理任务释放新增线程数个线程后,该目标任务的处理效率将更高。因此,服务器可以等待空闲线程增加后使用增加后的空闲线程处理该目标任务。
一种实现方式,如果增加了即将完成的数据处理任务的新增线程数后,该增加后的空闲线程数量任旧小于目标线程数,则服务器可以继续预估等在第二个即将完成的数据处理任务释放第二批新增线程数后,其第三处理时长是否优于第一处理时长或者第二处理时长。
另一种示例中,服务器可以根据目标时长、当前时刻的空闲线程数、即将完成的数据处理任务的新增线程数和等待时长,预估目标线程数和分配给该目标任务的每一线程的子任务量。
本示例中,当该目标线程数个线程中包括当前时刻的空闲线程和一部分即将完成的数据处理任务的一部分线程时,完成该目标任务的公式可以表示为:
NP×Ti×Vi+(Ni-NP)×(Ti-TWk)×Vi=ai
其中,NP为当前时刻的空闲线程的数量。Ti为目标时长。Vi为目标任务ai的平均处理速度。ai为目标任务的任务量。Ni为目标线程数。TWk为等待时长。
根据上述公式,可以推导得到目标线程数Ni的计算公式为:
例如,当Ni=16时,该16个线程中可以包括6个当前时刻的空闲线程和10个即将完成的数据处理任务的线程。即将完成的数据处理任务的该10个线程将在该即将完成的数据处理任务完成后被分配给该目标任务。
该目标线程数个线程被分配到的子任务的任务量的计算公式可以为:
aip=Ti×Vi
aik=(Ti-TWk)×Vi
其中,aip为每一当前时刻的空闲线程的子任务量。aik为每一即将完成的数据处理任务的线程的子任务量。例如,当目标任务的任务量为ai=100,平均处理速度Vi=1,目标时长Ti=10,等待时长TWk=6,Ni=16,NP=6时,aip=10,aik=4。服务器可以将100的任务量分成6个任务量为10的子任务和10个任务量为4的子任务。服务器将在当前时刻将6个任务量为10的子任务分配给当前时刻的空闲线程。服务器将在即将完成的数据处理任务完成后,从该数据处理任务释放的线程中选择10个线程,分配任务量为4的子任务。
再一种示例中,如果使用上述方式无法在目标时长内完成该目标任务,则服务器可以确定当即将完成的数据处理任务完成后,该数据处理任务释放的线程均分配给目标任务,并计算得到该目标任务的第四处理时长作为变量进行计算,其公式可以为:
NP×TP4i×Vi+Nk×(TP4i-TWk)×Vi=ai
其中,TP4i为第四处理时长。
根据上述公式,可以推导得到第四处理时长的计算公式为:
分配到这些线程的任务量的计算公式可以为:
aip=TP4i×Vi
aik=(TP4i-TWk)×Vi
其中,aip为每一当前时刻的空闲线程的子任务量。aik为每一即将完成的数据处理任务的线程的子任务量。
本申请提供的数据处理方法,服务器根据预设周期,使用任务队列中每一数据处理任务的优先级和接收时间,计算当前周期内,每一数据处理任务的优先值。服务器可以根据该优先值对数据处理任务进行排序。如果存在多个数据处理任务的优先值相同,则服务器可以根据这些数据处理任务的接收时间进行排序。服务器可以从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值从大到小排序的至少一个数据处理任务。服务器可以根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。服务器可以从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。当空闲线程的数量小于目标任务所需的目标线程数时,服务器可以进入等待状态,直至空闲线程的数量大于等于目标任务所需的目标线程数后,从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务。本申请中,通过上述优先值计算方法实现了对每一数据处理任务的优先值的计算,提高了优先值的使用效果,确保紧急任务可以被优先执行。此外,通过上述空闲线程小于目标线程数的情况的处理,提高了目标任务的处理效率。
图5示出了本申请一实施例提供的一种数据处理方法的流程图。在图1至图4实施例的基础上,如图5所示,以服务器为执行主体,本实施例的方法可以包括如下步骤:
S301、当出现新增数据处理任务时,根据新增数据处理任务的优先级和接收时间,计算新增数据处理任务的优先值。根据新增数据处理任务的优先值和接收时间,更新任务队列。
本实施例中,当服务器接收到新增数据处理任务时,服务可以获取该新增数据处理任务的优先级和接收时间。服务器可以根据该优先级和接收时间,计算该新增数据处理任务的优先值。服务器可以根据该新增数据处理任务的优先值和接收时间,将该新增数据处理任务插入任务队列中。例如,当任务队列中包括5个数据处理任务,且排序后的数据处理任务1至数据处理任务5的优先值分别为1、3、3、5、5;接收时间分别为11:00、12:00、13:00、14:00、15:00。假设新增数据处理任务的优先值为3,接收时间为17:05时,该新增数据处理任务可以被插入数据处理任务3和数据处理任务4之间。即,更新后的任务队列的优先值分别为1、3、3、3、5、5;接收时间分别为11:00、12:00、13:00、17:05、14:00、15:00。其中,该新增数据处理任务的接收时间即为当前时刻。
一种示例中,当出现新增数据处理任务,且新增数据处理任务为紧急任务时,将新增数据处理任务从任务队列的头部插入任务队列。
本示例中,考虑到部分数据处理任务为的紧急程度非常高,属于紧急任务。紧急任务通常有及时性要求,需要立即执行。为了满足这些紧急任务的的及时性需求,服务器可以在接收紧急任务后,直接将该紧急任务插入任务队列的头部。如果在该紧急任务未被执行期间,该任务队列需要重新排序,则该紧急任务将不参与重新排序。该紧急任务将保持在该任务队列的头部的位置,从而确保该数据处理任务可以在出现空闲线程后,优先将这些空闲线程分配给该数据处理任务。
S302、从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值从大到小排序的至少一个数据处理任务。
S303、根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。
S304、从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。
其中,步骤S302至S304与图2实施例中的步骤S101至S103实现方式类似,本实施例此处不再赘述。
本申请提供的数据处理方法,当服务器接收到新增数据处理任务时,服务可以获取该新增数据处理任务的优先级和接收时间。服务器可以根据该优先级和接收时间,计算该新增数据处理任务的优先值。服务器可以根据该新增数据处理任务的优先值和接收时间,将该新增数据处理任务插入任务队列中。服务器可以从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值从大到小排序的至少一个数据处理任务。服务器可以根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。服务器可以从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。本申请中,通过将新增数据处理任务插入该任务队列,使该新增数据处理任务可以根据其优先值进行排序,使新增数据处理任务可以继续保持其优先值进行处理,提高数据处理任务的处理效率。
图6示出了本申请一实施例提供的一种数据处理装置的结构示意图,如图6所示,本实施例的数据处理装置10用于实现上述任一方法实施例中对应于服务器的操作,本实施例的数据处理装置10包括:
获取模块11,用于从任务队列中获取任务队列中的第一个待处理的数据处理任务,并将数据处理任务作为目标任务。任务队列中包括根据优先值从大到小排序的至少一个数据处理任务。
处理模块12,用于根据历史信息、目标时长和目标任务,确定在目标时长内处理目标任务所需的目标线程数。从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务,以使目标任务使用目标线程数个线程执行数据处理。
一种示例中,处理模块12,具体用于从历史信息中获取目标任务的处理记录集合,处理记录集合中包括至少一任务处理记录,每一任务处理记录中包括历史线程数和历史处理时长。根据处理记录集合中的全部历史线程数,计算平均历史线程数。根据处理记录集合中的全部历史处理时长,计算平均历史处理时长。根据目标时长、平均历史线程数、平均历史处理时长和预设权重,确定目标任务的目标线程数。
一种示例中,处理模块12,具体用于根据目标任务的任务名称,从历史信息中检索任务名称相同的任务处理记录。根据当前所处时间段,从任务处理记录中筛选时间段相同的任务处理记录。获取筛选得到的每一任务处理记录的处理参数,并添加到处理记录集合中。
一种示例中,处理模块12,具体用于根据平均历史线程数和平均历史处理时长的乘积的倒数,确定目标任务的平均处理速度。根据平均处理速度和目标时长的乘积的倒数,确定目标任务的第一目标线程数。根据第一目标线程数和预设权重的乘积,确定目标任务的目标线程数。
一种示例中,处理模块12,还用于根据预设周期,使用任务队列中每一数据处理任务的优先级和接收时间,计算当前周期内,每一数据处理任务的优先值。根据每一数据处理任务的优先值和接收时间,对任务队列中的数据处理任务进行重新排序。
其中,优先值的计算公式为:
其中,P为优先级,Q为接收时间,Se为优先值。
一种示例中,当出现新增数据处理任务时,处理模块12,还用于根据新增数据处理任务的优先级和接收时间,计算新增数据处理任务的优先值。根据新增数据处理任务的优先值和接收时间,对更新任务队列。
一种示例中,当出现新增数据处理任务,且新增数据处理任务为紧急任务时,处理模块12,还用于将新增数据处理任务从任务队列的头部插入任务队列。
一种示例中,处理模块12,还用于当空闲线程的数量小于目标任务所需的目标线程数时进入等待状态,直至空闲线程的数量大于等于目标任务所需的目标线程数后,从空闲线程中获取目标线程数个线程,并将目标线程数个线程分配给目标任务。
本申请实施例提供的数据处理装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
图7示出了本申请实施例提供的一种服务器的硬件结构示意图。如图7所示,该服务器20,用于实现上述任一方法实施例中对应于服务器的操作,本实施例的服务器20可以包括:存储器21,处理器22。
存储器21,用于存储计算机程序。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器22,用于执行存储器存储的计算机程序,以实现上述实施例中的数据处理方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
当存储器21是独立于处理器22之外的器件时,服务器20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本实施例提供的服务器可用于执行上述的数据处理方法,其实现方式和技术效果类似,本实施例此处不再赘述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits,ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-OnlyMemory,ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本申请可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种数据处理方法,其特征在于,所述方法包括:
从任务队列中获取所述任务队列中的第一个待处理的数据处理任务,并将所述数据处理任务作为目标任务;所述任务队列中包括根据优先值排序的至少一个数据处理任务;
根据历史信息、目标时长和所述目标任务,确定在目标时长内处理所述目标任务所需的目标线程数;
从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务,以使所述目标任务使用所述目标线程数个线程执行数据处理。
2.根据权利要求1所述的方法,其特征在于,所述根据历史信息、目标时长和所述目标任务,确定在目标时长内处理所述目标任务所需的目标线程数,包括:
从历史信息中获取所述目标任务的处理记录集合,所述处理记录集合中包括至少一任务处理记录,每一所述任务处理记录中包括历史线程数和历史处理时长;
根据所述处理记录集合中的全部历史线程数,计算平均历史线程数;根据所述处理记录集合中的全部历史处理时长,计算平均历史处理时长;
根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和根据所述目标任务的优先级确定的预设权重,确定所述目标任务的所述目标线程数。
3.根据权利要求2所述的方法,其特征在于,所述从历史信息中获取所述目标任务的处理记录集合,包括以下至少一种:
根据所述目标任务的任务名称,从所述历史信息中检索任务名称相同的任务处理记录,并添加到处理记录集合中;
根据所述目标任务的任务名称、当前所处时间段,从所述任务处理记录中筛选时间段相同的任务处理记录,并添加到处理记录集合中。
4.根据权利要求2所述的方法,其特征在于,所述根据所述目标时长、所述平均历史线程数、所述平均历史处理时长和根据所述目标任务的优先级确定的预设权重,确定所述目标任务的所述目标线程数,包括:
根据所述平均历史线程数和所述平均历史处理时长的乘积的倒数,确定所述目标任务的平均处理速度;
根据所述平均处理速度和所述目标时长的乘积的倒数,确定所述目标任务的第一目标线程数;
根据所述第一目标线程数和所述预设权重的乘积,确定所述目标任务的所述目标线程数。
6.根据权利要求1-4中任一项所述的方法,其特征在于,当出现新增数据处理任务时,所述方法包括:
根据所述新增数据处理任务的优先级和接收时间,计算所述新增数据处理任务的优先值;
根据所述新增数据处理任务的所述优先值和所述接收时间,更新所述任务队列。
7.根据权利要求1-4中任一项所述的方法,其特征在于,当出现新增数据处理任务,且所述新增数据处理任务为紧急任务时,所述方法,包括:
将所述新增数据处理任务从所述任务队列的头部插入所述任务队列。
8.根据权利要求1-4中任一项所述的方法,其特征在于,所述从空闲线程中获取所述目标线程数个线程之前,所述方法还包括:
当所述空闲线程的数量小于所述目标任务所需的所述目标线程数时进入等待状态,直至空闲线程的数量大于等于所述目标任务所需的所述目标线程数后,从空闲线程中获取所述目标线程数个线程,并将所述目标线程数个所述线程分配给所述目标任务。
9.一种服务器,其特征在于,所述服务器,包括:存储器,处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求1-8中任意一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-8任一项所述的数据处理方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111598784.9A CN114265679A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111598784.9A CN114265679A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265679A true CN114265679A (zh) | 2022-04-01 |
Family
ID=80829741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111598784.9A Pending CN114265679A (zh) | 2021-12-24 | 2021-12-24 | 数据处理方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265679A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115047937A (zh) * | 2022-06-14 | 2022-09-13 | 亿咖通(湖北)技术有限公司 | 基于实时通信的任务控制方法、装置和车辆控制系统 |
CN115086299A (zh) * | 2022-05-31 | 2022-09-20 | 中银金融科技有限公司 | 文件下载方法、装置、设备、介质和程序产品 |
CN116303702A (zh) * | 2022-12-27 | 2023-06-23 | 易方达基金管理有限公司 | 一种基于etl的数据并行处理方法、装置、设备和存储介质 |
CN117651075A (zh) * | 2024-01-25 | 2024-03-05 | 腾讯科技(深圳)有限公司 | 任务消息传输方法、装置、计算机设备及计算机可读存储介质 |
-
2021
- 2021-12-24 CN CN202111598784.9A patent/CN114265679A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086299A (zh) * | 2022-05-31 | 2022-09-20 | 中银金融科技有限公司 | 文件下载方法、装置、设备、介质和程序产品 |
CN115086299B (zh) * | 2022-05-31 | 2024-04-09 | 中银金融科技有限公司 | 文件下载方法、装置、设备、介质和程序产品 |
CN115047937A (zh) * | 2022-06-14 | 2022-09-13 | 亿咖通(湖北)技术有限公司 | 基于实时通信的任务控制方法、装置和车辆控制系统 |
CN115047937B (zh) * | 2022-06-14 | 2023-09-12 | 亿咖通(湖北)技术有限公司 | 基于实时通信的任务控制方法、装置和车辆控制系统 |
CN116303702A (zh) * | 2022-12-27 | 2023-06-23 | 易方达基金管理有限公司 | 一种基于etl的数据并行处理方法、装置、设备和存储介质 |
CN116303702B (zh) * | 2022-12-27 | 2024-04-05 | 易方达基金管理有限公司 | 一种基于etl的数据并行处理方法、装置、设备和存储介质 |
CN117651075A (zh) * | 2024-01-25 | 2024-03-05 | 腾讯科技(深圳)有限公司 | 任务消息传输方法、装置、计算机设备及计算机可读存储介质 |
CN117651075B (zh) * | 2024-01-25 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 任务消息传输方法、装置、计算机设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114265679A (zh) | 数据处理方法、装置和服务器 | |
JP6254949B2 (ja) | 仮想マシンプールにおけるリソースの価格設定 | |
US8200824B2 (en) | Optimized multi-component co-allocation scheduling with advanced reservations for data transfers and distributed jobs | |
CN111108480B (zh) | 一种用于分布式资源需求及分配的系统和方法 | |
Shen et al. | Scheduling jobs in the cloud using on-demand and reserved instances | |
US8984521B2 (en) | Computer system performance by applying rate limits to control block tenancy | |
CN111767134A (zh) | 一种多任务动态资源调度方法 | |
EP2700008A1 (en) | Scheduling map and reduce tasks of jobs for execution according to performance goals | |
JP2017514247A5 (zh) | ||
US20170178041A1 (en) | Completion contracts | |
CN111104211A (zh) | 基于任务依赖的计算卸载方法、系统、设备及介质 | |
CN107430526B (zh) | 用于调度数据处理的方法和节点 | |
US8341634B2 (en) | System and method of providing a fixed time offset based dedicated co-allocation of a common resource set | |
CN115292016A (zh) | 基于人工智能的任务调度方法及相关设备 | |
CN113495779A (zh) | 一种任务调度方法和装置、任务执行系统 | |
US9342372B1 (en) | Dynamic workload capping | |
CN107357640B (zh) | 多线程数据库的请求处理方法及装置、电子设备 | |
CN113765949A (zh) | 资源分配的方法以及装置 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN114579284A (zh) | 任务调度方法及装置 | |
US10180858B2 (en) | Parallel computing device, parallel computing system, and job control method | |
CN110008002B (zh) | 基于平稳分布概率的作业调度方法、装置、终端和介质 | |
CN115421926A (zh) | 任务调度方法、分布式系统、电子设备及存储介质 | |
CN115202842A (zh) | 任务调度方法及装置 | |
CN113419827A (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 |