发明内容
有鉴于此,本申请提供一种任务请求处理方法、装置和用户设备,可以解决现有的多任务请求高并发处理时存在任务请求处理耗时过长的问题。
为了解决上述技术问题,本申请第一方面提供一种任务请求处理方法,包括:
检测到任务请求时,获取所述任务请求的相关参数;
根据所述任务请求的相关参数,确定所述任务请求的调度优先级;
根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。
可选地,所述任务请求的相关参数包括任务类型、请求的资源类型和/或任务所属的应用后台状态;
根据所述任务请求的相关参数,确定所述任务请求的调度优先级,包括:
设置所述相关参数的优先级权重系数;
根据所述相关参数的优先级权重系数,确定所述任务请求的调度优先级。
可选地,所述任务类型包括用户触发的任务类型,所述方法还包括:
当检测到所述任务请求的任务类型为所述用户触发的任务类型时,根据预设的优先级策略,提高所述任务类型的优先级权重系数,或者提高所述任务请求的调度优先级。
可选地,所述的方法还包括:
预先设置多个任务线程池以及每个任务线程池的优先级;
若所述任务请求的调度优先级与其中一个任务线程池的优先级匹配,则将所述任务请求加入到优先级匹配的任务线程池中。
可选地,所述的方法还包括:
根据每个任务线程池的优先级,预先配置在各网络状态下与每个任务线程池的优先级对应的线程数。
可选地,所述方法还包括:
若所述网络状态为第一网络状态,所述第一网络状态表示网络质量优的状态,则给每个任务线程池配置调用任务请求的线程数;
若所述网络状态为第二网络状态,所述第二网络状态表示网络质量中等的状态,则增加配置给优先级高的任务线程池调用任务请求的线程数,减少配置给优先级低的任务线程池调用任务请求的线程数;
若所述网络状态为第三网络状态,所述第三网络状态表示网络质量差的状态,且优先级高的任务线程池中有待执行的任务请求时,则暂停调用低优先级的任务线程池,待高优先级的线程池中的任务请求执行完成后,重新启动调用低优先级的任务线程池。
本申请第二方面提供一种任务请求处理装置,包括:
获取模块,用于在检测到任务请求时,获取所述任务请求的相关参数;
确定模块,用于根据所述任务请求的相关参数,确定所述任务请求的调度优先级;
调度模块,用于根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。
可选地,所述任务请求的相关参数包括任务类型、请求的资源类型和/或任务所属的应用后台状态;
所述装置还包括:
设置模块,用于设置所述相关参数的优先级权重系数;
所述确定模块,用于根据所述设置模块设置的所述相关参数的优先级权重系数,确定所述任务请求的调度优先级。
可选地,所述任务类型包括用户触发的任务类型,所述设置模块还用于:
当检测到所述任务请求的任务类型为所述用户触发的任务类型时,根据预设的优先级策略,提高所述任务类型的优先级权重系数,或者提高所述任务请求的调度优先级。
可选地,所述设置模块,还用于预先设置多个任务线程池以及每个任务线程池的优先级;
所述调度模块,还用于在所述任务请求的调度优先级与其中一个任务线程池的优先级匹配时,将所述任务请求加入到优先级匹配的任务线程池中。
可选地,所述设置模块,还用于根据每个任务线程池的优先级,预先配置在各网络状态下与每个任务线程池的优先级对应的线程数。
可选地,所述调用模块具体用于:
若所述网络状态为第一网络状态,所述第一网络状态表示网络质量优的状态,则给每个任务线程池配置调用任务请求的线程数;
若所述网络状态为第二网络状态,所述第二网络状态表示网络质量中等的状态,则增加配置给优先级高的任务线程池调用任务请求的线程数,减少配置给优先级低的任务线程池调用任务请求的线程数;
若所述网络状态为第三网络状态,所述第三网络状态表示网络质量差的状态,且优先级高的任务线程池中有待执行的任务请求时,则暂停调用低优先级的任务线程池,待高优先级的线程池中的任务请求执行完成后,重新启动调用低优先级的任务线程池。
本申请第三方面提供一种用户设备,包括:上述第二方面所述的任务请求处理装置。
本申请第四方面提供一种用户设备,包括:处理器和存储器,所述存储器中存储有实现上述第一方面所述的任务请求处理方法的程序指令,当所述处理器调用所述存储器中存储的程序指令时,可以执行上述第一方面所述的任务请求处理方法。
本发明实施例通过检测到任务请求时,获取所述任务请求的相关参数;根据所述任务请求的相关参数,确定所述任务请求的调度优先级;根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。这样在任务请求过多(高并发)时,通过确定每个任务请求的优先级,根据每个任务请求的优先级进行调度处理,实现有序的调度,不会造成任务请求过多(高并发)时的通道阻塞和任务请求处理耗时过长的问题。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
发明人在实现本发明的过程中发现:
现有的智能移动终端的操作系统对于网络任务请求没有任何优先级的管理机制,当任务请求过多(高并发)时,不可避免地会造成移动网络的通道阻塞,导致重要的任务请求被阻塞,处理耗时过长,而非重要的任务请求被先发送出去,从而不仅导致网络资源利用分配不合理,直接反应给用户的感受就是界面功能操作的网络任务请求无法及时得到处理,用户体验度大大降低。
因此,本发明主要建立一种任务请求的处理机制,可以在不同网络任务请求中建立一种优先级的机制,并且接合当前的网络质量,动态的选择一种最优的调度策略来保证重要的任务请求被优先处理,这样不仅能提升网络资源的合理利用率,而且对于用户体验也有着非常大的提升。
图1是本申请实施例的一种任务请求处理方法的流程示意图;如图1所示,包括:
101、检测到任务请求时,获取所述任务请求的相关参数;
需要说明的是,本发明实施例中,所述任务请求的相关参数包括一个或一个以上的参数,具体例如包括任务类型、请求的资源类型和任务所属的应用后台状态中的至少一项参数。
其中,本发明实施例中的任务类型是根据对触发的任务请求的主体进行分类,第一种为用户触发的任务请求,通常是用户敏感的网络任务请求,例如,用户点击新闻应用看新闻、点击视频应用看视频、点击音乐应用听音乐等,第二种为非用户触发的任务请求的网络任务请求,例如:应用或系统更新配置文件、业务数据预加载等等。
其中,任务请求的资源类型例如包括图片、视频、语音、网页、文本等资源类型。任务所属的应用后台状态例如包括应用后台的负载状态或故障状态等。
例如,当用户通过手机启动了手机淘宝,手机的操作系统可以获取该任务请求的相关参数,该任务类型是用户触发的任务请求,任务请求的资源类型为手机淘宝的网页,同时还可以获取手机淘宝的应用后台状态。
102、根据所述任务请求的相关参数,确定所述任务请求的调度优先级;
本发明实施例中,可以预先设置任务请求的相关参数的优先级权重系数,为了提升网络资源的高效合理利用和提高用户的体验度,本发明实施例中可以对用户触发的任务请求的类型设置较高的优先级。这样,当检测到所述任务请求的任务类型为所述用户触发的任务类型时,根据预设的优先级策略,提高所述用户触发的任务类型的优先级权重系数,或者提高所述用户触发的任务请求的调度优先级。
103、根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。
本发明实施例中,可以预先设置多个任务线程池以及每个任务线程池的优先级;例如可以设置高优先级的任务线程池和低优先级的任务线程池。假设当前发起的任务请求的调度优先级与其中一个任务线程池的优先级匹配,则将所述任务请求加入到优先级匹配的任务线程池中,如果当前发起的任务请求的调度优先级是高优先级,则将当前发起的任务请求加入到高优先级的任务线程池中,如果当前发起的任务请求的调度优先级是低优先级,则将当前发起的任务请求加入到低优先级的任务线程池中。需要说明的是,在设置任务线程池的时候例如可以根据任务请求的资源类型进行设置,例如,视频资源的任务线程池,图片资源的任务线程池,网页资源的任务线程池,还可以设置上述各线程池对应的优先级。
本发明实施例中,可以根据每个任务线程池的优先级,预先配置在各网络状态下与每个任务线程池的优先级对应的线程数。具体配置如下:
若所述网络状态为第一网络状态,所述第一网络状态表示网络质量优的状态,则给每个任务线程池配置调用任务请求的线程数;也就是说,当前的网络质量优的话,分别给高优先级的任务线程池和低优先级的任务线程池都配置线程数,这样有多个(高并发)任务请求时,都可以得到快速的处理。
若所述网络状态为第二网络状态,所述第二网络状态表示网络质量中等的状态,则增加配置给优先级高的任务线程池调用任务请求的线程数,减少配置给优先级低的任务线程池调用任务请求的线程数;也就是说,当前的网络质量中等的话,可以给高优先级的任务线程池多配置一些线程数,减少低优先级的任务线程池的线程数,这样有多个(高并发)任务请求时,可是使得高优先级(重要)的任务请求得到快速且优先的处理。
若所述网络状态为第三网络状态,所述第三网络状态表示网络质量差的状态,且优先级高的任务线程池中有待执行的任务请求时,则暂停调用低优先级的任务线程池,待高优先级的线程池中的任务请求执行完成后,重新启动调用低优先级的任务线程池。也就是说,网络质量差的时候,暂停调用低优先级的任务线程池,不处理低优先级的任务线程池中的任务请求,优先处理优先级高的任务线程池中待执行的任务请求。
本发明实施例通过检测到任务请求时,获取所述任务请求的相关参数;根据所述任务请求的相关参数,确定所述任务请求的调度优先级;根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。这样在操作系统收到多个网络任务请求时,针对不同任务类型,不同资源类型的网络任务请求进行优先级管理,并且结合当前的网络质量,确定每个网络任务请求一个优先级,并且按照优先级对网络任务请求进行调度处理,优先级高的网络任务请求可以获取到更多的网络资源,实现有序的调度,不会造成任务请求过多(高并发)时的通道阻塞和任务请求处理耗时过长的问题,从而能确保优先处理用户触发的网络任务请求,做到减小用户进入某界面的加载耗时以及提交表单数据的耗时等,最大限度的提高用户体验度。
下面通过具体实现方式对本发明技术方案进行详细的说明:
图2是本申请实施例的任务请求处理方法的一种信令示意图,如图2所示,包括:
1.应用程序发起网络任务请求,设置网络任务请求处理需要的相关参数:
1.1.设置应用程序期望的优先级(应用程序自身设置的优先级)。
1.2.设置网络任务请求的资源类型。
1.3.设置网络任务请求的任务类型是否为用户触发的任务请求。
1.4.应用程序向网络服务框架发送网络请求。
1.4.1.网络服务框架收到应用程序的网络任务请求后,将该网络任务请求转发给网络任务管理模块进行任务管理与调度。
2.网络任务管理模块收到网络任务请求,先根据请求的任务类型、请求的资源类型、应用设置的优先级、任务所属的应用程序的后台状态等等因素来决定该网络任务请求的优先级,并将该网络任务放入对应优先级的任务线程池。
3.根据当前的网络质量去决定当前应该调度哪几个线程池中的任务请求以及任务请求的并发数,最后将被调度的任务请求的数据包提交给内核网络模块进行最终的网络任务请求的调度处理。
需要说明的是,本发明实施例中所述的网络服务框架、网络任务管理模块和内核网络模块均是操作系统中的模块。
图3是本申请实施例一种线程池初始化的原理框图,如图3所示,包括:
1.操作系统启动时,调用网络任务管理模块初始化。
2.网络任务管理模块初始化时,初始化任务线程池。
3.在初始化线程池时,创建各类不同优先级的线程池。
4.根据当前的网络类型设置各优先级线程池的线程并发数以及线程其他相关参数配置。
需要说明的是,本发明实施例中网络类型例如包括wifi网络、4G网络、3G网络或2G网络等网络类型,网络类型的不同网络质量或网络状态自然也是不同的,因此,本发明实施例中的网络类型与上述实施例中的网络状态在本发明实施例中所起的作用是相同的。
图4为本申请实施例一种线程池动态配置框图,如图4所示,包括:
当操作系统检测到当前网络类型(或网络状态)发生变化时,网络任务管理模块动态地根据当前网络类型调整各优先级线程池的并发线程数以及线程控制策略等。例如,当前网络类型为wifi网络时,配置wifi网络下的各线程池的线程数;当前网络类型为4G时,配置4G网络下的各线程池的线程数;当前网络类型为3G时,配置3G网络下的各线程池的线程数;当前网络类型为2G时,配置2G网络下的各线程池的线程数。
图5为本申请实施例一种任务请求优先级计算框图,如图5所示,包括:
1.网络任务管理模块收到网络任务请求后,首先计算该任务请求的优先级。
2.判断当前的网络任务请求是否来自用户正在使用的应用程序,如果不是则:
2.1判断网络任务请求的资源类型。
2.2将该网络任务请求放入对应资源类型的低优先级线程池。
2.3流程结束。
3.如果当前的网络任务请求是来自用户正在使用的应用程序,那么再判断当前网络任务请求是否为用户使用的功能模块所触发的,如果不是:
3.1判断网络请求的资源类型。
3.2将该网络任务请求放入对应资源类型的低优先级线程池。
3.3流程结束。
4.如果当前的网络任务请求为用户触发的任务请求,则直接将任务请求放入对应资源类型的高优先级线程池中。
图6为本申请实施例一种任务请求的调度框图,如图6所示,包括:
1.如果当前网络质量为优良等级,则尽力调度当前所有线程池中所有的任务。
2.如果当前网络质量为中等等级:
2.1则首先缩减低优先级线程池的并发线程数。
2.2再开始正常调度各线程池中所有的任务。
3.如果当前网络质量为差等级:
3.1则首先缩减低优先级线程池的并发线程数。
3.2再判断当前高优先级队列中是否有待执行的任务,如果有待执行的任务:
3.2.1则先暂停调度所有低优先级的线程池。
3.2.2再开始调度高优先级的线程池。
3.2.3如果高优先级任务都执行完成了,再开始调度低优先级任务。
3.3如果没有高优先级的任务,则正常调度低优先级的任务。
图7为本申请实施例一种任务请求管理系统的结构示意图,如图7所示,包括:
本发明实施例的任务请求管理系统结构上可以分为两部分:任务控制模块和线程池管理。两个模块的依赖关系为任务控制模块依赖于线程池管理模块。接下来,就每个模块的组成结构以及各组件职责进行介绍:
1.任务管理模块:
1.1任务优先级管理:主要负责计算新任务的优先级。
1.2任务生命周期管理:主要用于控制一个任务从接收到发送这个过程的状态管理与维护。
1.3任务调度管理:主要负责根据当前的网络环境动态调度不同线程池中的任务,同时还能管理线程池的各种状态。
2.线程池管理模块:
2.1线程池工程模块:主要负责创建和维护一系列各种网络资源对应的不同优先级的线程池的实例。
2.2线程池控制模块:线程池控制模块主要就是用于提供线程池调控服务,主要模块有:
2.2.1策略控制:线程池不同网络环境中的策略控制.
2.2.2容量控制:线程池可以利用的资源、并发线程数的控制。
2.2.3任务淘汰控制:在任务过多导致线程池无法处理时,需要对任务进行淘汰来保证线程池整体的运行正常。
2.2.4运行状态控制:在不同网络换下,控制线程池运行状态的一种机制。
图8为本申请实施例一种任务请求处理装置的结构示意图,如图8所示,包括:
获取模块81,用于在检测到任务请求时,获取所述任务请求的相关参数;
确定模块82,用于根据所述任务请求的相关参数,确定所述任务请求的调度优先级;
调度模块83,用于根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。
其中,所述任务请求的相关参数包括一个或一个以上的参数;
所述装置还包括:
设置模块84,用于分别设置所述相关参数的优先级权重系数;
所述确定模块82,用于根据所述设置模块84设置的所述相关参数的优先级权重系数,确定所述任务请求的调度优先级。
其中,所述所述相关参数包括任务类型,所述任务类型包括用户触发的任务类型,所述设置模块84还用于:
当检测到所述任务请求的任务类型为所述用户触发的任务类型时,根据预设的优先级策略,提高所述任务类型的优先级权重系数,或者提高所述任务请求的调度优先级。
所述设置模块84,还用于预先设置多个任务线程池以及每个任务线程池的优先级;
所述调度模块83,还用于在所述任务请求的调度优先级与其中一个任务线程池的优先级匹配时,将所述任务请求加入到优先级匹配的任务线程池中。
所述设置模块84,还用于根据每个任务线程池的优先级,预先配置在各网络状态下与每个任务线程池的优先级对应的线程数。
所述调用模块83具体用于:
若所述网络状态为第一网络状态,所述第一网络状态表示网络质量优的状态,则给每个任务线程池配置调用任务请求的线程数;
若所述网络状态为第二网络状态,所述第二网络状态表示网络质量中等的状态,则增加配置给优先级高的任务线程池调用任务请求的线程数,减少配置给优先级低的任务线程池调用任务请求的线程数;
若所述网络状态为第三网络状态,所述第三网络状态表示网络质量差的状态,且优先级高的任务线程池中有待执行的任务请求时,则暂停调用低优先级的任务线程池,待高优先级的线程池中的任务请求执行完成后,重新启动调用低优先级的任务线程池。
本发明实施例的装置可以在检测到任务请求时,获取所述任务请求的相关参数;根据所述任务请求的相关参数,确定所述任务请求的调度优先级;根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。这样在操作系统收到多个网络任务请求时,针对不同任务类型,不同资源类型的网络任务请求进行优先级管理,并且结合当前的网络质量,确定每个网络任务请求一个优先级,并且按照优先级对网络任务请求进行调度处理,优先级高的网络任务请求可以获取到更多的网络资源,实现有序的调度,不会造成任务请求过多(高并发)时的通道阻塞和任务请求处理耗时过长的问题,从而能确保优先处理用户触发的网络任务请求,做到减小用户进入某界面的加载耗时以及提交表单数据的耗时等,最大限度的提高用户体验度。
本发明实施例还提供一种用户设备,包括如图8所示实施例所述的任务请求处理装置,其实现原理和技术效果不再赘述。
图9为本申请实施例提供的一种用户设备的结构示意图,举例来说,用户设备可以为PC、智能手机、PAD(平板电脑)、PC平板二合一等,可以具有有线网络接口,也可以具有无线网络接口,如图9所示,包括:存储器10;一个或多个处理器11;
其中,存储器10中保存有实现上述图1-图7中任一实施例中所述方法的程序指令,当处理器11调用存储器10中保存的程序指令,可以执行以下步骤:
检测到任务请求时,获取所述任务请求的相关参数;
根据所述任务请求的相关参数,确定所述任务请求的调度优先级;
根据所述任务请求的调度优先级,将所述任务请求加入到与所述调度优先级匹配的任务线程池中进行所述任务请求的调度处理。
其中,所述任务请求的相关参数包括一个或一个以上的参数;
根据所述任务请求的相关参数,确定所述任务请求的调度优先级,包括:
分别设置所述相关参数的优先级权重系数;
根据所述相关参数的优先级权重系数,确定所述任务请求的调度优先级。
其中,所述任务请求的相关参数包括所述任务类型,所述任务类型包括用户触发的任务类型,所述处理执行的步骤还包括:
当检测到所述任务请求的任务类型为所述用户触发的任务类型时,根据预设的优先级策略,提高所述任务类型的优先级权重系数,或者提高所述任务请求的调度优先级。
所述处理执行的步骤还包括:
预先设置多个任务线程池以及每个任务线程池的优先级;
若所述任务请求的调度优先级与其中一个任务线程池的优先级匹配,则将所述任务请求加入到优先级匹配的任务线程池中。
所述处理执行的步骤还包括:
根据每个任务线程池的优先级,预先配置在各网络状态下与每个任务线程池的优先级对应的线程数。
所述处理执行的步骤还包括:
若所述网络状态为第一网络状态,所述第一网络状态表示网络质量优的状态,则给每个任务线程池配置调用任务请求的线程数;
若所述网络状态为第二网络状态,所述第二网络状态表示网络质量中等的状态,则增加配置给优先级高的任务线程池调用任务请求的线程数,减少配置给优先级低的任务线程池调用任务请求的线程数;
若所述网络状态为第三网络状态,所述第三网络状态表示网络质量差的状态,且优先级高的任务线程池中有待执行的任务请求时,则暂停调用低优先级的任务线程池,待高优先级的线程池中的任务请求执行完成后,重新启动调用低优先级的任务线程池。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。