CN117112243A - 一种动态线程池管理方法和相关装置 - Google Patents
一种动态线程池管理方法和相关装置 Download PDFInfo
- Publication number
- CN117112243A CN117112243A CN202210536532.1A CN202210536532A CN117112243A CN 117112243 A CN117112243 A CN 117112243A CN 202210536532 A CN202210536532 A CN 202210536532A CN 117112243 A CN117112243 A CN 117112243A
- Authority
- CN
- China
- Prior art keywords
- transaction
- processed
- transactions
- thread pool
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 153
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 230000001105 regulatory effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 238000001514 detection method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012550 audit Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002222 downregulating effect Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种动态线程池管理方法和相关装置,可以通过线程池中的线程处理多个待处理交易,该线程池中所包括的多个线程可以同时处理多个交易。然后可以确定该多个待处理交易中的冲突交易,该冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,该数据结合用于存储该交易对象对应的数据。根据该待处理交易集合中冲突交易的数量,可以确定出该待处理交易集合对应的交易冲突率,并基于该交易冲突率动态调节线程池中的线程数量,从而在一定程度上可以避免线程池中的线程过多导致交易冲突率过高,或线程过少导致交易处理效率不高的问题,平衡了交易处理效率和交易冲突率,综合提高了对于交易的处理能力。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种动态线程池管理方法和相关装置。
背景技术
区块链是当下热门的数据处理工具之一,其具有不可篡改、可追溯、共同维护等优势。在发送交易到区块链后,可以通过区块链中的线程池所包括的线程对交易进行处理。
在相关技术中,区块链中进行交易处理执行方案大多是串行执行,即只有一个用于处理交易的线程,同一时刻只能够处理一个交易。这种方式限制了计算机的多核并行交易处理能力,使用单核单线程来执行所有交易,执行效率很低。
发明内容
为了解决上述技术问题,本申请提供了一种动态线程池管理方法,在并行处理交易的同时可以有效控制交易冲突率,极大提升了交易处理效率。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例公开了一种动态线程池管理方法,所述方法包括:
获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
通过线程池中的线程处理所述多个待处理交易;
确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
根据所述交易冲突率,调节所述线程池中的线程数量。
第二方面,本申请实施例公开了一种动态线程池管理装置,所述装置包括获取单元、处理单元、第一确定单元、第二确定单元和调节单元:
所述获取单元,用于获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
所述处理单元,用于通过线程池中的线程处理所述多个待处理交易;
所述第一确定单元,用于确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
所述第二确定单元,用于根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
所述调节单元,用于根据所述交易冲突率,调节所述线程池中的线程数量。
在一种可能的实现方式中,所述调节单元具体用于:
响应于所述交易冲突率大于冲突率阈值,缩小所述线程池中的线程数量;
响应于所述交易冲突率小于所述冲突率阈值,扩大所述线程池中的线程数量。
在一种可能的实现方式中,所述多个待处理交易中包括第一待处理交易,所述处理单元具体用于:
确定所述第一待处理交易对应的目标交易对象;
获取所述目标交易对象在所述数据集合中对应的第一目标数据;
通过所述线程池中的线程,根据所述第一目标数据处理所述第一待处理交易,生成所述第一待处理交易对应的待更新数据;
所述第一确定单元具体用于:
获取所述目标交易对象在所述数据集合中对应的第二目标数据;
响应于所述第一目标数据与所述第二目标数据不同,确定所述第一待处理交易为冲突交易。
在一种可能的实现方式中,所述装置还包括更新单元:
所述更新单元,用于响应于所述第一目标数据与所述第二目标数据相同,将所述数据集合中所述目标交易对象对应的数据更新为所述待更新数据。
在一种可能的实现方式中,所述待处理交易具有对应的发送对象,所述发送对象为发送所述待处理交易的对象,所述装置还包括第三确定单元和设置单元:
所述第三确定单元,用于确定所述多个待处理交易对应的发送对象数量;
所述设置单元,用于将所述发送对象数量设置为所述线程池对应的初始线程数量;
所述处理单元具体用于:
通过所述线程池中初始线程数量的线程处理所述多个待处理交易,所述发送对象与所述线程池中的线程一一对应。
在一种可能的实现方式中,所述多个待处理交易对应的多个发送对象中包括第一发送对象,所述装置还包括关闭单元:
所述关闭单元,用于响应于所述多个待处理交易中对应所述第一发送对象的待处理交易全部处理完毕,关闭所述第一发送对象对应的线程。
在一种可能的实现方式中,所述处理单元具体用于:
针对每一个发送对象,设置一条对应的交易队列,所述交易队列与所述线程池中的线程一一对应,所述多个待处理交易对应的多个发送对象中包括第二发送对象,所述多个待处理交易中包括第二待处理交易,所述线程池中包括所述第二发送对象对应的目标线程,所述目标线程用于处理所述第二发送对象发送的待处理交易;
响应于第二待处理交易为所述第二发送对象发送的,将所述第二待处理交易放入所述第二发送对象对应的目标交易队列中;
响应于所述目标线程中的待处理交易处理完毕,从所述目标交易队列中获取待处理交易进行处理。
在一种可能的实现方式中,所述待处理交易集合包括M个待处理交易,所述M个待处理交易中包括第三待处理交易,所述装置还包括第四确定单元、第五确定单元和标识管理单元:
所述第四确定单元,用于确定所述线程池对应的标识记录窗口,所述标识记录窗口包括M个标识位;
所述第五确定单元,用于确定所述第三待处理交易对应的交易标识,所述交易标识用于标识所述第三待处理交易是否为冲突交易;
所述标识管理单元,用于将位于所述标识记录窗口中第M位的交易标识去除,将其它位的交易标识对应的位数加1,并将所述第三待处理交易对应的交易标识存入所述标识记录窗口的第1位,所述标识记录窗口中记录的交易标识顺序是基于交易标识存入所述标识记录窗口的顺序确定的;
所述第二确定单元具体用于:
响应于所述M个待处理交易的交易标识存入到所述标识记录窗口中,根据所述标识记录窗口中标识交易冲突的交易标识数量与M的比值,确定所述待处理交易集合对应的交易冲突率。
第三方面,本申请实施例公开了一种计算机设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面中任意一项所述的动态线程池管理方法。
第四方面,本申请实施例公开了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行第一方面中任意一项所述的动态线程池管理方法。
第五方面,本申请实施例公开了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行第一方面中任意一项所述的动态线程池管理方法。
由上述技术方案可以看出,在获取待处理交易集合后,可以通过线程池中的线程处理多个待处理交易,该线程池中所包括的多个线程可以同时处理多个交易。为了进一步提高交易处理效率,可以确定该多个待处理交易中的冲突交易,该冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,该数据结合用于存储该交易对象对应的数据。根据该待处理交易集合中冲突交易的数量,可以确定出该待处理交易集合对应的交易冲突率,并基于该交易冲突率动态调节线程池中的线程数量,从而在一定程度上可以避免线程池中的线程过多导致交易冲突率过高,或线程过少导致交易处理效率不高的问题,平衡了交易处理效率和交易冲突率,综合提高了对于交易的处理能力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种实际应用场景中动态线程池管理方法的示意图;
图2为本申请实施例提供的一种动态线程池管理方法的流程图;
图3为本申请实施例提供的一种标识记录窗口的示意图;
图4为本申请实施例提供的一种通过线程池进行交易处理的示意图;
图5为本申请实施例提供的一种基于交易冲突率进行动态线程池调节的示意图;
图6为本申请实施例提供的一种基于发送对象进行线程池管理的示意图;
图7为本申请实施例提供的一种结合交易冲突率与发送对象进行线程池管理的示意图;
图8为本申请实施例提供的一种动态线程池管理装置的结构框图;
图9为本申请实施例提供的一种终端的结构图;
图10为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
在相关技术中,虽然也存在并行交易处理方案,即线程池中的多个线程可以同时处理多个交易,然而,相关技术中的线程池中的线程数量是固定的,当交易冲突率较高时,说明同时处理的多个交易中有较多交易是针对相同数据进行修改,这就导致大量的交易会由于冲突需要重新输送到线程中进行处理,而在线程数量固定的情况下,会导致交易重复处理的次数过多,交易处理效率较慢;当交易冲突率较低时,又会由于无法增加线程导致无法进一步提高交易处理效率。
为了解决上述技术问题,本申请实施例提供了一种动态线程池管理方法,处理设备可以基于线程池所处理待处理交易的冲突情况,动态调节线程池中线程的数量,实现交易冲突率与交易处理效率之间的平衡,综合提高线程池的交易处理能力。
可以理解的是,该方法可以应用于处理设备上,该处理设备为能够进行线程池管理的处理设备,例如可以为具有线程池管理功能的终端设备或服务器。该方法可以通过终端设备或服务器独立执行,也可以应用于终端设备和服务器通信的网络场景,通过终端设备和服务器配合执行。其中,终端设备可以为计算机、手机等设备。服务器可以理解为是应用服务器,也可以为Web服务器,在实际部署时,该服务器可以为独立服务器,也可以为集群服务器。
本申请可以应用于区块链技术场景中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营检测等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营检测模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
为了便于理解本申请实施例提供的技术方案,接下来,将结合一种实际应用场景,对本申请实施例提供的一种动态线程池管理方法进行介绍。
参见图1,图1为本申请实施例提供的一种实际应用场景中动态线程池管理方法的示意图,在该实际应用场景中,处理设备为具有线程池管理能力的服务器101。
首先,服务器101可以获取待处理交易集合,该待处理交易集合中包括N个待处理交易,服务器101可以将该待处理交易集合发送至线程池中进行处理,该线程池中包括三个线程,即最多可以同时处理三个待处理交易。服务器101可以通过线程池对待处理交易的处理情况,确定该N个待处理交易中的冲突交易,该冲突交易是指在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易。从而,服务器101可以基于N个待处理交易中的冲突交易数量,确定该待处理交易集合对应的交易冲突率,并可以基于该交易冲突率调节该线程池中的线程数量。
例如,当交易冲突率较高时,服务器101可以适当降低线程池中的线程数量,从而减少同时处理的交易数量,进而降低了发生多个交易同时对同一数据进行修改的情况,降低了冲突交易出现的概率;当交易冲突率较低时,服务器101可以适当增大线程池中的线程数量,从而提高可同时处理的交易数量,提高交易处理效率,平衡了交易处理效率和交易冲突率,综合提高了线程池对于交易的处理能力。
接下来,将结合附图,对本申请实施例提供的一种动态线程池管理方法的流程图,该方法包括:
S201:获取待处理交易集合。
该待处理交易集合包括多个待处理交易,待处理交易具有对应的交易对象,即该待处理交易在修改数据集合中的数据时,修改的为该交易对象对应的数据。交易是指区块链中智能合约的一个执行过程,相当于完成特定功能的某个方法,比如转账,数字存证。在交易处理过程中,处理设备可以先批量获取多个待处理交易以供包含多个线程的线程池进行处理。
S202:通过线程池中的线程处理多个待处理交易。
线程池是一种线程使用模式,一个线程池中通常包括多个线程,即线程池在同一时刻可以处理多个交易。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。
线程在处理交易时,会基于待处理交易所对应的交易对象,从区块链对应的数据集合中获取数据,并基于该待处理交易和该数据得到待处理交易对应的数据,最后将数据同步到数据集合中,该数据集合用于存储交易对象对应的数据。
S203:确定多个待处理交易中的冲突交易。
可以理解的是,为了保障数据的有效性,通常情况下该区块链中只通过该数据集合来记录用于处理交易的数据,即处理每一个交易都需要从该数据集合中获取对应的数据进行处理,这就可能导致出现交易冲突的情况,产生冲突交易。冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,由于在处理交易时需要将通过处理交易得到的数据更新到数据集合中,因此若用于生成待更新数据的基础数据发生改变,会导致更新到数据集合中的数据出现异常。
例如,待处理交易A和待处理交易B都是针对数据集合中的同一数据进行处理,待处理交易A先进行处理,所获取到的数据集合中的数据为100,经过处理后得到数据90,需要将该数据90更新到数据集合中;待处理交易B后进行处理,在开始处理时,由于待处理交易A还未将90更新到数据集合中,因此所获取到的数据还是100,在处理过程中,待处理交易B需要扣掉40的数据,因此得到的数据为60。由于在处理过程中,待处理交易A得到的90数据更新到了数据集合中,因此若仍然将60更新到数据集合,就会导致待处理交易B实际上只扣除了30数据,发生了交易冲突。因此,为了保障交易处理的准确性,当处理设备确定在处理交易时,该交易在数据集合中对应的数据发生了改变,就会将该交易识别为冲突交易,返回到待处理交易集合中等待重新处理。
S204:根据待处理交易集合中冲突交易的数量,确定待处理交易集合对应的交易冲突率。
通过上述对冲突交易的说明可知,当交易处理过程中冲突交易过多时,就会导致处理设备需要进行多次重复处理,进而降低了交易处理效率。同时,当冲突交易过少时,说明该线程池还有容纳更多交易同时进行处理的能力,即可以在一定程度上扩充线程池中的线程数。
基于此,处理设备可以先根据待处理交易集合中冲突交易的数量,确定待处理交易集合对应的交易冲突率,该交易冲突率是指该待处理交易集合中冲突交易的数量与全部待处理交易数量的比值,能够体现出该待处理交易集合对应的交易冲突情况。
S205:根据交易冲突率,调节线程池中的线程数量。
为了平衡交易冲突率与交易处理效率,处理设备可以基于该交易冲突率,调节线程池中的线程数量,从而可以在控制合适的交易冲突率的情况下尽可能提高同时处理交易的线程数,提高线程池的交易处理能力。
由上述技术方案可以看出,在获取待处理交易集合后,可以通过线程池中的线程处理多个待处理交易,该线程池中所包括的多个线程可以同时处理多个交易。为了进一步提高交易处理效率,可以确定该多个待处理交易中的冲突交易,该冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,该数据结合用于存储该交易对象对应的数据。根据该待处理交易集合中冲突交易的数量,可以确定出该待处理交易集合对应的交易冲突率,并基于该交易冲突率动态调节线程池中的线程数量,从而在一定程度上可以避免线程池中的线程过多导致交易冲突率过高,或线程过少导致交易处理效率不高的问题,平衡了交易处理效率和交易冲突率,综合提高了对于交易的处理能力。
例如,在一种可能的实现方式中,处理设备可以预设一个冲突率阈值,响应于该交易冲突率大于冲突率阈值,说明当前交易冲突率较高,处理设备可以缩小所述线程池中的线程数量,以降低同时处理的待处理交易数量,进而降低交易冲突率,避免由于多次重复处理同一待处理交易导致交易处理效率过低;响应于交易冲突率小于冲突率阈值,说明此时交易出现冲突的概率较低,处理设备可以适当扩大所述线程池中的线程数量,以提高线程池可同时处理的待处理交易数量,从而进一步提高交易处理效率。
具体的,在一种可能的实现方式中,处理设备可以通过如下方式来确定冲突交易。其中,多个待处理交易中可以包括第一待处理交易,该第一待处理交易可以为多个待处理交易中的任意一个。以第一待处理交易为例,处理设备可以确定该第一待处理交易对应的目标交易对象,然后获取该目标交易对象在数据集合中对应的第一目标数据,该第一目标数据即为通过该第一待处理交易需要更新的数据。
处理设备可以通过所述线程池中的线程,根据该第一目标数据处理第一待处理交易,生成该第一待处理交易对应的待更新数据,该待更新数据即为需要更新到数据集合中作为该目标交易对象对应的数据。在处理该第一待处理交易时,处理设备可以获取该目标交易对象在所述数据集合中对应的第二目标数据,可以理解的是,若在交易处理过程中该目标交易对象对应的数据没有发生改变,则该第一目标数据应该与第二目标数据相同。基于此,响应于该第一目标数据与第二目标数据不同,处理设备可以确定该第一待处理交易为冲突交易。
同理,在一种可能的实现方式中,响应于该第一目标数据与第二目标数据相同,处理设备可以判定该第一待处理交易为不冲突交易,此时,处理设备可以将数据集合中目标交易对象对应的数据更新为该待更新数据。
其中,为了高效、准确的确定该待处理交易集合对应的交易冲突率,在一种可能的实现方式中,处理设备可以通过滑动窗来记录待处理交易集合中多个待处理交易的冲突情况。
该待处理交易集合可以包括M个待处理交易,M个待处理交易中包括第三待处理交易,该第三待处理交易可以为M个待处理交易中的任意一个。处理设备可以确定该线程池对应的标识记录窗口,该标识记录窗口用于记录该待处理交易集合中交易的冲突情况,该标识记录窗口包括M个标识位,每一个标识位都可以存储一个交易标识。处理设备可以确定该第三待处理交易对应的交易标识,该交易标识用于标识第三待处理交易是否为冲突交易。例如,当第三待处理交易为冲突交易时,该交易标识可以为“1”,为不冲突交易时该交易标识可以为“0”。
处理设备可以将位于该标识记录窗口中第M位的交易标识去除,将其它位的交易标识对应的位数加1,并将第三待处理交易对应的交易标识存入标识记录窗口的第1位,该标识记录窗口中记录的交易标识顺序是基于交易标识存入所述标识记录窗口的顺序确定的,即存入该标识记录窗口的时间越早,交易标识对应的位数越大。从而,当该M个待处理交易的交易标识全部存储到该标识记录窗口后,该标识记录窗口的第1位到第M位为该M个待处理交易的交易标识。
响应于M个待处理交易的交易标识存入到所述标识记录窗口中,处理设备可以根据标识记录窗口中标识交易冲突的交易标识数量与M的比值,确定该待处理交易集合对应的交易冲突率。
例如,如图3所示,图3为本申请实施例提供的一种标识记录窗口的示意图,系统会维护一个滑动窗口位图c,该滑动窗口位图c即为标识记录窗口,位数表示窗口支持的最大长度,支持最大长度内任意长度的实际窗口大小。
每次新增一个冲突交易n时,将冲突交易记为1,将普通交易记为0,如果是冲突交易,则将冲突数量+1,否则保持不变。使用一个标记位图f来计算即将出窗口的交易是否为冲突交易,f中最高位为1,即窗口大小对应的位。直接计算c&f即可得到c中对应位是否为1,即冲突交易。如果结果为1则冲突数量-1,否则不变,从而可以准确将窗口中所记录的上一批待处理交易的冲突检测结果进行去除。计算完成后,即可得到新的冲突数量与冲突比例。之后更新滑动窗口,将滑动窗口左移一位,然后与n进行或运算,补充最后一位即可。
滑动窗口位图c的运行过程如图3所示,滑动窗口位图c中灰色区域为有效窗口区域(窗口大小为20),窗口内有8个冲突交易(即8个标识为1),冲突率为40%。新增一笔冲突交易时,由于最后一位是1,因此冲突数量+1,变为9。之后判断即将推出窗口的交易是否为冲突交易,c&f=0,不是冲突交易,因此冲突数量不变。最后得到新的冲突数量为9,冲突比例为45%,更新滑动窗口位图,c_new=c<<1|n。基于窗口位图的实现方式具有更高的效率,整个调整的过程的时间复杂度是O(1)。
参见图4,图4为本申请实施例提供的一种通过线程池进行交易处理的示意图,在区块链中使用线程池首先需要区块链支持线程池功能,同时区块链节点具备一定的并发能力,区块链的节点是一个参与区块链维护的一个最小单元,是区块链节点程序的部署和运行单位。
首先,处理设备可以初始化线程池,系统首先会根据处理器信息,定义合理的初始线程池容量c,即初始线程数量。将c作为参数初始化一个线程池,c为线程池中同时工作的线程(worker)数量。
随后,处理设备可以初始化区块交易池,区块交易池中包含本次出块所需的全部交易,区块交易池会在交易数量变化时检测池中容量是否为空,如果为空则结束全部流程,即所有的交易都已经执行完毕;否则取出新的交易准备进行计算。接收到新交易时,系统首先会判断线程池中是否有可用的worker(存在空闲的线程),如果有则直接取出并处理交易,否则判断线程池中worker的数量是否达到线程池最大容量,如果已经达到了线程池的最大容量,那么系统将放回交易到交易池,不做任何处理;否则,说明线程池中的worker数量还可以增加,因此线程池会新增一个worker并执行任务,交由线程池管理。线程池会得出各个worker的计算结果,根据计算结果中读写集(即交易对应的待更新)进行对比,观察读写集中的数据是否和数据集合中的最新数据冲突。如果存在冲突则将交易放回到区块交易池,进而取出交易重新计算;否则通知区块交易池删除该交易,一笔交易执行完成。当区块交易池中所有交易都执行完毕后,该区块的交易执行流程结束。即,处理设备首先可以基于线程池最大可容纳线程数来进行动态调节。
参见图5,图5为本申请实施例提供的一种基于交易冲突率进行动态线程池调节的示意图,首先初始化区块交易池与动态线程池,并给定动态线程池初始的容量;处理设备可以设定相关参数:最大线程池容量MaxPoolCapacity(线程池能够达到的最大线程容量);最小线程池容量MinPoolCapacity(线程池能够达到的最小线程容量);容量提升的冲突率基线BaseConflictRate(即冲突率阈值,冲突率小于该数值时,开始提升线程池容量);容量降低的冲突率基线TopConflictRate(冲突率大于该数值时,开始降低线程池容量);上调系数AscendCoefficient(上调线程池容量的系数);下调系数DescendCoefficient(下调线程池容量的系数)。
然后,处理设备可以创建滑动窗口位图,在整个动态线程池调整过程中,滑动窗口位图一直保持更新。处理设备可以从区块交易池中不断取出新的交易,如果区块交易池为空,那么执行结束,否则执行交易。每执行一次交易后,就更新一次滑动窗口位图,让滑动窗口维护这段时间的冲突率值。
更新完之后,处理设备可以判断滑动窗口中是否所有位都已更新,即距离上次计算最新冲突率新增了一个窗口的交易数量,如果所有位还没有更新,那么继续执行下一笔交易,否则计算最新的冲突率。如果冲突率<BaseConflictRate,那么提升当前的线程池容量,提升后的线程池容量(即线程数量)PoolCapacity=PoolCapacity*AscendCoefficient,否则继续判断;如果冲突率>BaseConflictRate,那么降低当前的线程池容量,降低后的线程池容量PoolCapacity=PoolCapacity*DescendCoefficient,否则不改变线程池容量。
可以理解的是,线程池通常具有可调节的线程量上下限,即线程池有最大可容纳的线程数量和最小可容纳的线程数量。因此,在更改线程池容量之前,处理设备可以对上下界进行修正,限制新PoolCapacity在MinPoolCapacity与MaxPoolCapacity之间。最后更新线程池容量大小,线程池将按照最新的容量来分配资源。
除了可以基于交易冲突率进行动态调节外,处理设备还可以从发送交易的发送对象维度进行分析,来确定出适合进行交易处理的线程数量。可以理解的是,通常情况下,在处理交易时有较大概率需要修改发送交易的发送对象在数据集合中对应的数据,例如发送交易需要扣除发送交易的发送对象的费用等。
基于此,在一种可能的实现方式中,该待处理交易具有对应的发送对象,该发送对象为发送待处理交易的对象,处理设备还可以确定多个待处理交易对应的发送对象数量,然后将发送对象数量设置为线程池对应的初始线程数量。处理设备可以通过该线程池中初始线程数量的线程处理多个待处理交易,该发送对象与线程池中的线程一一对应,即每一个线程都专门用来处理所对应发送对象发送的待处理交易,从而可以在一定程度上避免该线程池中有多个线程同时在处理同一发送对象发送的待处理交易,导致由于都需要针对该发送对象在数据集合中的数据进行处理,造成交易冲突的问题。
此外,在一种可能的实现方式中,当某一发送对象的待处理交易都发送完毕后,为了节省处理资源,处理设备可以关闭用于处理该发送对象的线程。例如,多个待处理交易对应的多个发送对象中可以包括第一发送对象,该第一发送对象可以为多个发送对象中的任意一个,响应于多个待处理交易中对应该第一发送对象的待处理交易全部处理完毕,处理设备可以关闭所述第一发送对象对应的线程。从而,一方面处理设备可以通过交易冲突率对线程数量进行动态调节,一方面可以从源头上基于发送对象来决定线程数量,进一步提高线程池管理的有效性。
具体的,在一种可能的实现方式中,在通过线程池中初始线程数量的线程所述多个待处理交易,处理设备可以针对每一个发送对象,设置一条对应的交易队列,该交易队列与所述线程池中的线程一一对应,该交易队列用于从待处理交易集合中提取待处理交易输送到线程中进行处理。该多个待处理交易对应的多个发送对象中包括第二发送对象,该第二发送对象可以为多个发送对象中的任意一个。以第二发送对象为例,多个待处理交易中可以包括第二待处理交易,该第二待处理交易可以为多个待处理交易中的任意一个,该线程池中包括第二发送对象对应的目标线程,目标线程用于处理第二发送对象发送的待处理交易。
响应于第二待处理交易为第二发送对象发送的,处理设备可以将第二待处理交易放入该第二发送对象对应的目标交易队列中。该目标线程在处理待处理交易时,只会从该目标交易队列中获取待处理交易进行处理,即响应于该目标线程中的待处理交易处理完毕,从该目标交易队列中获取待处理交易进行处理,从而可以在一定程度上避免多个线程处理同一发送对象发送的待处理交易的情况发生,降低交易冲突率,提高交易处理效率。
例如,如图6所示,图6为本申请实施例提供的一种基于发送对象进行线程池管理的示意图,对于需要扣除交易发送对象余额(gas)的情况,相同发送对象发送的交易之间一定是冲突的。首先,处理设备初始化区块交易池,并根据交易冲突情况对区块交易池进行分组,比如整个区块交易池中的待处理交易对应10个交易发送对象,每个发送对象都需要扣除gas,处理设备可以将所有交易分为10组,放入10个交易队列中。
处理设备可以根据组的数量初始化线程池,比如按照上述方案分为10个线程,每组取出一个交易,并发执行交易。每执行完成一个交易,就判断该分组是否仍然剩余交易,如果剩余,则在该分组取出新的交易执行;否则让线程池容量-1,即去掉该分组的发送对象对应的线程。处理设备可以判断区块交易池是否为空,如果不为空,继续执行交易,否则证明所有交易执行完毕,结束流程。
参见图7,图7为本申请实施例提供的一种结合交易冲突率与发送对象进行线程池管理的示意图,由于交易对应的交易对象通常是在交易处理过程中才能得知的,比如转账交易的收款方,在执行交易后才能获知,因此只通过发送对象进行线程管理仍然存在冲突的可能。假设多个待处理交易对应的发送对象为多个,而对应的交易对象相同,就可能导致较高的交易冲突率,因此,如图7所示,在图6所示的线程池管理方式的基础上,在执行交易后会基于交易冲突率,动态调整当前的线程池容量,这里线程池容量的上限为剩余分组数量,即剩余未处理完的待处理交易所对应的发送对象数量。
基于上述实施例提供的一种动态线程池管理方法,本申请实施例还提供了一种动态线程池管理装置,参见图8,图8为本申请实施例提供的一种动态线程池管理装置800的结构框图,该装置800包括获取单元801、处理单元802、第一确定单元803、第二确定单元804和调节单元805:
所述获取单元801,用于获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
所述处理单元802,用于通过线程池中的线程处理所述多个待处理交易;
所述第一确定单元803,用于确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
所述第二确定单元804,用于根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
所述调节单元805,用于根据所述交易冲突率,调节所述线程池中的线程数量。
在一种可能的实现方式中,所述调节单元805具体用于:
响应于所述交易冲突率大于冲突率阈值,缩小所述线程池中的线程数量;
响应于所述交易冲突率小于所述冲突率阈值,扩大所述线程池中的线程数量。
在一种可能的实现方式中,所述多个待处理交易中包括第一待处理交易,所述处理单元802具体用于:
确定所述第一待处理交易对应的目标交易对象;
获取所述目标交易对象在所述数据集合中对应的第一目标数据;
通过所述线程池中的线程,根据所述第一目标数据处理所述第一待处理交易,生成所述第一待处理交易对应的待更新数据;
所述第一确定单元803具体用于:
获取所述目标交易对象在所述数据集合中对应的第二目标数据;
响应于所述第一目标数据与所述第二目标数据不同,确定所述第一待处理交易为冲突交易。
在一种可能的实现方式中,所述装置还包括更新单元:
所述更新单元,用于响应于所述第一目标数据与所述第二目标数据相同,将所述数据集合中所述目标交易对象对应的数据更新为所述待更新数据。
在一种可能的实现方式中,所述待处理交易具有对应的发送对象,所述发送对象为发送所述待处理交易的对象,所述装置还包括第三确定单元和设置单元:
所述第三确定单元,用于确定所述多个待处理交易对应的发送对象数量;
所述设置单元,用于将所述发送对象数量设置为所述线程池对应的初始线程数量;
所述处理单元802具体用于:
通过所述线程池中初始线程数量的线程处理所述多个待处理交易,所述发送对象与所述线程池中的线程一一对应。
在一种可能的实现方式中,所述多个待处理交易对应的多个发送对象中包括第一发送对象,所述装置还包括关闭单元:
所述关闭单元,用于响应于所述多个待处理交易中对应所述第一发送对象的待处理交易全部处理完毕,关闭所述第一发送对象对应的线程。
在一种可能的实现方式中,所述处理单元802具体用于:
针对每一个发送对象,设置一条对应的交易队列,所述交易队列与所述线程池中的线程一一对应,所述多个待处理交易对应的多个发送对象中包括第二发送对象,所述多个待处理交易中包括第二待处理交易,所述线程池中包括所述第二发送对象对应的目标线程,所述目标线程用于处理所述第二发送对象发送的待处理交易;
响应于第二待处理交易为所述第二发送对象发送的,将所述第二待处理交易放入所述第二发送对象对应的目标交易队列中;
响应于所述目标线程中的待处理交易处理完毕,从所述目标交易队列中获取待处理交易进行处理。
在一种可能的实现方式中,所述待处理交易集合包括M个待处理交易,所述M个待处理交易中包括第三待处理交易,所述装置还包括第四确定单元、第五确定单元和标识管理单元:
所述第四确定单元,用于确定所述线程池对应的标识记录窗口,所述标识记录窗口包括M个标识位;
所述第五确定单元,用于确定所述第三待处理交易对应的交易标识,所述交易标识用于标识所述第三待处理交易是否为冲突交易;
所述标识管理单元,用于将位于所述标识记录窗口中第M位的交易标识去除,将其它位的交易标识对应的位数加1,并将所述第三待处理交易对应的交易标识存入所述标识记录窗口的第1位,所述标识记录窗口中记录的交易标识顺序是基于交易标识存入所述标识记录窗口的顺序确定的;
所述第二确定单元804具体用于:
响应于所述M个待处理交易的交易标识存入到所述标识记录窗口中,根据所述标识记录窗口中标识交易冲突的交易标识数量与M的比值,确定所述待处理交易集合对应的交易冲突率。
本申请实施例还提供了一种计算机设备,下面结合附图对该设备进行介绍。请参见图9所示,本申请实施例提供了一种设备,该设备还可以是终端设备,该终端设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,简称PDA)、销售终端(Point of Sales,简称POS)、车载电脑等任意智能终端,以终端设备为手机为例:
图9示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图9,手机包括:射频(Radio Frequency,简称RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(Wireless Fidelity,简称WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图9中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,简称LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,简称GSM)、通用分组无线服务(GeneralPacket Radio Service,简称GPRS)、码分多址(Code Division Multiple Access,简称CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进(Long Term Evolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简称SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图9中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体检测。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,该终端设备所包括的处理器780还具有以下功能:
获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
通过线程池中的线程处理所述多个待处理交易;
确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
根据所述交易冲突率,调节所述线程池中的线程数量。
本申请实施例还提供一种服务器,请参见图10所示,图10为本申请实施例提供的服务器800的结构图,服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。
服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于图10所示的服务器结构。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行前述各个实施例所述的动态线程池管理方法中的任意一种实施方式。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例各种可选实现方式中提供的动态线程池管理方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-only memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种动态线程池管理方法,其特征在于,所述方法包括:
获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
通过线程池中的线程处理所述多个待处理交易;
确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
根据所述交易冲突率,调节所述线程池中的线程数量。
2.根据权利要求1所述的方法,其特征在于,所述根据所述交易冲突率,调节所述线程池中的线程数量,包括:
响应于所述交易冲突率大于冲突率阈值,缩小所述线程池中的线程数量;
响应于所述交易冲突率小于所述冲突率阈值,扩大所述线程池中的线程数量。
3.根据权利要求1所述的方法,其特征在于,所述多个待处理交易中包括第一待处理交易,所述通过线程池中的线程处理所述多个待处理交易,包括:
确定所述第一待处理交易对应的目标交易对象;
获取所述目标交易对象在所述数据集合中对应的第一目标数据;
通过所述线程池中的线程,根据所述第一目标数据处理所述第一待处理交易,生成所述第一待处理交易对应的待更新数据;
所述确定所述多个待处理交易中的冲突交易,包括:
获取所述目标交易对象在所述数据集合中对应的第二目标数据;
响应于所述第一目标数据与所述第二目标数据不同,确定所述第一待处理交易为冲突交易。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
响应于所述第一目标数据与所述第二目标数据相同,将所述数据集合中所述目标交易对象对应的数据更新为所述待更新数据。
5.根据权利要求1所述的方法,其特征在于,所述待处理交易具有对应的发送对象,所述发送对象为发送所述待处理交易的对象,所述方法还包括:
确定所述多个待处理交易对应的发送对象数量;
将所述发送对象数量设置为所述线程池对应的初始线程数量;
所述通过线程池中的线程处理所述多个待处理交易,包括:
通过所述线程池中初始线程数量的线程处理所述多个待处理交易,所述发送对象与所述线程池中的线程一一对应。
6.根据权利要求5所述的方法,其特征在于,所述多个待处理交易对应的多个发送对象中包括第一发送对象,所述方法还包括:
响应于所述多个待处理交易中对应所述第一发送对象的待处理交易全部处理完毕,关闭所述第一发送对象对应的线程。
7.根据权利要求5所述的方法,其特征在于,所述通过所述线程池中初始线程数量的线程处理所述多个待处理交易,包括:
针对每一个发送对象,设置一条对应的交易队列,所述交易队列与所述线程池中的线程一一对应,所述多个待处理交易对应的多个发送对象中包括第二发送对象,所述多个待处理交易中包括第二待处理交易,所述线程池中包括所述第二发送对象对应的目标线程,所述目标线程用于处理所述第二发送对象发送的待处理交易;
响应于第二待处理交易为所述第二发送对象发送的,将所述第二待处理交易放入所述第二发送对象对应的目标交易队列中;
响应于所述目标线程中的待处理交易处理完毕,从所述目标交易队列中获取待处理交易进行处理。
8.根据权利要求1所述的方法,其特征在于,所述待处理交易集合包括M个待处理交易,所述M个待处理交易中包括第三待处理交易,所述方法还包括:
确定所述线程池对应的标识记录窗口,所述标识记录窗口包括M个标识位;
确定所述第三待处理交易对应的交易标识,所述交易标识用于标识所述第三待处理交易是否为冲突交易;
将位于所述标识记录窗口中第M位的交易标识去除,将其它位的交易标识对应的位数加1,并将所述第三待处理交易对应的交易标识存入所述标识记录窗口的第1位,所述标识记录窗口中记录的交易标识顺序是基于交易标识存入所述标识记录窗口的顺序确定的;
所述根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率,包括:
响应于所述M个待处理交易的交易标识存入到所述标识记录窗口中,根据所述标识记录窗口中标识交易冲突的交易标识数量与M的比值,确定所述待处理交易集合对应的交易冲突率。
9.一种动态线程池管理装置,其特征在于,所述装置包括获取单元、处理单元、第一确定单元、第二确定单元和调节单元:
所述获取单元,用于获取待处理交易集合,所述待处理交易集合包括多个待处理交易,所述待处理交易具有对应的交易对象;
所述处理单元,用于通过线程池中的线程处理所述多个待处理交易;
所述第一确定单元,用于确定所述多个待处理交易中的冲突交易,所述冲突交易为在处理过程中,所对应交易对象在数据集合中对应的数据发生改变的待处理交易,所述数据集合用于存储所述交易对象对应的数据;
所述第二确定单元,用于根据所述待处理交易集合中冲突交易的数量,确定所述待处理交易集合对应的交易冲突率;
所述调节单元,用于根据所述交易冲突率,调节所述线程池中的线程数量。
10.一种计算机设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-8中任意一项所述的动态线程池管理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-8中任意一项所述的动态线程池管理方法。
12.一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行权利要求1-8中任意一项所述的动态线程池管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536532.1A CN117112243A (zh) | 2022-05-17 | 2022-05-17 | 一种动态线程池管理方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536532.1A CN117112243A (zh) | 2022-05-17 | 2022-05-17 | 一种动态线程池管理方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117112243A true CN117112243A (zh) | 2023-11-24 |
Family
ID=88804336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210536532.1A Pending CN117112243A (zh) | 2022-05-17 | 2022-05-17 | 一种动态线程池管理方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112243A (zh) |
-
2022
- 2022-05-17 CN CN202210536532.1A patent/CN117112243A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3506105B1 (en) | Method and device for processing a memory and storage medium | |
EP3391634B1 (en) | Electronic device and method for controlling application and component | |
WO2017034235A1 (en) | Method and apparatus for risk management based on aggregated information from multiple payment networks while maintaining anonymity of user | |
US20170078160A1 (en) | Method for processing services and electronic device for the same | |
EP3506114B1 (en) | Memory processing method and device and storage medium | |
WO2019137252A1 (zh) | 内存处理方法、电子设备、计算机可读存储介质 | |
CN106233674B (zh) | 使用令牌桶的通信的电池高效同步 | |
CN109992965B (zh) | 进程处理方法和装置、电子设备、计算机可读存储介质 | |
CN104392350A (zh) | 一种虚拟资源数据的处理方法、装置和系统 | |
US10922193B2 (en) | Data backup method, storage medium, and terminal | |
CN113393061B (zh) | 一种基于区块链的交易打包方法和相关装置 | |
CN108270839B (zh) | 访问频率控制系统及方法 | |
WO2019128553A1 (zh) | 应用程序处理方法、电子设备、计算机可读存储介质 | |
US11392674B2 (en) | Electronic device detecting privilege escalation of process, and storage medium | |
CN115509770B (zh) | 微服务调用方法、装置、电子设备及可读存储介质 | |
CN110045811B (zh) | 应用程序处理方法和装置、电子设备、计算机可读存储介质 | |
CN117112243A (zh) | 一种动态线程池管理方法和相关装置 | |
CN111581223B (zh) | 一种数据更新方法、装置、终端设备及存储介质 | |
CN111078233B (zh) | 一种应用推广的实现方法、装置、设备及存储介质 | |
CN110046031B (zh) | 应用处理方法和装置、电子设备、计算机可读存储介质 | |
CN110007968B (zh) | 信息处理方法、装置、计算机设备和计算机可读存储介质 | |
CN109993525B (zh) | 应用程序处理方法和装置、电子设备、计算机可读存储介质 | |
CN109992376B (zh) | 应用冻结方法、装置、终端及计算机可读存储介质 | |
CN113760540B (zh) | 一种任务处理方法和相关装置 | |
CN118069301A (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 |