基于ganesha服务的多线程池调度方法及调度终端技术

技术编号:24330754 阅读:18 留言:0更新日期:2020-05-29 19:31
本发明专利技术提供了基于ganesha服务的多线程池调度方法,所述的方法包括以下过程:S1:预设多个线程池,各个线程池接纳不同的业务;S2:识别业务的类型和大小;S3:根据所述业务的大小,选择可容纳该业务处理能力的线程池。通过该方案,ganesha服务启动时创建多个线程池,既满足某些请求高并发的需求,同时也满足某些请求单一线程顺序处理的需求。同时,本发明专利技术还提供了用于实现该方法的终端。

【技术实现步骤摘要】
基于ganesha服务的多线程池调度方法及调度终端
本专利技术涉及计算机
,特别是涉及一种基于ganesha服务的多线程池调度方法及调度终端。
技术介绍
目前,ganesha服务有一个线程池,用于并发处理所有的业务请求。请求被处理时,一个请求占用一个线程,在处理过程中,所有线程并发处理,由各业务请求竞争各线程,当一个文件某请求类型卡死时,该卡死请求会大量占用线程,导致线程池所有线程均卡死,服务不可用。除了会导致卡死外,基于上述缺陷,对读请求使用单一线程顺序处理提高预读命中率的场景,当前方案也无法满足需求。
技术实现思路
为了解决现有技术中的问题,本专利技术实施例中提供了一种基于ganesha服务的多线程池调度方法及调度终端。为了解决上述技术问题,本专利技术实施例公开了如下技术方案:本专利技术实施例提供了一种基于ganesha服务的多线程池调度方法,所述的方法包括以下过程:S1:预设多个线程池,各个线程池接纳不同的业务;S2:识别业务的类型和大小;S3:根据所述业务的大小,选择可容纳该业务处理能力的线程池。进一步的,所述的方法还包括:S4:创建一个独立的线程组处理该业务。进一步的,步骤S4的具体实现过程为:基于业务解析请求数;选择和请求数量相同的线程;基于选择的线程创建一个线程组;将该线程组与线程池内的其它线程隔离;接收业务请求并处理。进一步的,步骤S1的具体实现过程为:r>预设多个线程池;设定每个线程池含有线程数量、线程池线程并发数、使用该线程池的请求类型。优选的,设定线程池请求类型时,预留至少一个线程池,指定全部业务类型或不指定业务类型,用于处理未指定的业务请求类型。进一步的,步骤S2中,文件大小包括预解析业务的请求数量。进一步的,步骤S3中,可容纳该业务处理能力的线程池包括:该线程池的线程数大于业务请求数。本专利技术实施例还提供了一种基于ganesha服务的多线程池调度终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:S1:预设多个线程池,各个线程池接纳不同的业务;S2:识别业务的类型和大小;S3:根据所述业务的大小,选择可容纳该业务处理能力的线程池。进一步的,所述处理器执行所述计算机程序时,还实现了以下步骤:S4:创建一个独立的线程组处理该业务。更进一步的,所述处理器执行所述计算机程序实现骤S4时,具体的步骤包括:基于业务解析请求数;选择和请求数量相同的线程;基于选择的线程创建一个线程组;将该线程组与线程池内的其它线程隔离;接收业务请求并处理。上述技术方案的有益效果在于:通过该方案,ganesha服务启动时创建多个线程池,每个线程池可单独设置并发处理同一个文件对应请求的并发数,且线程池个数及线程数量、并发数均可配置。通过该方案可实现多种线程池处理方案,既满足某些请求高并发的需求,同时也满足某些请求单一线程顺序处理的需求。附图说明了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术一种实施例的方法的流程图;图2为本专利技术另一种实施例的方法流程图。具体实施方式为了使本
的人员更好地理解本专利技术中的技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。实施例1参见图1,为本专利技术实施例提供的一种基于ganesha服务的多线程池调度方法,所述的方法包括以下过程:S1:预设多个线程池,各个线程池接纳不同的业务,包括每个线程池含有线程数量、线程池线程并发数、使用该线程池的请求类型(如读请求、写请求、创建目录请求等)。优选的,设定线程池请求类型时,预留至少一个线程池,指定全部业务类型或不指定业务类型,选取预留的一个线程池作为原始默认线程池,所有未指定的业务请求类型均使用该线程池线程处理。S2:识别业务的类型和大小。其中,对于业务的大小,主要是通过预解析业务,计算出该业务的请求数量,并以此为文件大小的判断标准。需要注意的是,预解析的过程并不是实际解析的过程,仅仅是实际解析过程的模拟操作,并不会产生实际请求,仅仅是为了预估请求数量。S3:根据所述业务的大小,选择可容纳该业务处理能力的线程池,在实际选择中,只要保证所述的线程池的线程数大于业务请求数,即为满足要求。对于某一个业务而言,可能存在多个满足要求的线程池,其选择的方法可以采用随机指定、编号排序、优先级排序等方法,这些方法的实现原理如下:随机指定:该方法虽然是随机选择一个线程池,但是随着时间的累积,业务数量的累计,当样本数量足够多时,要保证所有该类型的线程池,其被选择的频率是大体相同的,主要是为了避免对某一个或几个线程池的过度使用。编号排序:该方法对全部或同一类型的线程池进行编号,按照编号的顺序选择。例如,将处理读操作的线程池编号为1-10,当一个新的读业务出现时,识别到能处理该业务的线程池编号为1、3、4、5、8,而其中1、5被占用,那么按照编号顺序,选择编号为3的线程池。优先级排序:该方法指的优先级可以是自定义的,也可以是基于线程池处理业务的效率值排名,其实现的具体过程与编号排序相同。基于上述实施例1的方法,本专利技术实施例还提供了一种基于ganesha服务的多线程池调度终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例1的步骤。实施例2参见图2,为本专利技术另一种实施例中,同样提供了一种基于ganesha服务的多线程池调度方法,相比于实施例1,实施例2的方法在实施例1方法的基础上,增加了以下步骤:S4:创建一个独立的线程组处理该业务。进一步的,步骤S4的具体实现过程为:1)基于业务解析请求数,该过程为实际执行的过程,需要解析出该业务的具体请求。2)基于解析出的请求数量,从该线程池中任意选择和请求数量相同的线程。3)创建一个线程组,将选择的线程加入到该线程组中。4)将该线程组与线程池内的其它线程隔离,如果该线程池内已经存在其它线程组,则各线程组互不干扰。5)利用创建完成的线程组接收业务请求并处理。先增加的步骤S4,使用创建的线程组处理业务,既能满足业务处理要求,又能保证在业务发生问本文档来自技高网...

