System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种任务执行方法、装置、电子设备及存储介质。
技术介绍
1、消息或信令可抽象概括分为一对一(单聊)及一对多(群聊)两种。在实际应用场景中,一些消息任务在转发过程中需要从数据库获取路由及其它状态信息。例如,在一对一(单聊)的应用场景下,需要获取接受者所在的服务器、状态等信息;在一对多(群聊)的应用场景下,需要获取房间内的所有用户列表、每个用户所在的服务器以及其它房间状态等信息。其中,用于处理消息任务的服务端在向数据库发起请求时,容易出现由于io阻塞所导致的服务并发能力下降的情况。
2、针对上述问题,目前的一种主流方案是采用线程池,然而此方式在系统压力过大时,容易造成任务队列积压,或者由于服务自身调度问题,容易导致有些线程始终无法得到运行权,上述各种异常情况均会导致出现长尾延迟现象,影响了消息任务的处理效率。
3、另一种方式是针对一次请求创建一个线程处理,然而每秒处理多个请求需要高吞吐量,而大量的并发连接需要高效的连接调度,因此,采用此方式容易出现c10k的相关问题。
技术实现思路
1、有鉴于此,本公开实施例提供一种任务执行方法、装置、电子设备、存储介质,以至少部分地解决上述问题。
2、根据本公开实施例的第一方面,提供了一种任务执行方法,所述方法包括:从网络设备获取消息任务;根据所述消息任务的第一任务标识,将所述消息任务分配给多个主线程中的目标主线程;通过所述目标主线程,根据所述消息任务的第二任务标识,将所述消息任务分配
3、根据本公开实施例的第二方面,提供了一种任务执行装置,所述装置包括:获取模块,用于从网络设备获取消息任务;第一分配模块,用于根据所述消息任务的第一任务标识,将所述消息任务分配给多个主线程中的目标主线程;第二分配模块,用于通过所述目标主线程,根据所述消息任务的第二任务标识,将所述消息任务分配给所述目标主线程的多个子线程中的目标子线程;执行模块,用于通过所述目标子线程,基于所述消息任务的任务状态执行所述消息任务,并将所述消息任务的任务执行结果返回给所述网络设备。
4、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述第一方面所述的任务执行方法。
5、根据本公开实施例的第四方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如第一方面所述的任务执行方法。
6、综上所述,本公开各方面提供的任务执行方案,首先根据消息任务的任务标识,依次将消息任务分配给主线程以及主线程下的子线程处理,并由子线程通过检测消息任务的任务状态以执行消息任务。借此,本公开通过异步io多路复用的处理机制,以提高任务请求的处理并发量,并通过状态机方式解决消息处理过程中的长尾延迟问题,能够提高消息任务的响应速度。
本文档来自技高网...【技术保护点】
1.一种任务执行方法,所述方法包括:
2.根据权利要求1所述的方法,其中,每个主线程包括主线程队列;
3.根据权利要求2所述的方法,其中,所述方法还包括:
4.根据权利要求2或3所述的方法,其中,每个子线程包括子线程队列;
5.根据权利要求4所述的方法,其中,在从各子线程中确定对应于所述网络消息的目标子线程之后,所述方法还包括:
6.根据权利要求4所述的方法,其中,所述方法还包括:
7.根据权利要求1所述的方法,其中,所述基于所述消息任务的任务状态执行所述消息任务,包括:
8.根据权利要求1所述的方法,其中,
9.一种任务执行装置,所述装置包括:
10.一种电子设备,包括:
11.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行如权利要求1至8中任一项所述的任务执行方法。
【技术特征摘要】
1.一种任务执行方法,所述方法包括:
2.根据权利要求1所述的方法,其中,每个主线程包括主线程队列;
3.根据权利要求2所述的方法,其中,所述方法还包括:
4.根据权利要求2或3所述的方法,其中,每个子线程包括子线程队列;
5.根据权利要求4所述的方法,其中,在从各子线程中确定对应于所述网络消息的目标子线程之后,所述方法还包括:
6.根据权利要求4所述的方法,其...
【专利技术属性】
技术研发人员:吴晓峰,
申请(专利权)人:北京世纪好未来教育科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。