一种任务处理方法及装置制造方法及图纸

技术编号:25708161 阅读:11 留言:0更新日期:2020-09-23 02:55
一种任务处理方法及装置,用以对任务处理请求的并发数量进行动态调整,以达到严格控制任务并发量,避免出现资源不足的问题。该方法包括:服务器在第一时段内获取下游任务处理节点的第一参考任务并发数,接着确定出该第一时段内的CPU的使用率和内存的使用率,进一步地确定第二参考任务并发数。服务器根据第一参考任务并发数和第二参考任务并发数将令牌的数量调整为第一数值。之后,当服务器在第一时刻接收到第一任务处理请求后,先判断第一时刻的已用令牌的数量是否小于第一数值时,若是,则为第一任务处理请求分配第一令牌并提交至线程池中处理,否则,则拒绝为该第一任务处理请求分配令牌,从而实现严格控制任务并发量。

【技术实现步骤摘要】
一种任务处理方法及装置
本申请涉及并发处理控制领域,尤其涉及一种任务处理方法及装置。
技术介绍
目前,针对多任务同时处理可采用线程池技术,在同一时刻利用不同线程处理不同任务,达到同时处理多个任务的目的。采用线程池技术,在初始化时可在线程池中创建多个线程和一个任务队列,当有多个任务需要执行时,会将多个任务推入到任务队列中,并从线程池中选择多个空闲的线程分别执行多个任务,当该多个任务执行完毕后,将执行该多个任务的多个线程的状态置为空闲,并将该多个线程再放入线程池中,以使其可以被派发执行新的任务。现有技术中,线程池中的线程数量是固定值,当任务请求数量过多时,后续请求将直接由任务的调用者直接执行,导致实际并发数会随着请求数增多而加大,导致资源被大量占用,出现资源不足的问题。因此,亟需一种任务处理方法,实现严格控制任务处理请求的量,避免出现资源出现不足的问题。
技术实现思路
本申请实施例提供一种任务处理方法及装置,用以动态控制任务请求进入线程池的数量,避免任务并发数太大,资源被大量占用的问题。第一方面,本申请实施例提供一种任务处理方法,该方法包括:客户端在第一时段内从下游任务处理节点获取第一参考任务并发数,接着确定出该时间段内的CPU的使用率和内存的使用率,进一步地确定第二参考任务并发数。客户端根据第一参考任务并发数和第二参考任务并发数将令牌的数量调整为第一数值。当客户端在第一时段后的第一时刻接收第一任务处理请求,当判断第一时刻的已用令牌的数量小于上述第一数值时,为第一任务处理请求分配第一令牌并将该任务提交至线程池中处理。在上述实施例中,利用过去时段内下游任务处理节点上报的第一参考任务并发数,以及根据过去时段内CPU和内存的使用率情况,确定出未来时段内令牌的合适的数量,从而实现动态控制任务并发量,避免因并发数量太大造成资源大量占用,系统卡顿的问题。在一种可能的实施例中,客户端在第二时刻内接收第二任务处理请求,第二时刻发生在第一时刻之后;当第二时刻已用令牌的数量不小于第一数值时,将第二任务处理请求所在线程休眠,并提交到等待队列中等待处理。上述实施例中,客户端在第一时刻之后的第二时刻接收第二任务处理请求之后,通过比较当前已使用令牌的数量与当前的第一数值,若不小于第一数值,作为第二任务处理请求线程休眠并被提交至等待队列中等待唤醒。实现了根据过去时段内CPU和内存的使用率情况确定出未来时段内令牌的数量,再根据令牌数量控制任务的处理数量,达到动态且合理地控制任务并发量的效果,避免系统资源使用过度造成系统宕机的问题。在一种可能的实施例中,客户端在第一任务处理请求提交至线程池被处理完成后,将第一令牌从已用状态更新为可用状态,并将当前已用令牌的数量自减1;当第三时刻已用令牌的数量小于第一数值时,唤醒等待队列中的第三任务处理请求所在的线程,第三时刻发生在第二时刻之后;为第三任务处理请求所在的线程分配令牌,并将第三任务处理请求提交至线程池中处理。上述实施例中,第一任务处理请求被处理完成之后,客户端释放对应的第一令牌并将当前已用令牌的数量减去1,通过为执行的任务处理请求分配令牌,并在每个任务处理请求完成后释放令牌,实现根据令牌数量调整任务处理请求的处理数量,达到动态控制任务并发量的效果,避免系统资源使用过度造成系统宕机的问题。在一种可能的实施例中,客户端从第一参考任务并发数和第二参考任务并发数中确定最小参考任务并发数;根据最小参考任务并发数,调整用于控制任务并发数的令牌的数量为第一数值。上述实施例中,客户端根据第一参考任务并发数和第二参考任务并发数确定出最小参考任务并发数,并进一步地确定出对应的令牌数量,也就是第一数值,实现根据下游任务处理节点、系统当前CPU的使用率、系统的当前内存的使用率确定出当前系统的最佳并发处理数量,实现了根据系统的各项指标灵活调整任务的并发量,提前规避系统或下游任务处理节点资源使用过度的风险,保证系统在正常处理任务请求的情况下,不浪费处理资源,实现高效的任务处理。在一种可能的实施例中,客户端确定在第一时段内的CPU的使用率,包括:获取到不同任务实例类型的时间片占用次数;任务实例至少包括空闲类型的任务实例,进一步地将第一时段内各任务实例类型的时间片占用次数相加得出第一时段内的总时间片次数。再根据空闲类型的任务实例的时间片占用次数和总时间片次数,计算得到第一时段内的CPU的使用率,CPU的使用率满足公式一;其中,A为CPU的使用率,B为空闲类型的任务实例的时间片占用次数,C为总时间片次数。上述实施例中,客户端首先获取系统在第一时段内的不同任务实例类型的时间片占用次数,确定出该时段内的总时间片次数,进一步地根据空闲类型的任务实例对应的时间片占用次数确定出该时段内的CPU的使用率,实现根据系统当前时段的状态调整当前令牌总数,从而控制任务并发处理量,实现了根据系统的各项指标灵活调整任务的并发量,提前规避系统或下游任务处理节点资源使用过度的风险。在一种可能的实施例中,客户端根据CPU的使用率和内存使用率中的至少一个,确定第二参考任务并发数,包括:当CPU的使用率大于第一阈值时,确定第二参考任务并发数为原有任务并发数量的n1倍,其中n1大于0小于或等于1;当CPU的使用率不大于第一阈值时,确定第二参考任务并发数为原有任务并发数量的m1倍,其中m1大于1。上述实施例中,客户端实现根据系统当前时段的状态调整当前令牌总数,从而控制任务并发处理量,实现了根据系统当前时段的状态灵活调整任务的并发量,提前规避系统资源使用过度的风险。在一种可能的实施例中,客户端确定在第一时段内的内存的使用率,包括:获取总Java虚拟机JVM内存和当前空闲内存;根据总JVM内存和当前空闲内存,计算得到第一时段内的内存的使用率,内存的使用率满足公式二;其中,D为内存的使用率,E为当前空闲内存,F为总JVM内存。上述实施例中,客户端通过公式二确定出第一时段内的内存使用率,帮助后续步骤中确定出令牌的第一数值,也就是帮助实现根据系统当前时段的状态调整当前令牌总数,从而控制任务并发处理量,实现了根据系统当前时段的状态灵活调整任务的并发量,提前规避系统资源使用过度的风险。在一种可能的实施例中,客户端根据CPU的使用率和内存的使用率中的至少一个,确定第二参考任务并发数,包括:当内存使用率大于第三阈值时,确定第二参考任务并发数为原有任务并发数量的n2倍,其中n2大于0小于或等于1;当内存使用率不大于第四阈值时,确定第二参考任务并发数为原有任务并发数量的m2倍,其中m2大于1。上述实施例中,客户端根据实现根据系统当前时段的状态调整当前令牌总数,从而控制任务并发处理量,实现了根据系统当前时段的状态灵活调整任务的并发量,提前规避系统资源使用过度的风险。第二方面,本申请实施例提供一种任务处理装置,包括用于执行以上第一方面各个步骤的单元或手段(means),具体包括:接收单元,用于在第一时段内从下游任务处理节点获取第一参考任本文档来自技高网...