【技术保护点】
1.基于ganesha服务的多线程池调度方法,其特征在于,所述的方法包括以下过程:/nS1:预设多个线程池,各个线程池接纳不同的业务;/nS2:识别业务的类型和大小;/nS3:根据所述业务的大小,选择可容纳该业务处理能力的线程池。/n

【技术特征摘要】
1.基于ganesha服务的多线程池调度方法,其特征在于,所述的方法包括以下过程:
S1:预设多个线程池,各个线程池接纳不同的业务;
S2:识别业务的类型和大小;
S3:根据所述业务的大小,选择可容纳该业务处理能力的线程池。


2.根据权利要求1所述的基于ganesha服务的多线程池调度方法,其特征在于,所述的方法还包括:
S4:创建一个独立的线程组处理该业务。


3.根据权利要求2所述的基于ganesha服务的多线程池调度方法,其特征在于,步骤S4的具体实现过程为:
基于业务解析请求数;
选择和请求数量相同的线程;
基于选择的线程创建一个线程组;
将该线程组与线程池内的其它线程隔离;
接收业务请求并处理。


4.根据权利要求1或2所述的基于ganesha服务的多线程池调度方法,其特征在于,步骤S1的具体实现过程为:
预设多个线程池;
设定每个线程池含有线程数量、线程池线程并发数、使用该线程池的请求类型。


5.根据权利要求4所述的基于ganesha服务的多线程池调度方法,其特征在于,设定线程池请求类型时,预留至少一个线程池,指定全部业务类型或不指定业务类型,用于处理未指定的业务请求类型。

...

【专利技术属性】
技术研发人员:张帅李杰
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1