CN113806049A - 任务排队方法、装置、计算机设备和存储介质 - Google Patents

任务排队方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113806049A
CN113806049A CN202111092187.9A CN202111092187A CN113806049A CN 113806049 A CN113806049 A CN 113806049A CN 202111092187 A CN202111092187 A CN 202111092187A CN 113806049 A CN113806049 A CN 113806049A
Authority
CN
China
Prior art keywords
task
tasks
queue
group
regulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111092187.9A
Other languages
English (en)
Inventor
禹希初
邵松华
吕传勇
刘磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CN202111092187.9A priority Critical patent/CN113806049A/zh
Publication of CN113806049A publication Critical patent/CN113806049A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种任务排队方法、装置、计算机设备和存储介质。方法包括:接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;将不同任务组的任务轮流放入任务调控队列,通过任务调控队列输出多个任务组的任务;监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于任务数量所处的任务数量范围,确定对应的任务组为目标任务组,目标任务组的任务停止放入任务调控队列。采用本方法之后,不论多少任务源,都不会占用过多的计算资源,且任务调控队列可以输出多个队列,可以保证效率,也不会超过系统的容量上限,系统的性能和稳定性高。

Description

任务排队方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据处理领域,特别是涉及一种任务排队方法、装置、计算机设备和存储介质。
背景技术
随着数据处理技术的发展,多个模块可能共用统一的运算资源,以实现运算资源的充分使用。为了更充分地使用运算资源,出现了独立任务队列的技术,在各独立的任务队列中,其任务调度都是独立的,相互无依赖,不存在等待其他队列任务结束后才能执行。
使用独立任务队列的技术时,每个的任务队列和执行线程都是相互独立的,用户提交任务后可以被及时执行,不因其他租户的任务而被迫等待;即使任务太多需要排队时,用户也能在任务列表看到有些任务正在执行中,用户体验明显改善。
但是,其缺陷却在于,当环境中部署了很多模块时,需要使用大量队列和执行线程,在多个模块同时提交大量任务时,系统的负载会瞬间大增,占用的资源可能超过系统的容量上限,严重影响系统的性能和稳定性,甚至可能导致系统崩溃。
发明内容
基于此,有必要针对上述技术问题,提供一种兼顾运算资源使用效率与系统稳定性的任务排队方法、装置、计算机设备和存储介质。
一种任务排队方法,所述方法包括:
接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
将不同任务组的任务轮流放入任务调控队列,通过所述任务调控队列输出多个所述任务组的任务;
监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
在一个实施例中,所述监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列,包括:
监控执行中的任务,判断所述执行中的任务所属任务组,以确定至少一个任务组执行中的任务数量;
获取所述任务组执行中的任务数量阈值;
将所述任务组执行中的任务数量与所述任务数量阈值比较,若所述任务组执行中的任务数量大于所述任务数量阈值,则确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
在一个实施例中,所述获取所述目标任务组执行中的任务的数量阈值包括:
获取所述任务组的数量,根据所述任务组的数量,生成所述目标任务组执行中的任务的数量阈值。
在一个实施例中,所述目标任务组的任务停止放入所述任务调控队列之后,包括:
在所述任务调控队列中,确定暂停执行任务,所述暂停执行任务为目标任务组输出且未执行的任务,所述暂停执行任务不通过所述任务调控队列输出。
在一个实施例中,所述确定暂停执行任务之后,还包括:
判断所述目标任务组执行中的任务数量,若所述目标任务组执行中的任务数量小于所述任务数量阈值,则所述暂停执行任务参与所述任务调控队列的任务排列。
在一个实施例中,所述将来源相同的任务归纳到同一任务组,包括:
将来源相同的任务归纳到同一任务组队列;
所述目标任务组的任务停止放入所述任务调控队列之后,包括:
将目标任务组队列移入队列池中,所述目标任务组队列中断输出任务到所述任务调控队列。
在一个实施例中,所述将所述任务组的任务轮流放入任务调控队列中,包括:
获取循环队列,通过所述循环队列获取任务组输出的任务,填充所述循环队列的存储空间;
当所述任务组输出的任务占满所述循环队列的存储空间,得到所述任务调控队列。
一种任务排队装置,所述装置包括:
任务组生成模块,用于接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
调控队列构建模块,用于将不同任务组的任务轮流放入任务调控队列中,通过所述任务调控队列输出多个所述任务组的任务;
调控队列监控模块,用于获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
将不同任务组的任务轮流放入任务调控队列,通过所述任务调控队列输出多个所述任务组的任务;
监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
将不同任务组的任务轮流放入任务调控队列,通过所述任务调控队列输出多个所述任务组的任务;
监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列
上述任务排队方法、装置、计算机设备和存储介质,接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;将任务组的任务轮流放入任务调控队列,通过任务调控队列输出任务组的任务;获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。由此,以相同来源的任务形成任务组,且任务组输出的任务形成排列成任务调控队列,只需要对任务组的任务执行状态设定任务数量阈值,对任务调控队列中的任务进行控制,即可控制任务的执行线程总量。在这一条件下,不论多少个模块提交任务,都不会占用过多的计算资源,且任务调控队列可以输出多个任务,可以保证效率,也不会超过系统的容量上限,系统的性能和稳定性高。
附图说明
图1为一个实施例中任务排队方法的应用环境图;
图2为一个实施例中任务排队方法的流程示意图;
图3为一个实施例中确定为目标任务组的流程示意图;
图4为另一个实施例中任务排队方法的流程示意图;
图5为一个实施例中任务排队装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
在传统技术之中,使用至少两种常用的技术方案对任务进行排队,分别是全局共享任务队列与租户独立任务队列。在全局共享任务队列中,所有租户共享一个任务队列,所有的任务都在同一个队列中排队;在服务器繁忙时,可能经常需要等待其他租户任务结束后台才能执行。在独立任务队列中,每个租户或者模块分别使用至少一个独立的任务队列,其任务调度都是独立的,相互无依赖,不存在等待其他租户或模块的任务结束后才能执行的情况。
在全局共享任务队列中,被提交的任务全部加入到一个全局共享的队列中,后台任务调度引擎使用一组线程按队列的排队策略处理,排队策略可以是按任务的提交时间先后顺序。当任务太多,超过执行线程数上限,任务调度引擎来不及同时执行时,未执行的任务在队列中排队。通过这种方式,服务器通过控制可同时执行的最大任务数,以有效降低高峰时期服务器的负载,提高系统稳定性和性能。
全局共享任务队列的好处是,服务器并发执行的最大任务数有限,容易控制服务器的最大资源要求,稳定性好。但是在多租户环境中,当个别租户突发提交大量后台任务且执行时间较长时,其它租户提交的任务将被迫排队,可能需要等待很长时间才能得到执行,如果遇到因程序错误导致的死循环等极端情况,除非人为干预可能永远不会执行。因此,如果使用全局共享任务队列的后台任务引擎,任务执行的响应速度可能很慢。例如,当服务器处理多个租户的任务时,由于后台任务引擎正在满负荷执行其它租户提交的任务,某些租户的用户只能看到,自己提交很多任务,但所有任务都在等待中。从租户的角度看,这种全局共享任务队列很不公平。当所有的租户都是平等的时候,但任务的执行却需要等其它租户的任务执行完,可能需要等很长时间,令人误以为系统产生故障。
而在独立任务队列中,各个租户或模块使用自己专用的任务队列,提交的任务进入对应的任务队列;后台任务调度引擎为每个队列分配相应的执行线程组,各队列中的任务被各自的专用线程组执行,任务执行的响应速度明显提升,当出现任务排队现象时,用户也能很方便的从任务队列监控数据了解到排队的原因。
独立任务队列的长处,恰可以解决全局共享任务队列的问题。因为每个的任务队列和执行线程都是相互独立的,被提交的任务可以被及时执行,不因其他队列的任务而被迫等待;即使任务太多需要排队时,也可以及时反馈,用户也可以在任务列表看到有些任务正在执行的过程,用户体验明显改善。但是,其缺陷却在于,当环境中部署了很多租户或模块时,需要使用大量队列和执行线程,在多个租户或模块同时提交大量任务时,系统的负载会瞬间大增,占用的资源可能超过系统的容量上限,严重影响系统的性能和稳定性,甚至可能导致系统崩溃。
基于此,如何兼顾运算资源使用效率与系统稳定性,是一个需要着重研究的问题。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的任务排队方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种任务排队方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,接收到不同来源的任务后,将来源相同的任务归纳到同一任务组。
任务是由管理程序使用的可调度实体。在多道程序或多进程环境中,任务是由计算机来完成的基本工作单元,它是由控制程序处理的一个或多个指令序列,指令序列包括至少一个指令。任务可以是单一数据的计算这类单一任务,也可以是显示某一数据、渲染某一数据等复杂任务。
不同来源的任务,是可以按照发出任务的对象所划分的,其可以是服务器的不同租户所发出的任务,可以是不同计算机设备所发出的任务,可以是不同计算机模块所发出的任务,可以是不同程序锁发出的任务,也可以是在不同情况下所产生的任务。不同来源的任务,是可以按照发出任务的时间所划分的,其可以是具体的时间,也可以是特定时间间隔,还可以是某些时间标识。不同来源的任务,可以具有不同的来源标识。
任务组,其可以包括任务集合,一个任务组可以包括一个或多个任务集合;任务组可以包括任务,一个任务组可以包括一个任务或者多个任务,也可以并不包括任何任务。当任务组包括一个任务或者多个任务时,其内的任务属于等待被调度的任务,且该任务组可能在目标任务组与非目标任务组之间进行动态转化,也可能长时间处于目标任务组的状态或者非目标任务组的状态。当任务组不包括任何任务时,该任务组也可以被认为是目标任务组。不同任务组,可以具有不同的任务组标识,任务组标识可以与来源标识相同,也可以与来源标识有差别。在一个任务组中,每个任务执行完成后,再依次或者根据任务间的依赖关系执行下一个任务。
需要了解的是,将来源相同的任务归纳到同一任务组,可以避免不同来源的任务相互干扰,也可以按照任务组进行任务控制,对整体任务更高效率的执行。任务组可以是任务群组,其可以是具有相同管理任务的用户账户,计算机账户或者其他域对象的一个集合。域对象可以是:任务的组织单位,任务组,用户,计算机,联系人,打印机,安全策略等中的一种或N种,N为任意整数。
具体的,可以通过任务中的来源标识判断任务的来源,数据结构较为明晰;也可直接按照任务所生成的结果确定任务的来源,数据相对简练;还可以根据任务组内的依赖关系确定任务的来源,任务数据关系明确,且数据结构相对简约。例如,某些任务均具有特定字符串,且这些特定字符串用于表征任务来源,则可以根据这些特定字符串确定这些任务应当归属的任务组;某些任务会生成具有依赖关系的字符串,通过具有依赖关系的字符串,也可以确定这些任务所属的任务组;当获取到某一任务时,该任务与某一任务组中的任务存在依赖关系,则可以通过这一依赖关系确定该任务所属任务组。
步骤204,将不同任务组的任务轮流放入任务调控队列,通过任务调控队列输出多个任务组的任务。
任务调控队列,主要用于对各任务组的任务进行排列,其存储空间可以是定值,也可以是动态值。其可以是一种队列,队列只允许在一端插入,在另一端输出,所以只有最早进入队列的元素才能最先从队列中输出,故队列又称为先进先出线性表。在任务调控队列中插入一个任务的过程,可以被称为放入任务调控队列;通过任务调控队列中输出一个任务后,任务调控队列会删除输出后的任务。任务调控队列也可以是其他具有相同或相近功能的数据集合,或任意可调控任务的数据结构。
具体的,不同任务组的任务轮流输出,可以使用一个循环来实现,数据结构较为简洁;也可以设定指针或者优先级来实现这一过程,便于控制与调整输出策略。例如,当某任务组输出一个渲染任务之后,待其他任务组依次输出一个任务后,再由该任务组输出下一个渲染任务;当某任务组输出一个渲染任务之后,按照指针或者优先级,通过特定任务组输出任务,再由任意一个任务组输出下一个渲染任务。
具体的,输出多个任务组的任务后,可以采用多线程并行的方式执行多个任务。
步骤206,监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
输出后的任务,是指任务调控队列所输出的任务,该任务归属于特定的任务组。
同一任务组处于预设状态的任务数量,是通过某一任务组中的任务统计而得出的,其主要是对于一个或多个任务所处状态的统计。预设状态是对于单一任务而言的,也可以称为任务状态,其包括待调度、执行中、执行完毕三种基本状态,以及基本状态的进一步细分或综合。当任务位于任务组内或者任务调控队列之内,其属于待调度的任务;当任务被任务调控队列输出且正在执行时,其属于执行中的任务;当执行中的任务被线程执行完毕,其属于执行完毕的任务。
任务数量范围也可以称为任务组的任务执行状态,主要是属于某任务组的多个任务的整体执行状态。在一个任务组中,任务组的任务执行状态可以是该任务组各状态下的任务状态的数量所生成,也可以是各状态下的任务状态的数量之间的关系函数所生成,任务数量范围也可以通过任务数量阈值所限定。
任务数量阈值,可以是任务组执行中的任务数量,可以是任务组执行完毕的任务数量,还可以与执行中的任务数量正相关或负相关。简而言之,任务数量阈值可以与单一任务执行状态相关,也可以与多个任务执行状态相关。
目标任务组,可以是任意数量的任务组,主要是指被调控的任务组,其可来自于租户或者任意计算机模块。
可选地,在这一步骤中,可仅对执行中的任务进行监控,通过判断各任务组执行中的任务数量,确定任务组的任务执行状态是否大于任务数量阈值。例如,当某任务组执行中的任务数量达到一定数值时,通过该任务组的任务数量阈值进行判断,以估算该任务组的状态。
需要了解的是,在实施例的目标任务组中,该任务组的数据结构可能存在某些问题,如果该任务组的任务参与排队,一方面,其会占用过多的计算资源,影响其他任务组的任务执行,导致整体效率降低;另一方面,其也无法产生问题反馈。
具体的,当目标任务组的任务所需要的计算资源过大时,其可能存在bug,也可能是正常的程序,因而目标任务组的任务暂停放入任务调控队列,却并不中止相应任务的执行,以此兼顾目标任务组与其他任务组的任务执行效率。需要注意的是,在目标任务组停止放入所述任务调控队列之后,目标任务组执行中的任务并不一定要被暂停,是因为目标任务组的任务可能并不是死循环等无法解决的问题,而是需要大量资源进行计算才能完成,其是可能执行完毕的。
可选地,若任务数量大于任务数量阈值,则该任务组的任务轮流放入任务调控队列。
上述任务排队方法、装置、计算机设备和存储介质,接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;将任务组的任务轮流放入任务调控队列,通过任务调控队列输出任务组的任务;获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。由此,以相同来源的任务形成任务组,且任务组输出的任务形成排列成任务调控队列,只需要对任务组的任务执行状态设定任务数量阈值,对任务调控队列中的任务进行控制,即可控制任务的执行线程总量。在这一条件下,不论多少个模块提交任务,都不会占用过多的计算资源,且任务调控队列可以输出多个任务,可以保证效率,也不会超过系统的容量上限,系统的性能和稳定性高。
需要了解的是,在任务调控队列输出后的任务中,至少包括执行中的任务与执行完毕的任务。执行中的任务可以指,任务引擎调用线程正在执行的任务;而执行完毕的任务可以指,任务引擎调用线程执行完毕的任务。
在一个实施例中,如图3所示,监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列包括:
步骤302,监控执行中的任务,判断执行中的任务所属任务组,以确定至少一个任务组执行中的任务数量。
具体的,判断执行中的任务所属任务组,可以通过执行中的任务所具有的任务组标识,可以通过执行中的任务的信息提取,可以通过执行中的任务的映射关系等方式。
步骤304,获取任务组执行中的任务数量阈值。
任务数量阈值,可以是预设的静态值,也可以是动态值。动态值可以根据终端和/或服务器的内存数等因素而设定,用于提升各任务组任务的执行整体效率。不同的任务组可以具有相同的任务数量阈值,也可以针对不同的任务组设定有差别的任务数量阈值,使得高等级的任务组具有较高的任务数量阈值,以保障执行的效率。
步骤306,将所述任务组执行中的任务数量与所述任务数量阈值比较,若所述任务组执行中的任务数量大于所述任务数量阈值,则确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
本实施例中,通过任务组执行中的任务数量,来对该任务组的任务执行状态进行判断,即使某一任务组中的少量任务是有问题的,也可以执行该任务组中的大多数任务,同时可以兼顾其他任务组中的任务执行。由此,提高了这一系统的执行效率与稳定性。
而为了进一步提高这一系统的性能,可以使用特定参数设定动态的任务数量阈值。上述获取任务组执行中的任务的数量阈值包括:
获取任务组的数量,根据任务组的数量,生成任务组执行中的任务的数量阈值。
其中,任务组的数量可以与租用相关资源的租户数量相关,也可以是终端或者服务器内各需要资源的模块数量相关,任务组的数量也可以是目标任务组的数量。
具体的,如果某一任务为需要优先完成的任务,任务组的总数量可以与某一任务的数量阈值呈正相关,以实现核心任务的优先处理,增强执行效率,且不会影响整体稳定性;如果某一任务为常规任务,任务组的总数量可以与某一任务的数量阈值呈负相关,以实现核心任务的优先处理,增强执行效率,且不会影响整体稳定性;如果各个任务均不涉及优先级,则各个任务的优先级可以与数量阈值正相关,以增强整体运行的稳定性。
本实施例中,通过任务组的数量,动态调节任务组执行中的任务的数量阈值,以改变生成目标任务组的条件,以更好地控制整体的运行效率与稳定性。
为了进一步提高这一系统的运行效率与稳定性,还应对任务调控队列中的任务进行调控,因此,在目标任务组的任务停止放入所述任务调控队列之后,包括:
在任务调控队列中,确定暂停执行任务,暂停执行任务为目标任务组放入任务调控队列且未执行的任务,暂停执行任务不通过任务调控队列输出。
具体的,确定暂停执行任务的步骤,可以是通过任务所携带的任务组标识来获取,也可以是通过执行中的任务的信息提取,还可以通过执行中的任务的映射关系等方式。如果按照任务调控队列的存储空间输出顺序,即将输出暂停执行任务,会直接跳过这一任务,执行其他任务组所输出的任务。
需要了解的是,当任务组为目标任务组时,需要将任务组执行中的任务数量与任务数量阈值比较,判断任务组执行中的任务数量是否大于所述任务数量阈值。在这一前提下,不但要考虑各任务组对任务调控队列的输入,还应当考虑任务调控队列中的任务执行情况。
本实施例中,通过确定暂停执行任务,却不将暂停执行任务移出任务调控队列,可以避免这一数据调度过程中产生的bug,提高整体的稳定性。
进一步地,在确定暂停执行任务之后,还包括:
判断目标任务组执行中的任务数量,若目标任务组执行中的任务数量小于任务数量阈值,则暂停执行任务参与按照任务调控队列的任务。
具体的,本实施例包括至少两种类型的线程,一种是被监控线程,一种是监控线程。被监控线程的状态消息包括目标任务组执行中的任务状态,而监控线程需要按照预设间隔与被监控线程联系,获取所有和监听被监控线程的状态。一般情况下用主控线程作为监控线程,也可以使用一个线程专职作为监控线程或使用任务中任何其他线程作为监控线程。
本实施例中,对目标任务组执行中的任务进行监控,以在该任务组执行中的任务完成时,将暂停执行任务及时输出到任务处理引擎,以进一步提高执行效率。
除了提高效率与稳定性之外,还应当考虑调用队列的便利性,因此,本实施例引入了队列池这一技术,着重对队列池的使用进行论述。
需要了解的是,当大量的任务组并发的访问应用服务器时,如果针对的创建和销毁新服务对象必将给造成系统资源的巨大开销,导致系统的性能下降。为此,我们采用队列池的方式。一个队列池相当于一个容器,这个容器内保存着我们需要的对象来进行复用,把我们要做的任务交给它处理,从而提高系统性能。
基于此,将来源相同的任务归纳到同一任务组之后,包括:
将来源相同的任务归纳到同一任务组队列;
相对应的,目标任务组的任务停止放入所述任务调控队列之后,包括:
将目标任务组队列移入队列池中,目标任务组队列中断输出任务到任务调控队列。
具体的,引入了队列池这一概念之后,当某些任务组不存在任务时,可以通过队列池来存放这些任务组;当某些任务组的执行中的任务数量到达数量阈值之后,可以通过队列池来存放这些任务组;当某些任务组的执行中的任务数量小于数量阈值时,可以将这些任务组队列调出队列池,重新参与任务排队。
本实施例中,通过队列池来提高队列的调用效率,调用队列的便利性得以增加,降低整体执行时间。
可选地,为了进一步增加稳定性,将任务组的任务轮流放入任务调控队列中,包括:
获取循环队列,通过循环队列获取任务组输出的任务,填充循环队列的存储空间。
循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。
当任务组输出的任务占满循环队列的存储空间,得到任务调控队列。在循环队列中,可以设定一个或多个存储位置存储有标识符,以判断队列为空时或者队列空间全占满。本实施例中,通过循环队列,可以不设置优先级,并不会出现线性队列的假满现象。
上述各实施例中,均有其相应的侧重点,本实施例对这一技术的整体方案进行介绍,为了更好地便于理解,本实施例通过租户进行描述,租户可以是租用计算资源的一个或多个账户,租户也可以被认为是处理器模块、显示模块等任意电子设备相关的模块,租户还可以是被人所划分的任意虚拟模块。
从整体上看,如图4所示,每个租户分配有至少一个独立的任务子队列,并将这些子队列排列在一个环上,形成一个轮状的全局共享队列,本发明称之为“轮转队列”。其中,任务子队列是上述任务组的一种形式,“轮转队列”是上述的任务组与任务调控队列的统称,在“轮转队列”中,各任务子队列通过循环等方式轮流输出任务。本实施例中,租户B、租户C、租户E均属于目标任务组队列,不会将任务放入轮转队列,不将任务输出到轮转队列;租户A、租户D、租户F轮流将任务放入轮转队列。
在某一租户的任务入队时,找到该租户的子队列,将任务加到队尾,完成入队操作;
在某一租户的任务出队时,从环上第1个子队列获取任务,并将环旋转1格,使下一个子队列成为环上的第1个子队列;从而实现任务按租户轮流出队的效果。
按上述处理后,当多个租户同时提交任务时,可以实现按租户轮流执行任务,在一定程度上,避免某一租户独占过多资源,使其他用户误以为系统故障的情况,实现了租户公平的任务调度服务。但是,当单个租户突发提交大量任务时,该租户仍然可能占用服务器的全部资源,如果这些任务的执行时间都很长,那么其他租户提交任务则需要等待较长时间才能得到执行。
按上述处理后,当多个租户同时提交任务时,可以实现按租户轮流执行任务,实现了租户公平的任务调度服务,避免某一任务占据过多计算资源。但单个租户突发提交大量任务时,该租户仍然可能占用服务器的全部资源,如果这些任务的执行时间都很长,那么期间其他租户提交任务则需要等待较长时间才能得到执行;因此本发明方案引入队列池,用于控制单个租户可以占用的最大线程数,当某一队列的任务数量大于任务数量阈值时,将该队列移入队列池,使该任务子队列不通过队列池输出,同时,只要某一任务子队列存于任务池,在后续的循环中,也不执行该任务子队列的任务。
可选地,任务数量阈值具体为:设置单个租户可以并发执行任务数的上限,该上限可以是静态或动态的,但小于后台任务引擎并发执行任务数的最大值。当某租户执行中的任务数达到上限时,将该租户的任务子队列从轮转队列移出至队列池;子队列位于队列池期间,后台任务引擎不执行该租户的后台任务,防止其占用太多服务器资源。
需要注意的是,只要某一任务子队列存于任务池,在后续的循环中,即使服务器有空闲线程且该任务子队列即将通过任务调度队列输出,也不执行该任务子队列的任务,以免单个租户占用服务器太多资源;因为任务一旦开始执行,什么时候结束是无法预估的,其结束的时间是个未知数,也没办法中途让它停下来给其他任务让路。
而当某一任务子队列小于任务数量阈值时,就会将该任务子队列移出队列池。例如,当该租户的某一任务执行完毕后,则检查该租户的执行中任务数。如果该值小于上限,且任务子队列当前在“队列池”中,则把该子队列返回“轮转队列”,并且允许台任务引擎执行其中的任务。如果该租户的执行中任务数扔大于上限,则表示该租户执行中任务数太多,应该处于队列池中,不参与任务出队,即:即使此时后台任务引擎有空闲线程,也不能执行该租户的任务。加一个“子队列池”,是为了简化“轮转队列”的任务出队。执行中任务数太多的“子队列”移入“队列池”,则不参与“轮转队列”的出队,从而防止其中的任务被执行;反之,执行中任务数较少的“子队列”保持在“轮转队列”中,参与任务出队,从而有被执行的机会。
为了更好地介绍本实施例的技术方案,本实施例中的关键点包括至少如下技术特征中的一个或任意数量组合:每个租户使用自己专有的子队列进行任务排队;所有租户的任务子队列组成一个环,形成一个全局共享的轮转队列;后台任务引擎从环上的任务子队列轮流获取任务执行。控制单个租户并发执行任务数的上限;增加队列池,并发执行任务数达到上限的租户的任务子队列移入队列池等待;任务结束后检查其所属租户并发执行任务数,如果小于上限则将对应的任务子队列返回轮转队列。
基于这些关键技术,本实施例中的效果包括:首先,后台任务引擎最大并发执行的任务数必须受控,以免危及系统的稳定性;其次,后台任务引擎必须为各个租户提供相对公平的任务调度服务,减少单个租户的任务对其他租户任务执行的不良影响,不能因为个别用的程序BUG导致的死循环等原因独占太多系统资源;再次,多个租户同时提交任务时,能有效控制最大并发执行的任务数,要让能够同时服务的租户数最大化。
为了进一步明晰本实施例的技术方案,简化本实施例的技术方案与技术效果,本实施例的数据结构为:环+队列+池;
本实施例的效果为:
租户公平:后台任务引擎按租户轮流执行任务,最大程度地实现了租户公平的任务调度。
资源占用可控:后台任务引擎的最大并发执行任务数易于控制,避免了服务器资源占用失控的问题。
故障影响有限:单个租户不能独占后台任务引擎的全部线程,即使有个别租户的任务因为程序BUG或环境等因素,运行时间过长,其他租户的任务仍然可以正常执行。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种任务排队装置,包括:任务组生成模块502、调控队列构建模块504、调控队列监控模块506,其中:
任务组生成模块502,用于接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
调控队列构建模块504,用于将不同任务组的任务轮流放入任务调控队列中,通过所述任务调控队列输出多个所述任务组的任务;
调控队列监控模块506,用于获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
在一实施例中,调控队列排布模块506包括:
任务监控单元,用于监控执行中的任务,判断所述执行中的任务所属任务组,以确定至少一个目标任务组执行中的任务数量;
阈值获取单元,用于获取所述目标任务组执行中的任务数量阈值;
判断单元,用于将所述任务组执行中的任务数量与所述任务数量阈值比较,若所述任务组执行中的任务数量大于所述任务数量阈值,则确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
在一实施例中,阈值获取单元,具体用于获取所述任务组的数量,根据所述任务组的数量,生成所述目标任务组执行中的任务的数量阈值。
在一实施例中,判断单元具体用于,当目标任务组的任务停止放入所述任务调控队列后,在所述任务调控队列中,确定暂停执行任务,所述暂停执行任务为目标任务组输出且未执行的任务,所述暂停执行任务不通过所述任务调控队列输出。
在一实施例中,判断单元还用于,判断所述目标任务组执行中的任务数量,若所述目标任务组执行中的任务数量小于所述任务数量阈值,则所述暂停执行任务参与所述任务调控队列的任务排列。
在一实施例中,任务组生成模块502,还用于将来源相同的任务归纳到同一任务组队列,将所述任务组队列从队列池中调出;相对应的,调控队列构建模块504,还用于将目标任务组队列移入队列池中,所述目标任务组队列中断输出任务到所述任务调控队列。
在一实施例中,任务组生成模块502,具体用于:获取循环队列,通过所述循环队列获取任务组输出的任务,填充所述循环队列的存储空间;
当所述任务组输出的任务占满所述循环队列的存储空间,得到所述任务调控队列。
关于任务排队装置的具体限定可以参见上文中对于任务排队方法的限定,在此不再赘述。上述任务排队装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储任务排队数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务排队方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种任务排队方法,其特征在于,所述方法包括:
接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
将不同任务组的任务轮流放入任务调控队列,通过所述任务调控队列输出多个所述任务组的任务;
监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
2.根据权利要求1所述的方法,其特征在于,所述监控输出后的任务,获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列,包括:
监控执行中的任务,判断所述执行中的任务所属任务组,以确定至少一个任务组执行中的任务数量;
获取所述任务组执行中的任务数量阈值;
将所述任务组执行中的任务数量与所述任务数量阈值比较,若所述任务组执行中的任务数量大于所述任务数量阈值,则确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
3.根据权利要求2所述的方法,其特征在于,所述获取所述任务组执行中的任务的数量阈值包括:
获取所述任务组的数量,根据所述任务组的数量,生成所述任务组执行中的任务的数量阈值。
4.根据权利要求2所述的方法,其特征在于,所述目标任务组的任务停止放入所述任务调控队列之后,包括:
在所述任务调控队列中,确定暂停执行任务,所述暂停执行任务为目标任务组输出且未执行的任务,所述暂停执行任务不通过所述任务调控队列输出。
5.根据权利要求4所述的方法,其特征在于,所述确定暂停执行任务之后,还包括:
判断所述目标任务组执行中的任务数量,若所述目标任务组执行中的任务数量小于所述任务数量阈值,则所述暂停执行任务参与所述任务调控队列的任务排列。
6.根据权利要求1所述的方法,其特征在于,所述将来源相同的任务归纳到同一任务组,包括:
将来源相同的任务归纳到同一任务组队列;
所述目标任务组的任务停止放入所述任务调控队列之后,包括:
将目标任务组队列移入队列池中,所述目标任务组队列中断输出任务到所述任务调控队列。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述将所述任务组的任务轮流放入任务调控队列中,包括:
获取循环队列,通过所述循环队列获取任务组输出的任务,填充所述循环队列的存储空间;
当所述任务组输出的任务占满所述循环队列的存储空间,得到所述任务调控队列。
8.一种任务排队装置,其特征在于,所述装置包括:
任务组生成模块,用于接收到不同来源的任务后,将来源相同的任务归纳到同一任务组;
调控队列构建模块,用于将不同任务组的任务轮流放入任务调控队列中,通过所述任务调控队列输出多个所述任务组的任务;
调控队列监控模块,用于获取同一任务组处于预设状态的任务数量,基于所述任务数量所处的任务数量范围,确定对应的任务组为目标任务组,所述目标任务组的任务停止放入所述任务调控队列。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202111092187.9A 2021-09-17 2021-09-17 任务排队方法、装置、计算机设备和存储介质 Pending CN113806049A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111092187.9A CN113806049A (zh) 2021-09-17 2021-09-17 任务排队方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111092187.9A CN113806049A (zh) 2021-09-17 2021-09-17 任务排队方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN113806049A true CN113806049A (zh) 2021-12-17