【技术保护点】
1.一种任务处理方法,其特征在于,包括:/n在第一时段内从下游任务处理节点获取第一参考任务并发数;/n确定在所述第一时段内的中央处理器CPU的使用率和内存的使用率中的至少一个;/n根据所述CPU的使用率和内存的使用率中的至少一个,确定第二参考任务并发数;/n根据所述第一参考任务并发数和所述第二参考任务并发数,调整用于控制任务并发数的令牌的数量为第一数值;/n在第一时刻接收第一任务处理请求,所述第一时刻发生在所述第一时段之后;/n当第一时刻已用令牌的数量小于所述第一数值时,为所述第一任务处理请求分配第一令牌,并将所述第一任务处理请求提交至线程池中处理。/n

【技术特征摘要】
1.一种任务处理方法,其特征在于,包括:
在第一时段内从下游任务处理节点获取第一参考任务并发数;
确定在所述第一时段内的中央处理器CPU的使用率和内存的使用率中的至少一个;
根据所述CPU的使用率和内存的使用率中的至少一个,确定第二参考任务并发数;
根据所述第一参考任务并发数和所述第二参考任务并发数,调整用于控制任务并发数的令牌的数量为第一数值;
在第一时刻接收第一任务处理请求,所述第一时刻发生在所述第一时段之后;
当第一时刻已用令牌的数量小于所述第一数值时,为所述第一任务处理请求分配第一令牌,并将所述第一任务处理请求提交至线程池中处理。


