CN107341050B - 基于动态线程池的服务处理方法和装置 - Google Patents
基于动态线程池的服务处理方法和装置 Download PDFInfo
- Publication number
- CN107341050B CN107341050B CN201610274785.0A CN201610274785A CN107341050B CN 107341050 B CN107341050 B CN 107341050B CN 201610274785 A CN201610274785 A CN 201610274785A CN 107341050 B CN107341050 B CN 107341050B
- Authority
- CN
- China
- Prior art keywords
- service
- thread
- processing
- thread pool
- request
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了基于动态线程池的服务处理方法和装置。所述方法的一具体实施方式包括:接收用户的处理请求,其中,所述处理请求包括处理任务;从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中。该实施方式实现了有效利用线程资源,按需分配线程。
Description
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及一种基于动态线程池的服务处理方法和装置。
背景技术
当前,在多用户并发向服务器发出任务处理请求的场景下,大多采用多线程并行处理的方式处理,以充分利用服务器提高处理效率。在多用户并发任务请求处理服务的处理过程中,多采用采用静态的线程池,同一服务进程中的所有不同服务处理流程共享同一个线程池;不同服务处理流程对线程资源占用时长不同,导致不同服务处理流程因为共享的线程资源而相互影响和干扰,无法做到有效隔离;也无法在业务量高峰时保障高请求量的服务处理流程得到足够的线程资源。
发明内容
本申请的目的在于提出一种改进的基于动态线程池的服务处理方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种基于动态线程池的服务处理方法,所述方法包括:接收用户的处理请求,其中,所述处理请求包括处理任务;从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,所述服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应。
在一些实施例中,所述线程池中包括至少两个服务线程池,所述线程池中不同服务线程池之间的线程相互隔离。
在一些实施例中,所述服务队列集合中服务队列的数量与所述线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。
在一些实施例中,所述根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,包括:比较所述总线程请求量和所述线程池中全部线程的数量;如果所述线程池中全部线程的数量多于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中;如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中。
在一些实施例中,所述如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中,包括:所述服务队列依据所述处理请求到达的时间顺序向与所述服务队列对应的服务线程池请求线程;当所述处理请求结束后,将处理所述处理请求的线程返回线程池。
在一些实施例中,所述如果所述线程池中全部线程的数量多于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中,包括:将所述线程请求量和预设的服务线程池阈值比较;如果所述线程请求量大于或等于所述服务线程池阈值,从线程池中分配与所述服务线程池阈值数量相同的线程到与所述服务队列对应的服务线程池中。
第二方面,本申请提供了一种基于动态线程池的服务处理装置,所述装置包括:接收单元,配置用于接收用户的处理请求,其中,所述处理请求包括处理任务;匹配单元,配置用于从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;计算单元,配置用于分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;线程分配单元,配置用于根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,所述服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应。
在一些实施例中,所述线程池中包括至少两个服务线程池,所述线程池中不同服务线程池之间的线程相互隔离。
在一些实施例中,所述服务队列集合中服务队列的数量与所述线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。
在一些实施例中,所述线程分配单元进一步配置用于:比较所述总线程请求量和所述线程池中全部线程的数量;如果所述线程池中全部线程的数量多于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中;如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中。
在一些实施例中,所述线程分配单元进一步配置用于:如果所述线程池中全部线程的数量少于所述总线程请求量,所述服务队列依据所述处理请求到达的时间顺序向与所述服务队列对应的服务线程池请求线程;当所述处理请求结束后,将处理所述处理请求的线程返回线程池。
在一些实施例中,所述线程分配单元进一步配置用于:如果所述线程池中全部线程的数量少于所述总线程请求量,将所述线程请求量和预设的服务线程池阈值比较;如果所述线程请求量大于或等于所述服务线程池阈值,从线程池中分配与所述服务线程池阈值数量相同的线程到与所述服务队列对应的服务线程池中。
本申请提供的基于动态线程池的服务处理方法和装置,通过将用户的处理请求计入到具有相同处理任务的服务队列中,计算服务队列集合中处理每个服务队列中处理请求需要的线程需求数量,根据务队列中处理请求需要的线程需求数量和处理务队列中集合中全部服务队里中的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中。实现了动态的按需分配线程池中的线程。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的基于动态线程池的服务处理方法的一个实施例的流程图;
图3是根据本申请的基于动态线程池的服务处理方法的一个应用场景的示意图;
图4是根据本申请的基于动态线程池的服务处理方法的又一个实施例的流程图;
图5是根据本申请的基于动态线程池的服务处理方法的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的基于动态线程池的服务处理方法或基于动态线程池的服务处理装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、搜索类应用、网页浏览器应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持购物类应用的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的购物类应用提供支持的后台处理服务器。后台处理服务器可以对接收到的用户处理请求等数据按照处理任务将用户的处理请求通过服务接口服务线程池请求提供服务线程,执行服务处理流程。
需要说明的是,本申请实施例所提供的基于动态线程池的服务处理方法一般由服务器105执行,相应地,基于动态线程池的服务处理方法装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的基于动态线程池的服务处理方法的一个实施例的流程200。所述的基于动态线程池的服务处理方法,包括以下步骤:
步骤201,接收用户的处理请求。
在本实施例中,基于动态线程池的服务处理方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式从用户利用其进行网络购物的终端接收用户的处理请求,其中,上述用户请求包括了该处理请求的处理任务,这里处理任务是服务器需要为处理请求提供的服务处理流程,如,处理任务可以是查询订单中商品价格、请求下单或请求支付等处理任务。
通常,用户利用终端上安装的应用类软件向服务器发出处理请求,如,请求对数据进行查询、或在订单处理中请求下单处理、支付处理等各种请求。
步骤202,从预设的服务队列集合中选出与处理请求具有相同处理任务的服务队列,将该处理请求加入选出的服务队列。
在本实施例中,基于步骤201中得到的用户请求的处理任务,上述电子设备(例如图1所示的服务器)可以在预设的缓存区域中预设队列服务集合,上述队列服务集合包括多个服务队列,每个服务队列是由具有相同处理任务的处理请求组成。每个服务队列为一个独立的服务调用请求方,通过预先设置的服务接口链接到处理该类处理任务的服务线程池,向该服务线程池请求分配线程去执行服务处理流程。上述电子设备根据用户的处理请求从上述预设的服务队列集合中选出与该处理请求具有相同处理任务的服务队列,并将上述处理请求加入该服务队列。
在本实施例的一些可选的实现方式中,上述服务队列集合中服务队列的数量与线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。这里,服务队列用于将具有相同任务的处理请求链接到同一服务线程池,实现在同一个服务线程池的线程处理相同处理任务的处理请求,提高处理效率。
步骤203,分别计算处理上述服务队列集合中每个服务队列的处理请求需要的线程请求量。
在本实施例中,上述电子设备基于步骤202中选出的服务队列,根据处理该服务队列中单个处理任务的时间和该服务队列中处理请求的数量计算处理上述服务队列中的全部处理请求需要的线程数量,这里,处理上述服务队列中的全部处理请求需要的线程数量为该服务队列的线程请求量。分别计算上述服务队列集合中的每个服务队列的线程请求量,由上述服务队列集合中的每个服务队列的线程请求量计算计算服务队列集合中的全部服务队列的总线程请求量。
步骤204,根据每个服务队列的处理请求需要的线程请求量和服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与服务队列集合中服务队列对应的服务线程池中。
在本实施例中,上述电子设备基于步骤203中的计算结果,可以将线程池中的线程依据服务队列的线程请求量和服务队列集合中全部服务队列的总线程请求量之间的关系进行分配。这里,可以依据各个服务队列的线程请求量与总线程请求量的比值,按照上述比值关系分别为与该服务队列对应的服务线程池分配线程。这里,服务队列集合中的服务队列分别与线程池中的服务线程池一一对应。
在本实施例的一些可选的实现方式中,上述电子设备内的线程池中包括至少两个服务线程池,线程池中不同服务线程池之间的线程相互隔离。这里,线程池中服务线程池的数量可预先设置,根据具有不同处理任务的数量而设置。例如,处理任务有:订单服务和查询服务,则服务线程池的数量设置为2个,分别为上述订单服务和查询服务的处理请求提供处理线程;如果,处理任务有:订单服务、查询服务和评估服务,则服务线程池的数量设置为3个,分别为上述订单服务、查询服务和评估服务的处理请求提供处理线程。按照处理任务不同设置不同的服务线程,可以减少不同处理任务在同一服务线程中因处理不同处理任务需要的时间不同而出现的等待时间所产生的延迟释放线程。
在本实施例的一些可选的实现方式中,上述电子设备可以根据服务队列集合需要的的总线程请求量和线程池中的全部线程的数量之间的关系将线程池的线程分配到服务线程池中。这里,比较总线程请求量和线程池中全部线程的数量;如果线程池中全部线程的数量多于总线程请求量,则线程池中的线程充足,可以按照服务队列的处理需求分配线程,可以从线程池中分配数量与线程请求量数量相同的线程到服务队列对应的服务线程池中。如果线程池中全部线程的数量少于总线程请求量,则线程池中的线程不足,可以按照线程请求量与总线程请求量的比值关系,从线程池中按照上述比值关系将线程分配到与服务队列对应的服务线程池中。其中,上述按照比值关系分配线程到服务线程池中,是将线程池中线程的数量按照上述比值关系取整后得到数为分配到与服务队列对应的服务线程池中线程的数量。
继续参见图3,图3是根据本实施例的基于动态线程池的服务处理方法应用场景的一个示意图。在图3的应用场景中,服务队列集合中的服务队列通过调用与其对应的服务接口向服务线程池请求分配线程。这里,服务队列集合中的服务队列为服务调用方,线程池中的服务线程池为服务提供方,服务调用方通过调用服务接口向服务提供方请求分配线程。如图3-A所示,作为示例,服务调用方有两种类型处理任务的服务队列,相应的在服务提供方两个服务线程池,这里可以使用编号予以区别,编号本身没有先后顺序,也不构成在数量上的限定。服务队列集合中有服务队列A和服务队列B,线程池中具有服务线程池A和服务线程池B,服务线程池A和服务线程池B相互独立,线程资源相互隔离。服务队列A通过调用服务接口A向服务线程池A请求分配线程,服务队列B通过调用服务接口B向服务线程池B请求分配线程。在图3-A中,在初始时,可以为服务线程池A和服务线程池B可以分配相同数量的线程,用圆形区域的大小表示服务线程池中线程的数量,在线程请求少的时候,可以将线程池中的线程按需分配到服务线程池A和服务线程池B中。如图3-B所示,当服务队列A的A类请求量上升的时候(这里使用粗箭头表示),则对应A类的服务线程池A的线程增加,服务线程池A的大小变大(用更大的圆形区域表示)。这里,通过服务提供方的线程协调器根据服务队列的处理请求需要的线程请求量将线程池中相应数量的线程分配到服务线程池A或服务线程池B中。
本申请的上述实施例提供的方法通过将线程池中的线程按照服务队列线程请求量分配到服务线程池中,实现有效利用线程资源按需分配线程。
进一步参考图4,其示出了基于动态线程池的服务处理方法的又一个实施例的流程400。该基于动态线程池的服务处理方法的流程400,包括以下步骤:
步骤401,接收用户的处理请求。
在本实施例中,基于动态线程池的服务处理方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式从用户利用其进行网络购物的终端接收用户的处理请求,其中,上述用户请求包括了该处理请求的处理任务,这里处理任务是服务器需要为处理请求提供的服务处理流程。
步骤402,从预设的服务队列集合中选出与处理请求具有相同处理任务的服务队列,将该处理请求加入选出的服务队列。
在本实施例中,基于步骤401中得到的用户请求的处理任务,上述电子设备(例如图1所示的服务器)可以在预设的缓存区域中设置队列服务集合,上述队列服务集合中包括多个服务队列,每个服务队列是由具有相同处理任务的处理请求组成。每个服务队列为一个独立的服务调用请求方,通过该类服务接口链接到处理该类处理任务的服务线程池,向该服务线程池请求分配线程去执行服务处理流程。上述电子设备根据用户的处理请求从上述预设的服务队列集合中选出与该处理请求具有相同处理任务的服务队列,并将上述处理请求加入该服务队列。
步骤403,分别计算处理上述服务队列集合中每个服务队列的处理请求需要的线程请求量。
在本实施例中,上述电子设备基于步骤402中选出的服务队列,根据处理该服务队列中单个处理任务的时间和该服务队列中处理请求的数量计算处理上述服务队列中的全部处理请求需要的线程数量。这里,处理上述服务队列中的全部处理请求需要的线程数量为该服务队列的线程请求量。分别计算上述服务队列集合中的每个服务队列的线程请求量,由上述服务队列集合中的每个服务队列的线程请求量计算计算服务队列集合中的全部服务队列的总线程请求量。
步骤404,服务队列依据处理请求到达的时间顺序依次向服务线程池请求分配线程。
在本实施例中,利用步骤403的计算的总线程请求量,如果线程池中全部线程的数量少于总线程请求量,服务队列依据处理请求到达的时间顺序依次向与该服务队列对应的服务线程池请求分配线程。通常可以默认按照先来先处理的原则(FIFO)向服务线程池请求分配线程,如,线程池配置为100个线程,那么同时可处理100个处理请求,并发处理请求量超过100则在服务队列等待处理;若并发处理请求不足100时,来一个请求从线程池里分配一个线程处理,先来先处理,处理完成后线程放回线程池中。
步骤405,根据每个服务队列的处理请求需要的线程请求量和服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与服务队列集合中服务队列对应的服务线程池中。
在本实施例中,上述电子设备基于步骤403中的计算结果,可以将线程池中的线程依据服务队列的线程请求量和服务队列集合中全部服务队列的总线程请求量之间的关系进行分配。这里,可以依据各个服务队列的线程请求量与总线程请求量的比值,按照上述比值关系分别为与该服务队列对应的服务线程池分配线程。这里,服务队列集合中的服务队列分别与线程池中的服务线程池一一对应。
在本实施例的一些可选的实现方式中,上述电子设备可以根据线程池中全部线程的数量和总线程请求量的关系分配线程。如果线程池中全部线程的数量少于总线程请求量,将线程请求量和预设的服务线程池阈值比较,如果线程请求量大于或等于服务线程池阈值,从线程池中分配与务线程池阈值相同数量的线程到与该服务队列对应的服务线程池中。这里,设置服务线程池阈值可以防止,某一相同处理任务的服务请求同一时刻大量占用线程资源,而使其他处理任务的服务请求处于长时等待过程。
从图4中可以看出,与图2对应的实施例相比,本实施例中的基于动态线程池的服务处理方法的流程400突出了服务队列依据处理请求到达的时间顺序依次向与该服务队列对应的服务线程池请求分配线程的步骤。由此,本实施例描述的方案可以按照服务请求的顺序依次向线程池请求分配线程,可以实现更全面的线程的分配和服务处理流程的执行。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种基于动态线程池的服务处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例所述的基于动态线程池的服务处理装置500包括:接收单元501、匹配单元502、计算单元503、线程分配单元504。其中,接收单元501配置用于接收用户的处理请求,其中,处理请求包括处理任务;匹配单元502配置用于从预设的服务队列集合中选出与处理请求具有相同处理任务的服务队列,将处理请求加入服务队列;计算单元503配置用于分别计算处理服务队列集合中每个服务队列的处理请求需要的线程请求量;线程分配单元504配置用于根据每个服务队列的处理请求需要的线程请求量和服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与服务队列集合中服务队列对应的服务线程池中,服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应。
在本实施例中,基于动态线程池的服务处理装置500的接收单元501可以通过有线连接方式或者无线连接方式从用户利用其进行网络购物的终端接收用户的处理请求,其中,上述用户请求包括了该处理请求的处理任务。
在本实施例中,基于接收单元501得到的处理请求,上述匹配单元502从上述预设的服务队列集合中选出与该处理请求具有相同处理任务的服务队列,并将上述处理请求加入该服务队列。
在本实施例中,计算单元503根据处理该服务队列中单个处理任务的时间和该服务队列中处理请求的数量计算处理上述服务队列中的全部处理请求需要的线程数量,这里,处理上述服务队列中的全部处理请求需要的线程数量为该服务队列的线程请求量。
在本实施例中,基于计算单元503的计算结果,线程分配单元504可以将线程池中的线程依据服务队列的线程请求量和服务队列集合中全部服务队列的总线程请求量之间的关系进行分配。这里,服务队列集合中的服务队列分别与线程池中的服务线程池一一对应。
在本实施例的一些可选的实现方式中,基于动态线程池的服务处理装置500的线程池中包括至少两个服务线程池,其中,线程池中不同服务线程池之间的线程相互隔离。
在本实施例的一些可选的实现方式中,基于动态线程池的服务处理装置500在缓存区域预设的服务队列集合中服务队列的数量与线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。
在本实施例的一些可选的实现方式中,基于动态线程池的服务处理装置500线程分配单元504进一步配置用于:比较总线程请求量和线程池中全部线程的数量;如果线程池中全部线程的数量多于总线程请求量,按照服务队列需要的线程请求量从线程池中分配线程到服务线程池中;如果线程池中全部线程的数量少于总线程请求量,按照线程请求量与总线程请求量的比值关系从线程池中分配线程到服务线程池中。
在本实施例的一些可选的实现方式中,基于动态线程池的服务处理装置500线程分配单元504进一步配置用于:如果线程池中全部线程的数量少于总线程请求量,服务队列依据处理请求到达的时间顺序向服务线程池请求分配线程执行处理流程;当处理请求结束后,将处理该处理请求的线程返回线程池。
在本实施例的一些可选的实现方式中,基于动态线程池的服务处理装置500线程分配单元504进一步配置用于:如果线程池中全部线程的数量少于总线程请求量,将线程请求量和预设的服务线程池阈值比较;如果线程请求量大于或等于所述服务线程池阈值,从线程池中分配与服务线程池阈值数量相同的线程到与服务队列对应的服务线程池中。
下面参考图6,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机***600的结构示意图。
如图6所示,计算机***600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、匹配单元、计算单元、线程分配单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收用户的处理请求的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收用户的处理请求,其中,所述处理请求包括处理任务;从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,所述服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种基于动态线程池的服务处理方法,其特征在于,所述方法包括:
接收用户的处理请求,其中,所述处理请求包括处理任务;
从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;
分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;
根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,所述服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应;
其中,所述根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,包括:
比较所述总线程请求量和所述线程池中全部线程的数量;
如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中。
2.根据权利要求1所述的方法,其特征在于,所述线程池中包括至少两个服务线程池,所述线程池中不同服务线程池之间的线程相互隔离。
3.根据权利要求1所述的方法,其特征在于,所述服务队列集合中服务队列的数量与所述线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。
4.根据权利要求1所述的方法,其特征在于,所述根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,还包括:
如果所述线程池中全部线程的数量多于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中。
5.根据权利要求4所述的方法,其特征在于,所述如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中,包括:
所述服务队列依据所述处理请求到达的时间顺序向与所述服务队列对应的服务线程池请求线程;
当所述处理请求结束后,将处理所述处理请求的线程返回线程池。
6.根据权利要求1-5之一所述的方法,其特征在于,所述如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中,包括:
将所述线程请求量和预设的服务线程池阈值比较;
如果所述线程请求量大于或等于所述服务线程池阈值,从线程池中分配与所述服务线程池阈值数量相同的线程到与所述服务队列对应的服务线程池中。
7.一种基于动态线程池的服务处理装置,其特征在于,所述装置包括:
接收单元,配置用于接收用户的处理请求,其中,所述处理请求包括处理任务;
匹配单元,配置用于从预设的服务队列集合中选出与所述处理请求具有相同处理任务的服务队列,将所述处理请求加入所述服务队列;
计算单元,配置用于分别计算处理所述服务队列集合中每个服务队列的处理请求需要的线程请求量;
线程分配单元,配置用于根据每个服务队列的处理请求需要的线程请求量和所述服务队列集合中全部服务队列的处理请求需要的总线程请求量之间的关系,分别从线程池中分配相应数量的线程到与所述服务队列集合中服务队列对应的服务线程池中,所述服务队列集合中的服务队列分别与所述线程池中的服务线程池一一对应;
其中,所述线程分配单元进一步配置用于:
比较所述总线程请求量和所述线程池中全部线程的数量;
如果所述线程池中全部线程的数量少于所述总线程请求量,按照所述线程请求量与所述总线程请求量的比值关系从线程池中分配线程到与所述服务队列对应的服务线程池中。
8.根据权利要求7所述的装置,其特征在于,所述线程池中包括至少两个服务线程池,所述线程池中不同服务线程池之间的线程相互隔离。
9.根据权利要求7所述的装置,其特征在于,所述服务队列集合中服务队列的数量与所述线程池中服务线程池的数量相同,其中,每个服务队列中的处理请求具有相同处理任务。
10.根据权利要求7所述的装置,其特征在于,所述线程分配单元进一步还配置用于:
如果所述线程池中全部线程的数量多于所述总线程请求量,按照所述线程请求量从线程池中分配线程到与所述服务队列对应的服务线程池中。
11.根据权利要求10所述的装置,其特征在于,所述线程分配单元进一步配置用于:
如果所述线程池中全部线程的数量少于所述总线程请求量,所述服务队列依据所述处理请求到达的时间顺序向与所述服务队列对应的服务线程池请求线程;
当所述处理请求结束后,将处理所述处理请求的线程返回线程池。
12.根据权利要求7-11之一所述的装置,其特征在于,所述线程分配单元进一步配置用于:
如果所述线程池中全部线程的数量少于所述总线程请求量,将所述线程请求量和预设的服务线程池阈值比较;
如果所述线程请求量大于或等于所述服务线程池阈值,从线程池中分配与所述服务线程池阈值数量相同的线程到与所述服务队列对应的服务线程池中。
13.一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274785.0A CN107341050B (zh) | 2016-04-28 | 2016-04-28 | 基于动态线程池的服务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610274785.0A CN107341050B (zh) | 2016-04-28 | 2016-04-28 | 基于动态线程池的服务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341050A CN107341050A (zh) | 2017-11-10 |
CN107341050B true CN107341050B (zh) | 2022-12-27 |
Family
ID=60221680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610274785.0A Active CN107341050B (zh) | 2016-04-28 | 2016-04-28 | 基于动态线程池的服务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341050B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872398A (zh) * | 2017-06-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 高并发数据处理方法、装置及计算机可读存储介质 |
CN110231981B (zh) * | 2018-03-06 | 2022-12-13 | 华为技术有限公司 | 服务调用方法及装置 |
CN108681481B (zh) * | 2018-03-13 | 2021-10-15 | 创新先进技术有限公司 | 业务请求的处理方法及装置 |
CN110413419A (zh) * | 2018-04-28 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 一种规则执行的方法和装置 |
CN108846632A (zh) * | 2018-05-28 | 2018-11-20 | 浙江口碑网络技术有限公司 | 线程处理方法及装置 |
CN109254933A (zh) * | 2018-09-25 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种io请求的处理方法、***及相关组件 |
CN109710402A (zh) * | 2018-12-17 | 2019-05-03 | 平安普惠企业管理有限公司 | 处理资源获取请求的方法、装置、计算机设备和存储介质 |
CN109814994B (zh) * | 2019-01-03 | 2021-10-08 | 福建天泉教育科技有限公司 | 一种动态调度线程池的方法及终端 |
CN110018892A (zh) * | 2019-03-12 | 2019-07-16 | 平安普惠企业管理有限公司 | 基于线程资源的任务处理方法及相关装置 |
CN110569123B (zh) * | 2019-07-31 | 2022-08-02 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
CN111679900B (zh) * | 2020-06-15 | 2023-10-31 | 杭州海康威视数字技术股份有限公司 | 任务处理方法和装置 |
CN113794650B (zh) * | 2021-09-16 | 2024-06-21 | 深圳平安智慧医健科技有限公司 | 并发请求的处理方法、计算机设备和计算机可读存储介质 |
CN114217947A (zh) * | 2021-11-04 | 2022-03-22 | 北京百度网讯科技有限公司 | 任务执行方法、装置、电子设备及可读存储介质 |
CN114374657A (zh) * | 2022-01-04 | 2022-04-19 | 京东科技控股股份有限公司 | 一种数据处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理*** |
CN102855293A (zh) * | 2012-08-10 | 2013-01-02 | 广东电网公司电力科学研究院 | 一种电动汽车及充换电设施***海量数据处理方法 |
CN103810072A (zh) * | 2012-11-09 | 2014-05-21 | 上海飞田通信技术有限公司 | 保障多线程任务有序执行的装置及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294531B (zh) * | 2012-03-05 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种任务分配方法及*** |
CN102629220A (zh) * | 2012-03-08 | 2012-08-08 | 北京神州数码思特奇信息技术股份有限公司 | 一种动态任务分配管理方法 |
CN102722417B (zh) * | 2012-06-07 | 2015-04-15 | 腾讯科技(深圳)有限公司 | 一种扫描任务的分配方法和装置 |
CN103677997B (zh) * | 2012-09-21 | 2017-04-12 | 宏达国际电子股份有限公司 | 多核心装置以及其多线程调度方法 |
CN103197968B (zh) * | 2013-03-18 | 2016-03-30 | 焦点科技股份有限公司 | 一种融合同步异步特点的线程池处理方法及*** |
CN103268247B (zh) * | 2013-06-05 | 2017-01-18 | 中国电子科技集团公司第十五研究所 | 任务执行及调整线程池中保留线程的数量的方法和装置 |
CN103455377B (zh) * | 2013-08-06 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 用于管理业务线程池的***和方法 |
CN103473129B (zh) * | 2013-09-18 | 2017-01-18 | 深圳前海大数金融服务有限公司 | 线程数目可伸缩的多任务队列调度***及其实现方法 |
CN103605498B (zh) * | 2013-12-05 | 2016-07-06 | 用友网络科技股份有限公司 | 单线程任务的多线程执行方法及*** |
CN105389208B (zh) * | 2015-11-10 | 2018-12-14 | 中国建设银行股份有限公司 | 作业处理方法及装置 |
-
2016
- 2016-04-28 CN CN201610274785.0A patent/CN107341050B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855293A (zh) * | 2012-08-10 | 2013-01-02 | 广东电网公司电力科学研究院 | 一种电动汽车及充换电设施***海量数据处理方法 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理*** |
CN103810072A (zh) * | 2012-11-09 | 2014-05-21 | 上海飞田通信技术有限公司 | 保障多线程任务有序执行的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107341050A (zh) | 2017-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341050B (zh) | 基于动态线程池的服务处理方法和装置 | |
CN109936635B (zh) | 负载均衡方法和装置 | |
CN111666147B (zh) | 资源调度方法、设备、***及中心服务器 | |
CN107832143B (zh) | 一种物理机资源的处理方法和装置 | |
CN112379982B (zh) | 任务处理方法、装置、电子设备及计算机可读存储介质 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
CN112686528A (zh) | 用于分配客服资源的方法、装置、服务器和介质 | |
CN115237589A (zh) | 一种基于sr-iov的虚拟化方法、装置和设备 | |
CN110113176B (zh) | 用于配置服务器的信息同步方法及装置 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN107045452B (zh) | 虚拟机调度方法和装置 | |
CN112561301A (zh) | 工单分配方法、装置、设备和计算机可读介质 | |
CN107634978B (zh) | 一种资源调度方法及装置 | |
CN113051456A (zh) | 请求处理方法、装置、电子设备和计算机可读介质 | |
CN109842665B (zh) | 用于任务分配服务器的任务处理方法和装置 | |
US10979359B1 (en) | Polling resource management system | |
CN113765966A (zh) | 一种负载均衡方法和装置 | |
CN107609852B (zh) | 用于处理支付请求的方法和装置 | |
CN113096295B (zh) | 排号方法、排号装置、电子设备及计算机可读存储介质 | |
CN108683608B (zh) | 分配流量的方法和装置 | |
CN111093281B (zh) | 分配资源的方法和装置 | |
CN110187957B (zh) | 一种下载任务的排队方法、装置及电子设备 | |
CN114461401A (zh) | 资源调度方法方法、装置、电子设备及存储介质 | |
CN109471574B (zh) | 用于配置资源的方法及装置 | |
CN114489978A (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 |