本发明涉及互联网应用,特别是涉及一种任务管理方法、装置、电子设备及存储介质。
背景技术:
1、互联网应用中,常存在同时调用多个微服务的情况,例如,在调用广告搜索推荐的同时,调用新闻浏览推荐等。各微服务通过rpc(远程过程调用,remote procedure call)完成通信,在处理业务请求时会利用多线程并行执行rpc,故而线程池庞大,存在多个父线程以及其各自包括的多个子线程同时执行的情况。
2、但由于任务管理不够智能,容易发生子线程超时导致父线程无法结束的问题,例如,当子线程执行rpc且获取下游响应变慢时,等待子线程返回结果的父线程无法放弃这个已超时的子线程,导致父线程无法及时结束,从而无法开始处理下一个任务。而在流量高峰阶段,线程池的部分线程由于超时任务的占用得不到释放,无法执行其他任务,将导致服务整体接口响应变慢,最终影响服务质量和调用效果。
技术实现思路
1、本发明实施例的目的在于提供一种任务管理方法、装置、电子设备及存储介质,以实现提高服务响应速度。具体技术方案如下:
2、在本发明实施的第一方面,首先提供了一种任务管理方法,包括:
3、在接收到业务请求的情况下,从业务请求线程池中选取用于响应所述业务请求的待执行父线程;
4、调用所述待执行父线程对应的待执行子线程池中的各子线程,执行所述业务请求对应的数据请求任务;
5、在所述待执行父线程的执行时长超过所述预设执行时长阈值的情况下,将未返回所述业务数据的至少一个超时子线程从所述待执行父线程对应的待执行子线程池中移除。
6、本发明的一个实施例中,在所述将未返回所述业务数据的至少一个超时子线程从所述待执行父线程对应的待执行子线程池中移除之后,所述方法还包括:
7、将所述超时子线程从所述待执行子线程池移动至公共缓冲线程池;
8、在所述超时子线程的所述数据请求任务执行结束的情况下,将所述超时子线程的状态标识更新为空闲状态。
9、本发明的一个实施例中,在所述在接收到业务请求的情况下,从业务请求线程池中选取待执行父线程之后,所述方法还包括:
10、获取所述业务请求对应的数据请求任务所需的子线程数量阈值;
11、检查所述待执行父线程对应的待执行子线程池中的子线程数量是否满足所述子线程数量阈值;
12、在不满足的情况下,从所述公共缓冲线程池中选取状态标识为空闲状态的子线程,补充至所述待执行子线程池。
13、本发明的一个实施例中,所述方法还包括:
14、在超过预设数量个待执行父线程对应的待执行子线程池中的子线程数量均不满足对应的所述子线程数量阈值的情况下,将所述公共缓冲线程池中状态标识为空闲状态的多个子线程平均分配,补充至各所述待执行子线程池。
15、本发明的一个实施例中,在接收到业务请求之前,所述方法还包括:
16、初始化线程池资源,根据业务请求的业务类型,划分所述业务请求线程池,其中,每一所述业务请求线程池对应一种业务请求的业务类型;
17、针对每一所述业务请求线程池中的每一父线程,划分所述父线程独立对应的子线程池;
18、划分与各所述业务请求线程池独立的所述公共缓冲线程池。
19、在本发明实施的第二方面,还提供了一种任务管理装置,包括:
20、父线程选取模块,用于在接收到业务请求的情况下,从业务请求线程池中选取用于响应所述业务请求的待执行父线程;
21、子线程调用模块,用于调用所述待执行父线程对应的待执行子线程池中的各子线程,执行所述业务请求对应的数据请求任务;
22、超时子线程移除模块,用于在所述待执行父线程的执行时长超过所述预设执行时长阈值的情况下,将未返回所述业务数据的至少一个超时子线程从所述待执行父线程对应的待执行子线程池中移除。
23、本发明的一个实施例中,所述装置还包括:
24、子线程移动模块,用于将所述超时子线程从所述待执行子线程池移动至公共缓冲线程池;
25、状态标识更新模块,用于在所述超时子线程的所述数据请求任务返回所述业务数据的情况下,将所述超时子线程的状态标识更新为空闲状态。
26、本发明的一个实施例中,所述装置还包括:
27、数量阈值获取模块,用于获取所述业务请求对应的数据请求任务所需的子线程数量阈值;
28、子线程数量检查模块,用于检查所述待执行父线程对应的待执行子线程池中的子线程数量是否满足所述子线程数量阈值;
29、子线程补充模块,用于在不满足的情况下,从所述公共缓冲线程池中选取状态标识为空闲状态的子线程,补充至所述待执行子线程池。
30、本发明的一个实施例中,所述装置还包括:
31、子线程分配模块,用于在超过预设数量个待执行父线程对应的待执行子线程池中的子线程数量均不满足对应的所述子线程数量阈值的情况下,将所述公共缓冲线程池中状态标识为空闲状态的多个子线程平均分配,补充至各所述待执行子线程池。
32、本发明的一个实施例中,所述装置还包括:
33、初始化模块,用于初始化线程池资源,根据业务请求的业务类型,划分所述业务请求线程池,其中,每一所述业务请求线程池对应一种业务请求的业务类型;
34、子线程池划分模块,用于针对每一所述业务请求线程池中的每一父线程,划分所述父线程独立对应的子线程池;
35、公共线程池划分模块,用于划分与各所述业务请求线程池独立的所述公共缓冲线程池。
36、在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
37、存储器,用于存放计算机程序;
38、处理器,用于执行存储器上所存放的程序时,实现上述任一所述的任务管理方法。
39、在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的任务管理方法。
40、在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的任务管理方法。
41、本发明实施例提供的任务管理方法,一旦子线程返回超时,父线程不再等待而是放弃超时子线程,移除使其自行等待执行结束,父线程则基于已返回的子线程响应业务请求,避免了父线程因个别子线程超时导致的响应超时、调用错误、整体失败等问题,确保了父线程正确处理业务请求,提高了服务响应速度。在服务流量高峰时期调用资源不足的情况下,能够以线程调度降级的方式,放弃超时子线程,有效地提高了服务器的承载能力,进一步提升了调用效果和服务质量。
1.一种任务管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述将未返回所述业务数据的至少一个超时子线程从所述待执行父线程对应的待执行子线程池中移除之后,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,在所述在接收到业务请求的情况下,从业务请求线程池中选取待执行父线程之后,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,在接收到业务请求之前,所述方法还包括:
6.一种任务管理装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。