2.根据权利要求1所述的方法,其特征在于,还包括:
在第二时刻接收第二任务处理请求,所述第二时刻发生在所述第一时刻之后;
当第二时刻已用令牌的数量不小于所述第一数值时,将所述第二任务处理请求所在线程休眠,并提交到等待队列中等待处理。


3.根据权利要求2所述的方法,其特征在于,还包括:
在所述第一任务处理请求提交至线程池被处理完成后,将所述第一令牌从已用状态更新为可用状态,并将当前已用令牌的数量自减1;
当第三时刻已用令牌的数量小于所述第一数值时,唤醒所述等待队列中的第三任务处理请求所在的线程,所述第三时刻发生在所述第二时刻之后;
为所述第三任务处理请求所在的线程分配令牌,并将所述第三任务处理请求提交至线程池中处理。


4.根据权利要求1所述的方法,其特征在于,根据所述第一参考任务并发数和所述第二参考任务并发数,调整用于控制任务并发数的令牌的数量为第一数值,包括:
从所述第一参考任务并发数和所述第二参考任务并发数中确定最小参考任务并发数;
根据所述最小参考任务并发数,调整用于控制任务并发数的令牌的数量为第一数值。


5.根据权利要求1所述的方法,其特征在于,所述确定在所述第一时段内的CPU的使用率,包括:
获取到不同任务实例类型的时间片占用次数;所述任务实例至少包括空闲类型的任务实例;
将第一时段内各任务实例类型的时间片占用次数相加,得出第一时段内的总时间片次数;
根据所述空闲类型的任务实例的时间片占用次数和总时间片次数,计算得到所述第一时段内的CPU的使用率,所述CPU的使用率满足公式一;



其中,A为所述CPU的使用率,B为所述空闲类型的任务实例的时间片占用次数,C为所述总时间片次数。


6.根...

【专利技术属性】
技术研发人员:吴聪
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:广东;44

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

1