背景技术
分布式系统是多个进程共同完成业务逻辑,在多个进程协同完成业务功能时,存在进程间调用线程的阻塞,如:用户登录,当Flash客户端发送登录消息给Socket服务器,Socket服务器在接收到消息后会将消息转发给业务逻辑进程处理,此时Socket服务器的发送线程处于阻塞状态,如果业务逻辑比较复杂,需要消耗比较长的时间,那么Socket服务器的阻塞线程可能被超时中止,导致业务逻辑处理失败。如果在同一时刻有大量的阻塞线程,这会大大削减分布式系统的秒处理能力和吞吐量,使分布式系统效率大幅下降。
当某进程处于高压状况下,如一秒钟内要处理上万个业务逻辑处理请求,此时该进程要分配很多线程、cpu、内存来处理这些业务逻辑请求,这样会导致计算机资源在很短时间内被消耗光,如:cpu运用率达100%;内存消耗过高,超过进程最大内存,导致进程崩溃,分布式系统功能链断开,无法完成业务功能。
运用“即时通信任务队列调度器”(简称调度器)可解决上述问题,具体逻辑如下:
分布式进程1调用分布式进程2,让进程2处理某业务逻辑。进程2收到进程1的请求后,将此任务放入“任务队列”中,调度线程立即返回,释放调度线程资源;当任务队列有任务时,队列调度器会根据调度算法调度任务队列中的任务,然后将任务抛给线程池。
线程池收到任务后,先将该任务放入等待队列中;如果此时线程池内有大量任务,则该任务将在等待队列中排队,直到线程池将该任务调度至工作队列。当该任务到工作队列时,线程池会分配一条空闲线程去处理该任务,具体任务的处理转入业务逻辑处理。
上述任务队列调度逻辑,虽然可有效缓解进程高并发带来的资源消耗问题,提高系统的秒处理速度和吞吐量;但是,也造成了以下缺点:任务处理与线程调度是无序的,使得线程资源调用、任务处理不能实现最优化和及时性。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明的技术原理如下:
在调度控制处理模块中预设线程空闲率与任务处理优先级等级对照表;任务处理时,所述调度控制处理模块根据所述任务等级及所述对照表,查找调用对应等级的空闲率线程,处理所述任务;若所述对应等级的空闲率线程被调用完毕,则调用下一等级的空闲率线程,直至任务处理完毕。
其中,若线程空闲率等级、任务等级均设置为4级,则线程空闲率与任务处理优先级等级对照关系为:
线程空闲率等级为4对应任务等级为4的任务;线程空闲率等级为3对应任务等级为3的任务;线程空闲率等级为2对应任务等级为2的任务;线程空闲率等级为1对应任务等级为1的任务。
其中,若调度控制处理模块调度等级4任务时,调用线程存储模块中线程空闲率等级为4的线程进行处理,若线程空闲率等级为4的线程调用完毕还无法处理完该等级任务,则所述调度控制处理模块调用线程空闲率等级为3的线程进行处理。
其中,若线程空闲率等级为3的线程中没有多余的线程可供调用,则调度控制处理模块调用线程空闲率等级为2的线程进行处理,直至处理完该任务。
其中,线程空闲率等级为3的线程中没有多余的线程可供调用的情形包括但不限于:线程空闲率等级为3的线程已被调用完毕。
其中,若调度控制处理模块调度等级为3和4的任务时的处理过程如下:调度控制处理模块调用线程存储模块中线程空闲率等级为4的线程处理等级为4的任务,调用线程存储模块中线程空闲率等级为3的线程处理等级为3的任务时;若线程空闲率等级为4的线程调用完,还无法处理完等级为4的任务,则判断线程空闲率等级为3的线程是否已被调度控制处理模块调用完毕,若调用完毕且线程空闲率等级为2的线程没有被调用完,则调度控制处理模块调用线程空闲率等级为2的线程进行处理。
其中,若线程空闲率等级为3的线程被调用完毕后还无法处理完等级为3的任务,则判断线程空闲率等级为2的线程是否被调用完毕,若没有,则调度控制器调度调用线程空闲率等级为2的线程进行处理。
图1所示为根据本发明的较佳实施例提供的用于信息处理系统的示意图,包括:分布式进程1、分布式进程2,其中,分布式进程2中包括:任务队列模块、调度控制处理模块、线程存储模块。其中,分布式进程、任务队列模块、调度控制处理模块可以为一个或多个;线程存储模块中的线程数量的初始值是系统设定的,可以根据需要,进行线程的创建。
在调度控制处理模块中,预设线程空闲率与任务处理优先级等级对照表。例如,当线程空闲率设置为4级(等级越高,则被调用的优先级越高),任务等级设置为4级(等级越高,任务重要性也越大),则线程空闲率与任务处理优先级等级对应关系可以给出如下设置:线程空闲率为80%~100%的任务处理优先级对应第4等级,此时:若第4等级的任务分配过来后,则优先调用空闲率为80%~100%线程进行处理。
线程空闲率为60%~80%的任务处理优先级对应第3等级,此时:若第3等级的任务分配过来后,则优先调用空闲率为60%~80%的线程进行处理。
线程空闲率为40%~60%的任务处理优先级对应第2等级,此时:若第2等级的任务分配过来后,则优先调用空闲率为40%~60%的线程进行处理。
线程空闲率为0%~40%的任务处理优先级对应第1等级,此时:若第1等级的任务分配过来后,则优先调用空闲率为0%~40%的线程进行处理。
于此,空闲率越大线程优先级等级越高;然而,本发明并不限定于此。上述任务处理优先级等级以及其与线程空闲率的对应关系可根据实际需要进行设定。
接下举例来描述任务处理的详细过程:
分布式进程1处理等级为4的告警任务时(等级为4的告警任务可以为多个或1个,我们暂时以1个为例),分布式进程1处理告警任务中的文本信息,将告警任务中的音频信息发送给分布式进程2处理,分布式进程2将该任务放在任务队列模块中,等待调度控制处理模块进行调度。
调度控制处理模块调度该任务时,根据该任务等级4,调用线程存储模块中空闲率为80%~100%的线程进行处理,若空闲率为80%~100%的线程调用完毕还无法处理完该任务,则调度控制处理模块调用空闲率为60%~80%的线程进行处理;若空闲率为60%~80%的线程中没有多余的线程可供调用,则调度控制处理模块调用40%~60%的线程进行处理,直至处理完该任务。
空闲率为60%~80%的线程中没有多余的线程可供调用的情形包括但不限于:空闲率为60%~80%的线程已被调用完毕。
特别地:当调度控制处理模块根据预设的调度策略,同时调度等级为3和4的任务,则详细的调度过程如下:
调度控制处理模块调用线程存储模块中空闲率为80%~100%的线程处理等级为4的任务,调用线程存储模块中空闲率为60%~80%的线程处理等级为3的任务时;若空闲率为80%~100%的线程调用完,还无法处理完等级为4的任务,则判断空闲率为60%~80%的线程是否已被调度控制处理模块调用完毕来处理等级为3的任务,若调用完毕且空闲率为40%~60%的线程没有被调用完,则调度控制处理模块调用空闲率为40%~60%的线程进行处理。
若空闲率为60%~80%的线程被调用完毕后还无法处理完等级为3的任务,则判断空闲率为40%~60%的线程是否被调用完毕,若没有,则调度控制器调度调用空闲率为40%~60%的线程进行处理。
空闲率为40%~60%的线程是否被调用完毕的情形包括但不限于:较高等级的线程不能处理完当前任务的情况下(80%~100%的线程和/或60%~80%的线程不能处理完当前的任务),调度控制处理模块调用完毕空闲率为40%~60%的线程;对应等级的任务即等级2到来时,调度控制处理模块调用完空闲率为40%~60%的线程。
图2是本发明的流程图,详细说明如下:
步骤201:在调度控制处理模块中预设线程空闲率与任务处理优先级等级对照表;
步骤202:任务处理时,调度控制处理模块根据线程空闲率与任务处理优先级等级对照表及任务等级,查找调用对应空闲率的线程,处理该任务。
图3所示为本发明的调度控制处理装置的内部模块图,该装置包括:任务调度模块301,用于从任务队列中调度要处理的任务;线程与任务优先级设置模块302,用于预设线程空闲率与任务处理优先级等级对照关系;线程存储模块303,用于存储系统设置的或新创建线程;调度处理模块304,用于根据从线程与任务优先级设置模块302中获得的线程空闲率与任务处理优先级等级对照关系及从任务调度模块301中获得的要处理的任务,调用线程存储模块303中存储的、任务对应等级的空闲率线程进行处理并在所述对应等级的空闲率线程被调用完毕,则调用下一等级的空闲率线程,直至任务处理完毕。
本发明提供了一种任务信息处理方法及调度控制处理装置,实现了线程资源调用、任务处理的最优化和及时性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。