Family

ID=78939538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111092187.9A Pending CN113806049A (zh) 2021-09-17 2021-09-17 任务排队方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113806049A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023226891A1 (zh) * 2022-05-25 2023-11-30 北京字跳网络技术有限公司 协作任务处理方法、装置、设备及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021034A (zh) * 2014-06-24 2014-09-03 北京奇艺世纪科技有限公司 任务处理方法及系统
CN107015849A (zh) * 2017-04-07 2017-08-04 北京奇虎科技有限公司 定时任务的提醒方法及装置
CN110928655A (zh) * 2019-11-11 2020-03-27 深圳前海微众银行股份有限公司 一种任务处理方法及装置
CN111611123A (zh) * 2019-02-25 2020-09-01 阿里巴巴集团控股有限公司 数据处理方法、数据处理系统及设备
CN111913986A (zh) * 2020-08-03 2020-11-10 支付宝(杭州)信息技术有限公司 一种查询优化方法及装置
CN112202899A (zh) * 2020-09-30 2021-01-08 北京百度网讯科技有限公司 用于工作流的处理方法、装置、智能工作站和电子设备
CN112214299A (zh) * 2020-09-30 2021-01-12 深圳云天励飞技术股份有限公司 多核处理器及其任务调度方法和装置
CN113342511A (zh) * 2021-08-06 2021-09-03 南京鹏云网络科技有限公司 一种分布式任务管理系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021034A (zh) * 2014-06-24 2014-09-03 北京奇艺世纪科技有限公司 任务处理方法及系统
CN107015849A (zh) * 2017-04-07 2017-08-04 北京奇虎科技有限公司 定时任务的提醒方法及装置
CN111611123A (zh) * 2019-02-25 2020-09-01 阿里巴巴集团控股有限公司 数据处理方法、数据处理系统及设备
CN110928655A (zh) * 2019-11-11 2020-03-27 深圳前海微众银行股份有限公司 一种任务处理方法及装置
CN111913986A (zh) * 2020-08-03 2020-11-10 支付宝(杭州)信息技术有限公司 一种查询优化方法及装置
CN112202899A (zh) * 2020-09-30 2021-01-08 北京百度网讯科技有限公司 用于工作流的处理方法、装置、智能工作站和电子设备
CN112214299A (zh) * 2020-09-30 2021-01-12 深圳云天励飞技术股份有限公司 多核处理器及其任务调度方法和装置
CN113342511A (zh) * 2021-08-06 2021-09-03 南京鹏云网络科技有限公司 一种分布式任务管理系统及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023226891A1 (zh) * 2022-05-25 2023-11-30 北京字跳网络技术有限公司 协作任务处理方法、装置、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US10891158B2 (en) Task scheduling method and apparatus
US9454389B2 (en) Abstracting a multithreaded processor core to a single threaded processor core
KR102450528B1 (ko) 애플리케이션을 인식하는 효율적인 io 스케줄러 시스템 및 방법
US10754706B1 (en) Task scheduling for multiprocessor systems
US7913257B2 (en) Scheduling method, scheduling apparatus and multiprocessor system
US8713571B2 (en) Asynchronous task execution
WO2023071172A1 (zh) 任务调度方法、装置、设备、存储介质、计算机程序及计算机程序产品
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
WO2019223596A1 (zh) 事件处理方法、装置、设备及存储介质
US9973512B2 (en) Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
Khemka et al. Resource management in heterogeneous parallel computing environments with soft and hard deadlines
Bernat et al. Multiple servers and capacity sharing for implementing flexible scheduling
US11698816B2 (en) Lock-free work-stealing thread scheduler
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
CN113806049A (zh) 任务排队方法、装置、计算机设备和存储介质
CN110888726A (zh) 一种多任务并发处理方法及系统
WO2024032783A1 (zh) 任务调度的方法和电子设备
Hsiao et al. A usage-aware scheduler for improving MapReduce performance in heterogeneous environments
Markthub et al. Using rcuda to reduce gpu resource-assignment fragmentation caused by job scheduler
Völp et al. On the expressiveness of fixed-priority scheduling contexts for mixed-criticality scheduling
CN114661415A (zh) 调度方法及计算机系统
Hu et al. Real-time schedule algorithm with temporal and spatial isolation feature for mixed criticality system
Nosrati et al. Task scheduling algorithms introduction
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination