CN116302214A - 作业多线程运行方法、装置和电子设备 - Google Patents
作业多线程运行方法、装置和电子设备 Download PDFInfo
- Publication number
- CN116302214A CN116302214A CN202211735305.8A CN202211735305A CN116302214A CN 116302214 A CN116302214 A CN 116302214A CN 202211735305 A CN202211735305 A CN 202211735305A CN 116302214 A CN116302214 A CN 116302214A
- Authority
- CN
- China
- Prior art keywords
- execution
- thread pool
- execution thread
- consumption
- count value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 104
- 239000012634 fragment Substances 0.000 claims abstract description 228
- 230000003247 decreasing effect Effects 0.000 claims abstract description 6
- 230000008569 process Effects 0.000 claims description 38
- 238000011084 recovery Methods 0.000 claims description 27
- 239000000725 suspension Substances 0.000 description 29
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008713 feedback mechanism Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请提供了一种作业多线程运行方法、装置和电子设备,包括:构建执行控制单元,执行控制单元用于维护执行线程池中正在运行的分片计数值,正在运行的分片计数值包括执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至执行线程池的情况下,正在运行的分片计数值加一,在执行线程池中的一个分片执行完成之后,正在运行的分片计数值减一;根据正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,暂停消费消息指令用于控制执行线程池中的执行线程暂停消费新的分片,恢复消费消息指令用于控制执行线程池中的执行线程恢复消费新的分片。该方法解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
Description
技术领域
本申请涉及多线程运行领域,具体而言,涉及一种作业多线程运行方法、装置和电子设备。
背景技术
现有技术中的两种分片的多线程运行方式,第一种是利用消息消费线程池,让分片直接在消费线程中执行。这种方式存在的缺点是可能引起消息消费超时,因为实际情况中,一些分片由于数据量较大或者等待一些特定事件的触发执行时间可达十多分钟甚至超过半个小时,超过了一般消息队列设定的消息消费的最长时间,消息消费超时会引起消息重投,进而引起重复消费等问题。
第二种是创建单独的执行线程池,将分片从消费线程转到单独的执行线程中执行。这种方式当分片数量超过线程池容量时,必定存在一些分片因无法提交到执行线程而返回消费失败的情况。并且重试次数越多,重试间隔就越大,线程池出现空闲的时间就越长,所以这种方式的缺点是作业整体执行时间不可控,执行线程池资源利用率不高,作业执行效率低。
发明内容
本申请的主要目的在于提供一种作业多线程运行方法、装置和电子设备,以至少解决现有技术中的分片的多线程运行方式资源利用率不高的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种作业多线程运行方法,包括:构建执行控制单元,所述执行控制单元用于维护执行线程池中正在运行的分片计数值,所述正在运行的分片计数值包括所述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至所述执行线程池的情况下,所述正在运行的分片计数值加一,在所述执行线程池中的一个分片执行完成之后,所述正在运行的分片计数值减一;根据所述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,所述暂停消费消息指令用于控制所述执行线程池中的执行线程暂停消费新的分片,所述恢复消费消息指令用于控制所述执行线程池中的执行线程恢复消费新的分片。
可选的,根据所述正在运行的分片计数值,生成暂停消费消息指令,包括:确定暂停阈值,所述暂停阈值为执行线程池容量和第一常数的乘积,所述执行线程池容量为所述执行线程池中的线程数量和线程队列长度之和;在所述正在运行的分片计数值大于或者等于所述暂停阈值的情况下,生成所述暂停消费消息指令。
可选的,根据所述正在运行的分片计数值,生成恢复消费消息指令,包括:确定恢复阈值,所述恢复阈值为执行线程池容量和第二常数的乘积,所述执行线程池容量为所述执行线程池中的线程数量和线程队列长度之和;在所述正在运行的分片计数值小于所述恢复阈值的情况下,生成所述恢复消费消息指令。
可选的,在根据所述正在运行的分片计数值,生成恢复消费消息指令之后,所述方法还包括:控制新的分片被目标消费线程消费;控制所述目标消费线程将所述新的分片提交至所述执行线程池中的执行线程池队列;在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将等待执行指令返回至所述执行控制单元;在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将执行成功指令返回至所述执行控制单元。
可选的,在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将等待执行指令返回至所述执行控制单元,包括:在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将所述等待执行指令发送至所述目标消费线程,以控制所述目标消费线程将所述等待执行指令发送至所述执行控制单元;在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将执行成功指令返回至所述执行控制单元,包括:在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将所述执行成功指令发送至所述目标消费线程,以控制所述目标消费线程将所述执行成功指令发送至所述执行控制单元。
可选的,在控制所述目标消费线程将所述新的分片提交至所述执行线程池中的执行线程池队列之后,所述方法还包括:控制所述目标消费线程将消费成功消息返回至消息队列。
可选的,所述执行线程池中的多个所述执行线程分布在不同的执行机上。
可选的,所述暂停消费消息指令还用于控制消息队列暂停转发新的分片至所述执行线程池,所述恢复消费消息指令还用于控制所述消息队列恢复转发新的分片至所述执行线程池。
根据本申请的另一方面,提供了一种作业多线程运行装置,包括:构建单元,用于构建执行控制单元,所述执行控制单元用于维护执行线程池中正在运行的分片计数值,所述正在运行的分片计数值包括所述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至所述执行线程池的情况下,所述正在运行的分片计数值加一,在所述执行线程池中的一个分片执行完成之后,所述正在运行的分片计数值减一;生成单元,用于根据所述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,所述暂停消费消息指令用于控制所述执行线程池中的执行线程暂停消费新的分片,所述恢复消费消息指令用于控制所述执行线程池中的执行线程恢复消费新的分片。
根据本申请的另一方面,提供了一种电子设备,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的作业多线程运行方法。
应用本申请的技术方案,上述作业多线程运行方法,首先构建执行控制单元,所述执行控制单元用于维护执行线程池中正在运行的分片计数值,所述正在运行的分片计数值包括所述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至所述执行线程池的情况下,所述正在运行的分片计数值加一,在所述执行线程池中的一个分片执行完成之后,所述正在运行的分片计数值减一;之后根据所述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,所述暂停消费消息指令用于控制所述执行线程池中的执行线程暂停消费新的分片,所述恢复消费消息指令用于控制所述执行线程池中的执行线程恢复消费新的分片。该方法通过引入执行控制单元实现了执行线程池运行情况的主动反馈机制,并且基于该机制适时的做出暂停、恢复消费操作,从而在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生,提升了执行线程池的资源利用率,从而提升了批处理作业的执行效率,解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的实施例中提供的一种执行作业多线程运行方法的移动终端的硬件结构框图;
图2示出了根据本申请的实施例提供的一种作业多线程运行方法的流程示意图;
图3示出了现有技术中分片直接在消费线程池中执行的示意图;
图4示出了现有技术中将分片从消费线程提交到执行线程中执行的一个分片消息第一次消费失败的过程的示意图;
图5示出了现有技术中将分片从消费线程提交到执行线程中第一次失败后重试时该分片消费成功的过程的示意图;
图6示出了现有技术中将分片从消费线程提交到执行线程中多次消费失败的过程的示意图;
图7示出了根据本申请的实施例提供的一种作业多线程运行方法的触发消费暂停的过程示意图;
图8示出了根据本申请的实施例提供的一种作业多线程运行方法的触发恢复消费的过程示意图;
图9示出了根据本申请的实施例提供的一种多线程的运行方式的示意图;
图10示出了根据本申请的实施例提供的一种作业多线程运行装置的结构框图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
分片(P):一个批处理作业按照一定策略将需要处理的数据拆分成的不同的部分,称为分片,每个分片负责处理不同的数据。
批处理执行机:负责实际处理分片的机器、装置。
消费线程(CT):消息队列客户端创建的用于消费消息的线程。
执行线程(ET):用于执行分片的线程。
正如背景技术中所介绍的,现有的多线程运行方式在作业分片数量多于执行机线程资源时,作业实际的执行时间不可控,批处理执行机资源利用率低,作业执行效率低,为解决现有技术中的分片的多线程运行方式资源利用率不高的问题,本申请的实施例提供了一种作业多线程运行方法、装置和电子设备。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种作业多线程运行方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的设备信息的显示方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的作业多线程运行方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
现有技术中分片的多线程运行方式目前主要有两种。一是利用消息消费线程池,让分片直接在消费线程中执行。如图3所示,消息队列中的分片P1被消费线程CT1消费并执行,分片P2被消费线程CT2消费并执行。
二是创建单独的执行线程池,将分片从消费线程提交到执行线程中执行。当执行线程池有空闲的线程资源时,分片被正常提交到执行线程,同时返回消费成功;当执行线程池资源耗尽,无法容纳新的分片时,返回消费失败,此时根据消息队列的重试机制,分片稍后会被重新消费,重新执行这个过程。
如图4所示,图4示出了一个分片消息第一次消费失败的过程:
①分片P6被消费线程CT1消费;
②消费线程CT1将分片P6提交至执行线程池;
③执行线程ET1正在执行分片P1,执行线程ET2正在执行分片P2,执行线程池队列中有分片P3、P4、P5等待执行,此时执行线程池已无法容纳新的分片,故返回拒绝;
④消费线程CT1返回消息队列消费失败。
这种情况下,消息队列会对分片P6进行重试,图5示出了重试时该分片消费成功的过程:
⑤分片P6被消费线程CT1消费;
⑥消费线程CT1将分片P6提交至执行线程池;
⑦此时分片P1执行完成,分片P3由执行线程ET1开始执行,执行线程池队列剩余1个位置,故分片P6成功被提交至执行线程池队列,返回提交成功;
⑧消费线程CT1返回消息队列消费成功。
而现有的创建单独的执行线程池在发生消费失败的情况下,消息队列为依据其重试机制促使重新消费这条消息。消息队列对消息的重试间隔通常是递增的,如1秒、5秒、10秒、30秒、1分钟、2分钟、3分钟、4分钟、5分钟、6分钟、7分钟、8分钟、9分钟、10分钟、20分钟、30分钟、1小时、2小时,重试间隔越来越大,如果一条消息多次消费失败,会导致作业整体执行时间不可控,同时批处理执行机效率下降的问题。如图6所示,分片P6在T时刻被消费,但此时执行线程池已耗尽,消费失败,进入重试,T1、T2、T3、T4、T5时刻分别表示该分片前5次重试,但执行线程池仍然处于耗尽状态,消费仍然失败,执行线程池在T6时刻出现空闲情况,虽然此时线程池出现空闲,但由于重试间隔未到,分片P6仍然没有被消费,直到T7时刻达到重试间隔,分片P6才被成功消费。在T6到T7时刻内,执行线程池是有空闲的,但未执行剩余的分片,造成了线程资源的浪费。因此重试次数越多,重试间隔就越大,线程池出现空闲的时间就越长,所以这种方式的缺点是作业整体执行时间不可控,执行线程池资源利用率不高,作业执行效率低。
针对前述两种多线程运行方式的缺点,本申请提出了一种作业多线程运行方法,图2是根据本申请实施例的作业多线程运行方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;
步骤S202,根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。暂停后,执行控制单元不会再消费新的消息,直到恢复后再从暂停的位置继续消费后续消息。
其中,根据上述正在运行的分片计数值,生成暂停消费消息指令的具体实施步骤如下:
步骤S301,确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;一般情况下,第一常数为100%。
步骤S302,在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。此时表示执行线程池资源已耗尽。
其中,根据上述正在运行的分片计数值,生成恢复消费消息指令的具体实施步骤如下:
步骤S401,确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;一般情况下,第二常数为50%。
步骤S402,在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。此时表示执行线程池已空闲出一部分。
上述暂停阈值和恢复阈值的设置可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
一种可选的方案中,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述方法还包括:
步骤S203,控制新的分片被目标消费线程消费;
步骤S204,控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;
步骤S205,在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;
在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;
步骤S206,在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。
在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。
在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述方法还包括:控制上述目标消费线程将消费成功消息返回至消息队列。
具体地,触发消费暂停的过程示意图如图7所示:
①分片P5被消费线程CT1消费;
②消费线程CT1将分片P5提交至执行线程池;
③由于执行线程池队列剩余1个位置,分片P5被成功提交至执行线程池队列等待执行,执行线程池返回提交成功;
④运行控制器计数值C执行加1操作;
⑤此时正在运行的分片计数值为5,执行线程池容量为5,已满足正在运行的分片计数值大于或者等于上述暂停阈值,调用消息队列暂停消费接口;
⑥消费线程CT1返回消息队列消费成功。
触发恢复消费的过程示意图如图8所示:
⑦分片P1、P2、P3先后执行完成,正在运行的分片计数值C共计执行减1操作3次;
⑧此时正在运行的分片计数值为2,执行线程池容量为5,已满足执行线程池容量为,调用消息队列恢复消费接口;
⑨分片P6被消费线程CT1消费;
⑩消费线程CT1将分片P6提交至执行线程池;
如上上述的主动反馈机制可以将执行线程的运行情况主动反馈给消息队列,同时执行相应的操作。当满足暂停条件时会立即暂停消费,当满足恢复条件时会立即恢复消费,因此当分片数大于线程池容量时,不会出现消费失败的情况,因此执行机也不会出现因消费失败等待重新消费而空闲的情况。
一种可选的实施例中,上述执行线程池中的多个上述执行线程分布在不同的执行机上。具体地,当一个批处理作业需要处理的数据量较多时,它通常会被拆分成不同的分片,分片通过消息队列的方式异步的发送到批处理执行机集群,分片之间并行的进行处理,每个分片对应一个执行机线程。如图9所示。这种多线程的运行方式可以提高批处理作业的执行效率。
示例性地,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。
本申请的上述作业多线程运行方法,首先构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;之后根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。该方法通过引入执行控制单元实现了执行线程池运行情况的主动反馈机制,并且基于该机制适时的做出暂停、恢复消费操作,从而在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生,提升了执行线程池的资源利用率,从而提升了批处理作业的执行效率,解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种作业多线程运行装置,需要说明的是,本申请实施例的作业多线程运行装置可以用于执行本申请实施例所提供的用于作业多线程运行方法。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
以下对本申请实施例提供的作业多线程运行装置进行介绍。
图10是根据本申请实施例的作业多线程运行装置的示意图。如图10所示,该装置包括:构建单元10,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元20,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。
作为一种可选的方案,生成单元包括第一确定模块和第一生成模块,上述第一确定模块用于确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;上述第一生成模块用于在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
一种可选的方案,生成单元还包括第二确定模块和第二生成模块,上述第二确定模块用于确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;上述第二生成模块用于在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
示例性地,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述装置还包括第一控制模块、第二控制模块、第三控制模块和第四控制模块,第一控制模块用于控制新的分片被目标消费线程消费;第二控制模块用于控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;第三控制模块用于在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;第四控制模块用于在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。可以提升执行线程池的资源利用率。
一种可选的实施例中,第三控制模块包括第一控制子模块,第一控制子模块用于在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;第四控制模块包括第二控制子模块,第二控制子模块用于在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。可以提升执行线程池的资源利用率,并提升批处理作业的执行效率。
本实施例中,在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述装置还包括第五控制模块,第五控制模块用于控制上述目标消费线程将消费成功消息返回至消息队列。可以提升批处理作业的执行效率。
一种可选的方案中,上述执行线程池中的多个上述执行线程分布在不同的执行机上。这种多线程的运行方式可以提高批处理作业的执行效率。
作为一种可选的方案,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
本申请的上述作业多线程运行装置,包括:构建单元,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。该装置通过引入执行控制单元实现了执行线程池运行情况的主动反馈机制,并且基于该机制适时的做出暂停、恢复消费操作,从而在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生,提升了执行线程池的资源利用率,从而提升了批处理作业的执行效率,解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
上述作业多线程运行装置包括处理器和存储器,上述构建单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中的分片的多线程运行方式资源利用率不高的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在上述程序运行时控制上述计算机可读存储介质所在设备执行上述作业多线程运行方法。
具体地,作业多线程运行方法包括:
步骤S201,构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;
具体地,基于该机制适时的做出暂停、恢复消费操作,可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
步骤S202,根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。暂停后,执行控制单元不会再消费新的消息,直到恢复后再从暂停的位置继续消费后续消息。
具体地,上述暂停阈值和恢复阈值的设置可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
可选的,根据上述正在运行的分片计数值,生成暂停消费消息指令,包括:确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。
可选的,根据上述正在运行的分片计数值,生成恢复消费消息指令,包括:确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。
可选的,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述方法还包括:控制新的分片被目标消费线程消费;控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。
可选的,上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。
可选的,在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述方法还包括:控制上述目标消费线程将消费成功消息返回至消息队列。
可选的,上述执行线程池中的多个上述执行线程分布在不同的执行机上。
可选的,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。
根据本申请的另一方面,提供了一种作业多线程运行装置,包括:构建单元,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述作业多线程运行方法。
具体地,作业多线程运行方法包括:
步骤S201,构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;
具体地,基于该机制适时的做出暂停、恢复消费操作,可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
步骤S202,根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。暂停后,执行控制单元不会再消费新的消息,直到恢复后再从暂停的位置继续消费后续消息。
具体地,上述暂停阈值和恢复阈值的设置可以在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生。
可选的,根据上述正在运行的分片计数值,生成暂停消费消息指令,包括:确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。
可选的,根据上述正在运行的分片计数值,生成恢复消费消息指令,包括:确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。
可选的,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述方法还包括:控制新的分片被目标消费线程消费;控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。
可选的,上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。
可选的,在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述方法还包括:控制上述目标消费线程将消费成功消息返回至消息队列。
可选的,上述执行线程池中的多个上述执行线程分布在不同的执行机上。
可选的,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S201,构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;
步骤S202,根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。暂停后,执行控制单元不会再消费新的消息,直到恢复后再从暂停的位置继续消费后续消息。
本文中的设备可以是服务器、PC、PAD、手机等。
可选的,根据上述正在运行的分片计数值,生成暂停消费消息指令,包括:确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。
可选的,根据上述正在运行的分片计数值,生成恢复消费消息指令,包括:确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。
可选的,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述方法还包括:控制新的分片被目标消费线程消费;控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。
可选的,上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。
可选的,在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述方法还包括:控制上述目标消费线程将消费成功消息返回至消息队列。
可选的,上述执行线程池中的多个上述执行线程分布在不同的执行机上。
可选的,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。
根据本申请的另一方面,提供了一种作业多线程运行装置,包括:构建单元,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S201,构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;
步骤S202,根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。暂停后,执行控制单元不会再消费新的消息,直到恢复后再从暂停的位置继续消费后续消息。
可选的,根据上述正在运行的分片计数值,生成暂停消费消息指令,包括:确定暂停阈值,上述暂停阈值为执行线程池容量和第一常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值大于或者等于上述暂停阈值的情况下,生成上述暂停消费消息指令。
可选的,根据上述正在运行的分片计数值,生成恢复消费消息指令,包括:确定恢复阈值,上述恢复阈值为执行线程池容量和第二常数的乘积,上述执行线程池容量为上述执行线程池中的线程数量和线程队列长度之和;在上述正在运行的分片计数值小于上述恢复阈值的情况下,生成上述恢复消费消息指令。
可选的,在根据上述正在运行的分片计数值,生成恢复消费消息指令之后,上述方法还包括:控制新的分片被目标消费线程消费;控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列;在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元。
可选的,上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将等待执行指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中等待执行的过程中,控制上述执行线程池将上述等待执行指令发送至上述目标消费线程,以控制上述目标消费线程将上述等待执行指令发送至上述执行控制单元;在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将执行成功指令返回至上述执行控制单元,包括:在上述新的分片在上述执行线程池队列中被执行完成后,控制上述执行线程池将上述执行成功指令发送至上述目标消费线程,以控制上述目标消费线程将上述执行成功指令发送至上述执行控制单元。
可选的,在控制上述目标消费线程将上述新的分片提交至上述执行线程池中的执行线程池队列之后,上述方法还包括:控制上述目标消费线程将消费成功消息返回至消息队列。
可选的,上述执行线程池中的多个上述执行线程分布在不同的执行机上。
可选的,上述暂停消费消息指令还用于控制消息队列暂停转发新的分片至上述执行线程池,上述恢复消费消息指令还用于控制上述消息队列恢复转发新的分片至上述执行线程池。
根据本申请的另一方面,提供了一种作业多线程运行装置,包括:构建单元,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的上述作业多线程运行方法,首先构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;之后根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。该方法通过引入执行控制单元实现了执行线程池运行情况的主动反馈机制,并且基于该机制适时的做出暂停、恢复消费操作,从而在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生,提升了执行线程池的资源利用率,从而提升了批处理作业的执行效率,解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
2)、本申请的上述作业多线程运行装置,包括:构建单元,用于构建执行控制单元,上述执行控制单元用于维护执行线程池中正在运行的分片计数值,上述正在运行的分片计数值包括上述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至上述执行线程池的情况下,上述正在运行的分片计数值加一,在上述执行线程池中的一个分片执行完成之后,上述正在运行的分片计数值减一;生成单元,用于根据上述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,上述暂停消费消息指令用于控制上述执行线程池中的执行线程暂停消费新的分片,上述恢复消费消息指令用于控制上述执行线程池中的执行线程恢复消费新的分片。该装置通过引入执行控制单元实现了执行线程池运行情况的主动反馈机制,并且基于该机制适时的做出暂停、恢复消费操作,从而在解决消费超时问题的同时,有效的避免了消息消费失败情况的发生,提升了执行线程池的资源利用率,从而提升了批处理作业的执行效率,解决了现有技术中分片的多线程运行方式资源利用率不高的问题。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种作业多线程运行方法,其特征在于,包括:
构建执行控制单元,所述执行控制单元用于维护执行线程池中正在运行的分片计数值,所述正在运行的分片计数值包括所述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至所述执行线程池的情况下,所述正在运行的分片计数值加一,在所述执行线程池中的一个分片执行完成之后,所述正在运行的分片计数值减一;
根据所述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,所述暂停消费消息指令用于控制所述执行线程池中的执行线程暂停消费新的分片,所述恢复消费消息指令用于控制所述执行线程池中的执行线程恢复消费新的分片。
2.根据权利要求1所述的方法,其特征在于,根据所述正在运行的分片计数值,生成暂停消费消息指令,包括:
确定暂停阈值,所述暂停阈值为执行线程池容量和第一常数的乘积,所述执行线程池容量为所述执行线程池中的线程数量和线程队列长度之和;
在所述正在运行的分片计数值大于或者等于所述暂停阈值的情况下,生成所述暂停消费消息指令。
3.根据权利要求1所述的方法,其特征在于,根据所述正在运行的分片计数值,生成恢复消费消息指令,包括:
确定恢复阈值,所述恢复阈值为执行线程池容量和第二常数的乘积,所述执行线程池容量为所述执行线程池中的线程数量和线程队列长度之和;
在所述执行线程池容量为的情况下,生成所述恢复消费消息指令。
4.根据权利要求1所述的方法,其特征在于,在根据所述正在运行的分片计数值,生成恢复消费消息指令之后,所述方法还包括:
控制新的分片被目标消费线程消费;
控制所述目标消费线程将所述新的分片提交至所述执行线程池中的执行线程池队列;
在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将等待执行指令返回至所述执行控制单元;
在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将执行成功指令返回至所述执行控制单元。
5.根据权利要求4所述的方法,其特征在于,
在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将等待执行指令返回至所述执行控制单元,包括:
在所述新的分片在所述执行线程池队列中等待执行的过程中,控制所述执行线程池将所述等待执行指令发送至所述目标消费线程,以控制所述目标消费线程将所述等待执行指令发送至所述执行控制单元;
在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将执行成功指令返回至所述执行控制单元,包括:
在所述新的分片在所述执行线程池队列中被执行完成后,控制所述执行线程池将所述执行成功指令发送至所述目标消费线程,以控制所述目标消费线程将所述执行成功指令发送至所述执行控制单元。
6.根据权利要求4所述的方法,其特征在于,在控制所述目标消费线程将所述新的分片提交至所述执行线程池中的执行线程池队列之后,所述方法还包括:
控制所述目标消费线程将消费成功消息返回至消息队列。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述执行线程池中的多个所述执行线程分布在不同的执行机上。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述暂停消费消息指令还用于控制消息队列暂停转发新的分片至所述执行线程池,所述恢复消费消息指令还用于控制所述消息队列恢复转发新的分片至所述执行线程池。
9.一种作业多线程运行装置,其特征在于,包括:
构建单元,用于构建执行控制单元,所述执行控制单元用于维护执行线程池中正在运行的分片计数值,所述正在运行的分片计数值包括所述执行线程池中正在被执行的分片数量和等待被执行的分片数量,在一个分片被成功提交至所述执行线程池的情况下,所述正在运行的分片计数值加一,在所述执行线程池中的一个分片执行完成之后,所述正在运行的分片计数值减一;
生成单元,用于根据所述正在运行的分片计数值,生成暂停消费消息指令和恢复消费消息指令,所述暂停消费消息指令用于控制所述执行线程池中的执行线程暂停消费新的分片,所述恢复消费消息指令用于控制所述执行线程池中的执行线程恢复消费新的分片。
10.一种电子设备,其特征在于,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至8中任意一项所述的作业多线程运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211735305.8A CN116302214A (zh) | 2022-12-30 | 2022-12-30 | 作业多线程运行方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211735305.8A CN116302214A (zh) | 2022-12-30 | 2022-12-30 | 作业多线程运行方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302214A true CN116302214A (zh) | 2023-06-23 |
Family
ID=86785846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211735305.8A Pending CN116302214A (zh) | 2022-12-30 | 2022-12-30 | 作业多线程运行方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302214A (zh) |
-
2022
- 2022-12-30 CN CN202211735305.8A patent/CN116302214A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3786793B1 (en) | Task processing method and device, and computer system | |
US8943353B2 (en) | Assigning nodes to jobs based on reliability factors | |
EP2816467B1 (en) | Method and device for checkpoint and restart of container state | |
CN107450971B (zh) | 任务处理方法及装置 | |
CN113504985B (zh) | 一种任务处理方法以及网络设备 | |
CN102567111A (zh) | 一种异步过程调用的方法、系统和终端设备 | |
US10819641B2 (en) | Highly available servers | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
CN106354563B (zh) | 用于3d重建的分布式计算系统以及3d重建方法 | |
US10067793B2 (en) | Data processing method and apparatus for executing task code using reservation instruction and release instruction | |
US11392414B2 (en) | Cooperation-based node management protocol | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN105373453A (zh) | 数据备份方法及系统 | |
US11429435B1 (en) | Distributed execution budget management system | |
CN116302214A (zh) | 作业多线程运行方法、装置和电子设备 | |
EP3792757A1 (en) | Method, apparatus, device, and storage medium for performing processing task | |
US8788601B2 (en) | Rapid notification system | |
CN111414240B (zh) | 内核态进程复制方法以及装置、容器扩容方法以及装置 | |
CN116048756A (zh) | 一种队列调度方法、装置及相关设备 | |
JP2007265137A (ja) | マルチタスク処理方法及びマルチタスク処理装置 | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
US11113106B2 (en) | Coordinating distributed task execution | |
CN109189615A (zh) | 一种宕机处理方法和装置 | |
CN114385227A (zh) | 一种业务处理方法、装置、设备及存储介质 | |
WO2024052981A1 (ja) | 処理装置、処理方法およびプログラム |
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 |