CN115048247A - 一种分布式任务的动态分配方法和系统 - Google Patents
一种分布式任务的动态分配方法和系统 Download PDFInfo
- Publication number
- CN115048247A CN115048247A CN202210788412.0A CN202210788412A CN115048247A CN 115048247 A CN115048247 A CN 115048247A CN 202210788412 A CN202210788412 A CN 202210788412A CN 115048247 A CN115048247 A CN 115048247A
- Authority
- CN
- China
- Prior art keywords
- task
- unexecuted
- node
- tasks
- scheduler
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000009826 distribution Methods 0.000 title abstract description 16
- 230000002159 abnormal effect Effects 0.000 claims abstract description 53
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
本发明公开一种分布式任务的动态分配方法和系统,其中,分布式任务的动态分配方法包括:任务调度器根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器;任务执行器实时监测任务的执行状态,当任务的执行状态异常时向任务调度器汇报异常节点的任务异常信息;任务调度器当收到任务异常信息时,获取每个工作节点的资源信息和未执行任务信息;任务调度器确定召回的未执行任务,并根据资源信息和未执行任务信息制定任务分配方案;任务调度器根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点。本发明的技术方案能解决现有技术中任务分配不合理,容易出现堵塞或工作节点的资源利用率低的问题。
Description
技术领域
本发明涉及分布式存储技术领域,尤其涉及一种分布式任务的动态分配方法和系统。
背景技术
任务调度是指系统为自动完成特定任务,在约定的特定时刻分配和执行任务的过程。因为当前系统的架构逐步转变为分布式架构,即原来的单体结构被划分为若干服务,每个服务运行在不同的节点上,服务之间通过网络交互才能完成用户的业务处理任务,所以在分布式的系统环境中,任务在执行前必须按照一定的规则分配到具体的位置,这个过程称之为分布式任务调度。
现有的分布式任务调度,其系统架构如图1所示。在该系统架构中,所有服务器组成一个服务集群,服务集群中的服务器称为节点。任务调度器100部署在其中的一个节点,即调度器节点100上;任务执行器201有多个,分别部署在不同的工作节点200上。分布式任务调度在实现时按照如下步骤完成:首先,在每个工作节点200上启动任务执行器201;然后,任务调度器101从任务列表102中获取任务;再然后,任务调度器101将任务根据特定的规则传递给不同的任务执行器200;最后,任务执行器200执行相应任务。
现有的分布式任务调度方案,其侧重点均为如何确保任务调度器在任务执行前将不同的任务分配给不同的任务执行器,而任务执行器在获取任务后只是被动地执行任务。分配任务是耗时、耗网络资源的操作。当任务很多时为了提高工作效率,任务调度器会一次将多个任务同时分配给某一执行器。在目前的任务调度器实现上,大部分任务是简单的直接平均分配,另外有少部分任务会按照任务的预期执行时间、任务的类型、执行任务所需的CPU/内存消耗程度等数据以及节点资源状况进行分配。然而,不管任务如何分配都可能出现任务分配不合理,容易出现堵塞和节点资源利用率不高的问题,具体地:
1)即使按照任务的预期执行时间进行分配,当一批任务分配给某一任务执行器后,由于实际运行环境不同,任务的实际运行时间和其预估时间并不一致。这将导致在实际运行任务时,并不能像预期那样达到对节点资源最佳的使用。节点中部分任务执行器闲置,部分任务执行器拥堵,拥堵的任务将处于等待状态;而处于等待状态的任务也不会分配到其他节点中。
2)当某一任务被超前执行完毕后,其所在工作节点的任务执行器将被闲置,此时其他节点即使还有待执行的任务,但它们也只能等待,不能被任务调度器发送到空闲的工作节点进行执行。
发明内容
本发明提供一种分布式任务的动态分配方法和系统,旨在解决现有技术中任务分配不合理,容易出现堵塞,工作节点的资源利用率不高的问题。
为实现上述目的,根据本发明的第一方面,本发明提出了一种分布式任务的动态分配方法,包括:
任务调度器根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器;
任务执行器实时监测任务的执行状态,当任务的执行状态异常时向任务调度器汇报异常节点的任务异常信息;
任务调度器当收到任务异常信息时,获取每个工作节点的资源信息和未执行任务信息;
任务调度器确定召回的未执行任务,并根据资源信息和未执行任务信息制定任务分配方案;
任务调度器根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点。
优选的,上述动态分配方法中,异常节点的任务异常信息包括超时节点的任务超时信息;任务调度器确定召回的未执行任务并根据资源信息和未执行任务信息制定任务分配方案的步骤包括:
任务调度器当收到任务超时信息时,召回超时节点的未执行任务;
任务调度器根据除超时节点外每个工作节点的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表中新增任务的任务分配方案;
任务调度器按照任务分配方案,将未执行任务和新增任务统一分配至除超时节点外的工作节点。
优选的,上述动态分配方法中,任务调度器根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表的新增任务的任务分配方案的步骤包括:
任务调度器使用资源信息和未执行任务信息,计算每个工作节点的任务执行速度;
任务调度器按照每个工作节点的任务执行速度,将未执行任务和新增任务分别分配至每个工作节点,以均衡每个工作节点的任务完成时间。
优选的,上述动态分配方法中,任务调度器根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器的步骤,包括:
任务调度器按照任务的消耗资源量和所有工作节点的资源信息,分别计算每个工作节点对每项任务的任务执行时间;
任务调度器,按照任务执行时间,分别分配任务至工作节点的任务执行器。
优选的,上述动态分配方法中,异常节点的任务异常信息包括任务完成节点的任务完成信息;任务调度器确定召回的未执行任务并根据资源信息和未执行任务信息制定任务分配方案的步骤包括:
任务调度器根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表的新增任务的任务分配方案;
任务调度器判断任务分配方案分配的未执行任务是否仍在原工作节点中;
若未执行任务仍在原工作节点中,则任务调度器召回除仍在原工作节点的其他所有未执行任务;
任务调度器按照任务分配方案,分配除仍在原工作节点的其他所有未执行任务和新增任务至工作节点。
优选的,上述动态分配方法中,任务调度器根据除超时节点外每个工作节点的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表中新增任务的任务分配方案的步骤包括:
任务调度器使用资源信息和未执行任务信息,计算除超时节点外每个工作节点的现有任务完成时间;
任务调度器使用资源信息和每项未执行任务和新增任务的消耗资源量,分别计算除超时节点外每个工作节点分别对每项任务的任务执行时间;
任务调度器按照现有任务完成时间以及任务执行时间,分别分配未执行任务和新增任务,以均衡每个工作节点的任务完成时间。
优选的,上述动态分配方法中,任务调度器根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点的步骤包括:
任务调度器将未执行任务和新增任务分配至工作节点的任务执行器;
任务执行器执行未执行任务和新增任务,并实时监测任务的执行状态,若监测到任务的执行状态存在异常时,重复汇报异常节点的任务异常信息的步骤。
根据本发明的第二方面,本发明还提供了一种分布式任务的动态分配系统,包括:
设置于调度器节点的任务列表和任务调度器,以及分别设置于多个工作节点中每个工作节点的任务执行器;其中,
任务调度器,用于根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器;
任务执行器,用于实时监测任务的执行状态,当任务的执行状态异常时向任务调度器汇报异常节点的任务异常信息;
任务调度器,还用于当收到任务异常信息时,获取每个工作节点的资源信息和未执行任务信息;
任务调度器,还用于确定召回的未执行任务,并根据资源信息和未执行任务信息制定任务分配方案;
任务调度器,还用于根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点。
优选的,上述动态分配系统还包括:
任务调度器,具体还用于当收到任务超时信息时,召回超时节点的未执行任务;
任务调度器,具体还用于根据除超时节点外每个工作节点的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表中新增任务的任务分配方案;
任务调度器,具体还用于按照任务分配方案,将未执行任务和新增任务统一分配至除超时节点外的工作节点。
优选的,上述动态分配系统还包括:
任务调度器,具体还用于根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表的新增任务的任务分配方案;
任务调度器,具体还用于判断任务分配方案分配的未执行任务是否仍在原工作节点中;
任务调度器,具体还用于若未执行任务仍在原工作节点中,则召回除仍在原工作节点的其他所有未执行任务;
任务调度器,具体还用于按照任务分配方案,分配除仍在原工作节点的其他所有未执行任务和新增任务至工作节点。
综上,本发明上述技术方案提供的分布式任务的动态分配方案,任务调度器根据任务列表中任务和所有工作节点的资源新,将任务分配至工作节点的任务执行器;分配有任务的每个任务执行器实时监测任务的执行状态,当任务的执行状态异常时,向任务调度器汇报异常节点的任务异常信息,执行状态异常通常为节点堵塞导致的节点超时,或者节点完成任务处于空闲状态。任务调度器当收到该任务异常信息时,获取每个工作节点的资源信息和未执行任务信息,召回部分未执行任务,例如异常节点的未执行任务,并且根据所有工作节点的资源信息和未执行任务信息制定任务分配方案,因为每个任务执行时需要消耗资源,在获知未执行任务信息和资源信息后就能够确定每个工作节点执行该未执行任务所需的时间,这样根据上述时间重新执行任务分配方案,以均衡每个工作节点的任务执行时间,从而将召回的未执行任务和任务列表中新增任务分配至特定的或全部工作节点,以减少各工作节点的资源堵塞,或者提高工作节点的资源利用率,提高任务的执行效率。综上,通过上述方式能够解决现有技术中任务分配不合理,容易出现堵塞,或者工作节点的资源利用率不高,任务的执行效率较低的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是现有技术提供的一种分布式任务调度系统的结构示意图;
图2是本发明实施例提供的第一种分布式任务的动态分配方法的流程示意图;
图3是图2所示实施例提供的一种任务调度器的任务分配方法的流程示意图;
图4是图2所示实施例提供的第一种任务分配方案的制定方法的流程示意图;
图5是图4所示实施例提供的一种超时节点的任务分配方案的制定方法的流程示意图;
图6是图2所示实施例提供的第二种任务分配方案的制定方法的流程示意图;
图7是图6所示实施例提供的一种任务完成节点外的任务分配方案的方法的流程示意图;
图8是图2所示实施例提供的一种召回任务的分配方法的流程示意图;
图9是本发明实施例提供的第二种分布式任务动态分配方法的流程示意图;
图10是图9所示实施例提供的第三种分布式任务的动态分配方法的流程示意图;
图11是本发明实施例提供的一种分布式任务的动态分配系统的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决的技术问题是:
现有的分布式任务调度方案,其侧重点均为如何确保任务调度器在任务执行前将不同的任务分配给不同的任务执行器,而任务执行器在获取任务后只是被动地执行任务。分配任务是耗时、耗网络资源的操作。当任务很多时为了提高工作效率,任务调度器会一次将多个任务同时分配给某一执行器。在目前的任务调度器实现上,大部分任务是简单的直接平均分配,另外有少部分任务会按照任务的预期执行时间、任务的类型、执行任务所需的CPU/内存消耗程度等数据以及节点资源状况进行分配。然而,不管任务如何分配都可能出现任务分配不合理,容易出现堵塞和节点资源利用率不高的问题
例如,任务1和任务2都分配给任务执行器1,在执行时由于某种原因导致任务1的执行时间远超过其预期时间。虽然任务调度器可以在分配下一轮任务时不给或少给任务执行器1分配任务,但任务2始终要在任务1之后才能被执行。当任务1后面有多个任务时,所有其后面的任务都只能等待而得不到执行,即使其他工作节点上的任务已经被执行完毕,这些处在等待状态的任务也不会再分配到其他工作节点上。如果任务1始终无法被完成,则会造成会严重的后果:其后面所有处在等待状态的任务再也没有机会被执行。在这个问题上,任务无法被得到及时处理甚至无法被处理。
为了解决上述问题,本申请下述实施例提供了分布式任务的动态分配方案,通过任务执行器实时监测任务的执行状态,当任务的执行状态异常时,例如堵塞或者空闲,则任务调度器根据每个工作节点的资源信息和未执行任务信息重新制定任务分配方案,重新分配任务,达到均衡任务执行时间,提高资源利用率,提高任务执行效率的目的。
为实现上述目的,请参见图2,图2为本发明实施例提供的一种分布式任务的动态分配方法的流程示意图。如图2所示,该分布式任务的动态分配方法,包括:
S110:任务调度器根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器。
每个任务在执行时都需要工作节点分配资源执行,工作节点的资源信息包括工作节点的IO数据、CPU/内存使用情况和GPU资源等,另外还包括本工作节点的任务执行器内其他未被执行的任务等。通过获取任务列表中的任务和所有工作节点的资源信息,任务调度器能够检测得到每个工作节点执行对应任务的执行时间,然后根据该执行时间制定任务分配方案,将任务分配至工作节点的任务执行器中。
其中,作为一种优选的实施例,如图3所示,本申请实施例提供的动态分配方法中,步骤S110:任务调度器根据任务列表中的任务和所有工作节点的资源信息,将任务分配至工作节点的任务执行器的步骤,包括:
S111:任务调度器按照任务的消耗资源量和所有工作节点的资源信息,分别计算每个工作节点对每项任务的任务执行时间。
S112:任务调度器,按照任务执行时间,分别分配任务至工作节点的任务执行器。
本申请实施例提供的技术方案中,任务调度器调度器根据任务列表中的任务数量和任务的资源消耗量,各工作节点的状态,包括正在执行的任务数量,各工作节点的资源消耗量等资源信息,进行任务的第一次分配,然后将任务批量分配给各任务执行器,由各任务执行器实时执行任务,从而达到均衡任务执行器资源,提高任务执行效率的目的。
在将任务分配至工作节点的任务执行器后,图2所示的动态分配方法还包括以下步骤:
S120:任务执行器实时监测任务的执行状态,当任务的执行状态异常时向任务调度器汇报异常节点的任务异常信息。其中,任务异常信息包括超时节点的任务超时信息,任务超时信息反映了工作节点执行任务时出现了堵塞;以及任务完成节点的任务完成信息,该任务完成信息说明该任务完成节点出现了空闲。这这两种情况下,都需要重新制定任务分配方案,召回部分任务,以优化各任务执行器的执行效率。本申请实施例中,在各工作节点设置任务侦听Agent程序,Agent程序能够实时侦听所在任务执行器的任务执行状态。例如,当某一任务执行时间超过预期执行时间阈值时,Agent程序向任务调度器汇报任务超时信息;当Agent程序侦听到所在工作节点的任务执行器完成任务时,向任务执行器汇报任务完成信息。
S130:任务调度器当收到任务异常信息时,获取每个工作节点的资源信息和未执行任务信息。任务调度器当收到任务异常信息时,如任务超时信息或任务完成信息时,需要均衡各工作节点的任务执行时间,这样就需要获取每个工作节点的资源信息和未执行任务信息,这样根据每个工作节点的资源信息和未执行任务信息,召回部分未执行任务,以均衡各工作节点的任务执行时间为目标,制定相应的任务分配方案,将召回的任务重新分配下去,以减少任务堵塞,均衡任务数量,以提高任务执行效率。
S140:任务调度器确定召回的未执行任务,并根据资源信息和未执行任务信息制定任务分配方案。在工作节点出现堵塞,工作节点任务执行超时的时候,需要召回超时节点的未执行任务;当工作节点空闲时,该工作节点成为任务完成节点,此时需要召回其他工作节点的部分未执行任务分配到该任务完成节点,从而均衡各任务节点的资源,提高任务的执行效率。另外,因为工作节点执行任务是需要资源的,比如IO数量流量、CPU/内存使用情况和GPU资源等,所以工作节点在执行任务时,任务执行器能够根据未执行任务的数量和资源消耗量,计算该工作节点中未执行任务的执行时间,这样任务调度器获取每个工作节点中未执行任务的执行时间,就能够以均衡每个节点的任务执行时间,提高任务执行效率为目标,制定工作节点的任务分配方案,重新分配召回的的未执行任务至各个工作节点。
作为一种优选的实施例,如图4所示,本申请实施例提供的动态分配方法中,上述异常节点的任务异常信息包括超时节点的任务超时信息。上述任务调度器确定召回的未执行任务并根据资源信息和未执行任务信息制定任务分配方案的步骤,具体包括:
S141:任务调度器当收到任务超时信息时,召回超时节点的未执行任务。
S142:任务调度器根据除超时节点外每个工作节点的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表中新增任务的任务分配方案。
S143:任务调度器按照任务分配方案,将未执行任务和新增任务统一分配至除超时节点外的工作节点。
具体地,当某一工作节点的任务执行时间超过其预期执行时间的预设阈值时,该工作节点内的任务执行器中的Agent程序向任务调度器汇报任务超时信息。任务调度器收到Agent程序传来的任务超时信息后,向所有工作节点的Agent程序下发命令,要求上报其所在节点的实时资源数据,如IO数据、CPU/内存使用情况、GPU资源等,以及本执行器内的未执行任务。Agent程序将上述步骤中的数据,包括实时资源数据和未执行任务,上传至任务调度器;任务调度器对超时节点中的未执行任务进行召回操作;任务调度器根据所有Agent上报的实时资源数据和未执行任务情况,将召回的任务和任务列表中的新任务统一进行编排,并分配到除超时节点外的其他工作节点。这样就能够减轻超时节点的工作压力,避免超时节点的任务堵塞,并均衡各工作节点的任务执行时间,提高任务的执行效率。
其中,作为一种优选的实施例,如图5所示,上述步骤S142:任务调度器根据除超时节点外每个工作节点的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表中新增任务的任务分配方案的步骤包括:
S1421:任务调度器使用资源信息和未执行任务信息,计算除超时节点外每个工作节点的现有任务完成时间。
S1422:任务调度器使用资源信息和每项未执行任务和新增任务的消耗资源量,分别计算除超时节点外每个工作节点分别对每项任务的任务执行时间。
S1423:任务调度器按照现有任务完成时间以及任务执行时间,分别分配未执行任务和新增任务,以均衡每个工作节点的任务完成时间。
本申请实施例提供的技术方案,通过计算每个工作节点的现有任务完成时间,并且计算除超时节点外每个工作节点分别对每项任务的任务执行时间,这样任务调度器,就能够确定未执行任务和新增任务所需的任务执行时间,将未执行任务和新增任务均衡分配至除超时节点每个工作节点,从而均衡每个工作节点的任务完成时间,提高任务的执行效率。
另外,作为一种优选的实施例,如图6所示,本申请实施例提供的动态分配方法中,异常节点的任务异常信息包括任务完成节点的任务完成信息。上述步骤S140:任务调度器确定召回的未执行任务并根据资源信息和未执行任务信息制定任务分配方案,具体包括:
S144:任务调度器根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表的新增任务的任务分配方案。通过获取未执行任务信息和资源信息,能够确定未执行任务在工作节点执行所需的时间,这样能够召回部分任务,制定关于未执行任务和新增任务的任务分配方案,将任务分配给各个工作节点。
S145:任务调度器判断任务分配方案分配的未执行任务是否仍在原工作节点中。任务调度器召回部分未执行任务,如果该任务分配方案中的未执行任务,即本应召回的任务还在原工作节点,那么此类未执行任务不需要召回,直接在原工作节点执行即可。
S146:若未执行任务仍在原工作节点中,则任务调度器召回除仍在原工作节点的其他所有未执行任务。任务调度器召回除仍在原工作节点外的其他所有未执行任务,然后按照上述任务分配方案分配即可,从而均衡各工作节点的执行时间,提高任务的执行效率。
S147:任务调度器按照任务分配方案,分配除仍在原工作节点的其他所有未执行任务和新增任务至工作节点。
本申请实施例提供的技术方案,任务完成节点的资源空闲,此时任务调度器根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表中新增任务的任务分配方案,然后召回除仍在原工作节点外的其他所有未执行任务,再按照任务分配方案分类上述未执行任务和新增任务至对应的工作节点,从而均衡各工作节点的任务执行时间,提高任务的执行效率,减少工作节点空闲或堵塞的情况。
具体地,当某一工作节点执行完所有任务后,通过任务执行器中的Agent程序向任务调度器汇报任务完成信息;任务调度器向其他工作节点的Agent程序下发命令,要求上报上述资源新和未执行任务信息的数据,包括实时资源数据和未被执行的任务;然后,任务调度器对所有未执行任务和新增任务进行统一编排,制定新的执行计划,即任务分配方案;若未执行任务在新增执行计划中仍在原工作节点执行,则不进行召回,否则召回该未执行任务。调度器从新的执行计划中去除没有召回的任务,召回任务并向各工作节点下发任务。
其中,作为一种优选的实施例,如图7所示,上述动态分配方法中,任务调度器根据除任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和任务列表的新增任务的任务分配方案的步骤包括:
S1441:任务调度器使用资源信息和未执行任务信息,计算每个工作节点的任务执行速度。
S1442:任务调度器按照每个工作节点的任务执行速度,将未执行任务和新增任务分别分配至每个工作节点,以均衡每个工作节点的任务完成时间。
本申请实施例提供的任务分配方案的制定方法,通过计算每个工作节点的任务执行速度,从而将未执行任务和新增任务分配至对应的工作节点,达到均衡每个工作节点的任务完成时间的目的,提高所有任务的执行效率。
综上,当任务执行器的任务执行完毕时或者任务执行时间超过预期时,其会通过任务执行器中的Agent程序向任务调度器汇报当前运行数据,任务调度器会重新将未执行任务和新增任务统一进行编排,制定新的执行计划(即任务分配方案)并下发给各任务执行器,从而实现了任务能够在执行中不断地进行动态分配,使得任务的执行效率达到最优,使各工作节点的资源利用率达到最优。
另外,在任务调度器制定任务分配方案后,上述图2所示实施例提供的分布式任务的动态分配方法还包括:
S150:任务调度器根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点。
作为一种优选的实施例,如图8所示,该任务调度器根据任务分配方案,将召回的未执行任务和任务列表中的新增任务分配至工作节点的步骤包括:
S151:任务调度器将未执行任务和新增任务分配至工作节点的任务执行器。
S152:任务执行器执行未执行任务和新增任务,并实时监测任务的执行状态,若监测到任务的执行状态存在异常时,重复汇报异常节点的任务异常信息的步骤。
通过任务执行器中的Agent程序不断侦听工作节点中任务的执行状态,在执行状态存在异常,如任务执行时间超时,或工作节点完成所有任务处于空闲状态,重复上述汇报上述异常节点的任务异常信息的步骤,从而不断均衡各工作节点的任务执行时间,提高任务的执行效率。
综上,本发明上述实施例提供的分布式任务的动态分配方法,任务调度器根据任务列表中任务和所有工作节点的资源新,将任务分配至工作节点的任务执行器;分配有任务的每个任务执行器实时监测任务的执行状态,当任务的执行状态异常时,向任务调度器汇报异常节点的任务异常信息,执行状态异常通常为节点堵塞导致的节点超时,或者节点完成任务处于空闲状态。任务调度器当收到该任务异常信息时,获取每个工作节点的资源信息和未执行任务信息,召回部分未执行任务,例如异常节点的未执行任务,并且根据所有工作节点的资源信息和未执行任务信息制定任务分配方案,因为每个任务执行时需要消耗资源,在获知未执行任务信息和资源信息后就能够确定每个工作节点执行该未执行任务所需的时间,这样根据上述时间重新执行任务分配方案,以均衡每个工作节点的任务执行时间,从而将召回的未执行任务和任务列表中新增任务分配至特定的或全部工作节点,以减少各工作节点的资源堵塞,或者提高工作节点的资源利用率,提高任务的执行效率。综上,通过上述方式能够解决现有技术中任务分配不合理,容易出现堵塞,或者工作节点的资源利用率不高,任务的执行效率较低的问题。
参见图9,图9为本发明实施例提供的第二种分布式任务的动态分配方法的流程示意图。如图9所示,该动态分配方法包括:
S201:任务分配器监控任务列表;
S202:判断是否有任务;若是,则执行步骤S203;
S203:制定任务分配方案。
S204:下发任务到各工作节点,由各工作节点的任务执行器负责执行。
参见图10,图10为本发明实施例提供的第三种分布式任务的动态分配方法的流程示意图,如图10所示,该动态分配方法包括:
S301:任务执行器的Agent监控任务执行。
S302:判断是否,有任务超时/全部完成?若是,则执行步骤S303;若否,则执行上述步骤S301。
S303:通知任务调度器。
S304:任务调度器通知各Agent上报任务执行信息。
S305:Agent上报任务执行信息。
S306:任务调度器重新制定任务分配方案。
S307:判断是否原有任务仍在原节点?若是,则执行步骤S308;若否,则执行步骤S309。
S308:任务调度器下发新分配方案。
S309:任务调度器召回任务。
基于上述方法实施例的同一构思,本发明实施例还提出了分布式任务的动态分配系统,用于实现本发明的上述方法,由于该系统实施例解决问题的原理与方法相似,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
参见图11,图11为本发明实施例提供的一种分布式任务的动态分配系统的结构示意图。如图11所示,该分布式任务的动态分配系统包括:
设置于调度器节点100的任务列表102和任务调度器101,以及分别设置于多个工作节点200中每个工作节点200的任务执行器201;其中,每个任务执行器201中设置有Agent202,即任务侦听器,用于实时监测任务执行器201对任务的执行状态;进行实时资源统计和资源及任务执行状态上报。
任务调度器101,用于根据任务列表102中的任务和所有工作节点200的资源信息,将任务分配至工作节点200的任务执行器201;
任务执行器201,用于实时监测任务的执行状态,当任务的执行状态异常时向任务调度器101汇报异常节点的任务异常信息;
任务调度器101,还用于当收到任务异常信息时,获取每个工作节点200的资源信息和未执行任务信息;
任务调度器101,还用于确定召回的未执行任务,并根据资源信息和未执行任务信息制定任务分配方案;
任务调度器101,还用于根据任务分配方案,将召回的未执行任务和任务列表102中的新增任务分配至工作节点200。
作为一种优选的实施例,如图11所示,本申请实施例提供的分布式任务的动态分配系统中,任务调度器101,具体还用于当收到任务超时信息时,召回超时节点的未执行任务;
任务调度器101,具体还用于根据除超时节点外每个工作节点200的资源信息和未执行任务信息,制定超时节点的未执行任务和任务列表102中新增任务的任务分配方案;
任务调度器101,具体还用于按照任务分配方案,将未执行任务和新增任务统一分配至除超时节点外的工作节点200。
另外,作为一种优选的实施例,如图11所示,本申请实施例提供的分布式任务的动态分配系统还包括:
任务调度器101,具体还用于根据除任务完成节点外其他所有工作节点200的资源信息和未执行任务信息,制定所有未执行任务和任务列表102的新增任务的任务分配方案;
任务调度器101,具体还用于判断任务分配方案分配的未执行任务是否仍在原工作节点200中;
任务调度器101,具体还用于若未执行任务仍在原工作节点200中,则召回除仍在原工作节点200的其他所有未执行任务;
任务调度器101,具体还用于按照任务分配方案,分配除仍在原工作节点200的其他所有未执行任务和新增任务至工作节点200。
综上,本发明上述实施例提供的分布式任务的动态分配系统,任务调度器101根据任务列表102中任务和所有工作节点200的资源新,将任务分配至工作节点200的任务执行器201;分配有任务的每个任务执行器201实时监测任务的执行状态,当任务的执行状态异常时,向任务调度器101汇报异常节点的任务异常信息,执行状态异常通常为节点堵塞导致的节点超时,或者节点完成任务处于空闲状态。任务调度器101当收到该任务异常信息时,获取每个工作节点200的资源信息和未执行任务信息,召回部分未执行任务,例如异常节点的未执行任务,并且根据所有工作节点200的资源信息和未执行任务信息制定任务分配方案,因为每个任务执行时需要消耗资源,在获知未执行任务信息和资源信息后就能够确定每个工作节点200执行该未执行任务所需的时间,这样根据上述时间重新执行任务分配方案,以均衡每个工作节点200的任务执行时间,从而将召回的未执行任务和任务列表102中新增任务分配至特定的或全部工作节点200,以减少各工作节点200的资源堵塞,或者提高工作节点200的资源利用率,提高任务的执行效率。综上,通过上述方式能够解决现有技术中任务分配不合理,容易出现堵塞,或者工作节点200的资源利用率不高,任务的执行效率较低的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种分布式任务的动态分配方法,其特征在于,包括:
任务调度器根据任务列表中的任务和所有工作节点的资源信息,将所述任务分配至工作节点的任务执行器;
所述任务执行器实时监测所述任务的执行状态,当所述任务的执行状态异常时向所述任务调度器汇报异常节点的任务异常信息;
所述任务调度器当收到所述任务异常信息时,获取每个工作节点的资源信息和未执行任务信息;
所述任务调度器确定召回的未执行任务,并根据所述资源信息和未执行任务信息制定任务分配方案;
所述任务调度器根据所述任务分配方案,将召回的所述未执行任务和所述任务列表中的新增任务分配至所述工作节点。
2.根据权利要求1所述的动态分配方法,其特征在于,所述异常节点的任务异常信息包括超时节点的任务超时信息;所述任务调度器确定召回的未执行任务并根据所述资源信息和未执行任务信息制定任务分配方案的步骤,包括:
所述任务调度器当收到所述任务超时信息时,召回所述超时节点的未执行任务;
所述任务调度器根据除所述超时节点外每个工作节点的资源信息和未执行任务信息,制定所述超时节点的未执行任务和所述任务列表中新增任务的任务分配方案;
所述任务调度器按照所述任务分配方案,将所述未执行任务和所述新增任务统一分配至除所述超时节点外的工作节点。
3.根据权利要求2所述的动态分配方法,其特征在于,所述任务调度器根据除所述超时节点外每个工作节点的资源信息和未执行任务信息,制定所述超时节点的未执行任务和所述任务列表中新增任务的任务分配方案的步骤,包括:
所述任务调度器使用所述资源信息和未执行任务信息,计算除所述超时节点外每个工作节点的现有任务完成时间;
所述任务调度器使用所述资源信息和每项所述未执行任务和所述新增任务的消耗资源量,分别计算除所述超时节点外每个工作节点分别对每项任务的任务执行时间;
所述任务调度器按照所述现有任务完成时间以及所述任务执行时间,分别分配所述未执行任务和新增任务,以均衡每个工作节点的任务完成时间。
4.根据权利要求1所述的动态分配方法,其特征在于,所述异常节点的任务异常信息包括任务完成节点的任务完成信息;所述任务调度器确定召回的未执行任务并根据所述资源信息和未执行任务信息制定任务分配方案的步骤,包括:
所述任务调度器根据除所述任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和所述任务列表的新增任务的任务分配方案;
所述任务调度器判断所述任务分配方案分配的未执行任务是否仍在原工作节点中;
若所述未执行任务仍在原工作节点中,则所述任务调度器召回除仍在原工作节点的其他所有未执行任务;
所述任务调度器按照所述任务分配方案,分配所述除仍在原工作节点的其他所有未执行任务和所述新增任务至所述工作节点。
5.根据权利要求4所述的动态分配方法,其特征在于,所述任务调度器根据除所述任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和所述任务列表的新增任务的任务分配方案的步骤,包括:
所述任务调度器使用所述资源信息和未执行任务信息,计算每个工作节点的任务执行速度;
所述任务调度器按照所述每个工作节点的任务执行速度,将所述未执行任务和新增任务分别分配至每个工作节点,以均衡每个工作节点的任务完成时间。
6.根据权利要求1所述的动态分配方法,其特征在于,所述任务调度器根据任务列表中的任务和所有工作节点的资源信息,将所述任务分配至工作节点的任务执行器的步骤,包括:
所述任务调度器按照所述任务的消耗资源量和所有工作节点的资源信息,分别计算每个工作节点对每项任务的任务执行时间;
所述任务调度器,按照所述任务执行时间,分别分配所述任务至所述工作节点的任务执行器。
7.根据权利要求1所述的动态分配方法,其特征在于,所述任务调度器根据所述任务分配方案,将召回的所述未执行任务和所述任务列表中的新增任务分配至所述工作节点的步骤,包括:
所述任务调度器将所述未执行任务和所述新增任务分配至所述工作节点的任务执行器;
所述任务执行器执行所述未执行任务和新增任务,并实时监测任务的执行状态,若监测到任务的执行状态存在异常时,重复所述汇报异常节点的任务异常信息的步骤。
8.一种分布式任务的动态分配系统,其特征在于,包括:
设置于调度器节点的任务列表和任务调度器,以及分别设置于多个工作节点中每个工作节点的任务执行器;其中,
所述任务调度器,用于根据任务列表中的任务和所有工作节点的资源信息,将所述任务分配至工作节点的任务执行器;
所述任务执行器,用于实时监测所述任务的执行状态,当所述任务的执行状态异常时向所述任务调度器汇报异常节点的任务异常信息;
所述任务调度器,还用于当收到所述任务异常信息时,获取每个工作节点的资源信息和未执行任务信息;
所述任务调度器,还用于确定召回的未执行任务,并根据所述资源信息和未执行任务信息制定任务分配方案;
所述任务调度器,还用于根据所述任务分配方案,将召回的所述未执行任务和所述任务列表中的新增任务分配至所述工作节点。
9.根据权利要求8所述的动态分配系统,其特征在于,还包括:
所述任务调度器,具体还用于当收到所述任务超时信息时,召回所述超时节点的未执行任务;
所述任务调度器,具体还用于根据除所述超时节点外每个工作节点的资源信息和未执行任务信息,制定所述超时节点的未执行任务和所述任务列表中新增任务的任务分配方案;
所述任务调度器,具体还用于按照所述任务分配方案,将所述未执行任务和所述新增任务统一分配至除所述超时节点外的工作节点。
10.根据权利要求8所述的动态分配系统,其特征在于,还包括:
所述任务调度器,具体还用于根据除所述任务完成节点外其他所有工作节点的资源信息和未执行任务信息,制定所有未执行任务和所述任务列表的新增任务的任务分配方案;
所述任务调度器,具体还用于判断所述任务分配方案分配的未执行任务是否仍在原工作节点中;
所述任务调度器,具体还用于若所述未执行任务仍在原工作节点中,则召回除仍在原工作节点的其他所有未执行任务;
所述任务调度器,具体还用于按照所述任务分配方案,分配所述除仍在原工作节点的其他所有未执行任务和所述新增任务至所述工作节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210788412.0A CN115048247A (zh) | 2022-07-04 | 2022-07-04 | 一种分布式任务的动态分配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210788412.0A CN115048247A (zh) | 2022-07-04 | 2022-07-04 | 一种分布式任务的动态分配方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048247A true CN115048247A (zh) | 2022-09-13 |
Family
ID=83164528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210788412.0A Pending CN115048247A (zh) | 2022-07-04 | 2022-07-04 | 一种分布式任务的动态分配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048247A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117032911A (zh) * | 2023-04-23 | 2023-11-10 | 北京远舢智能科技有限公司 | 一种基于分布式调度引擎的任务调度方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445921A (zh) * | 2018-10-24 | 2019-03-08 | 东北石油大学 | 一种分布式数据任务处理方法及装置 |
CN111782360A (zh) * | 2020-06-28 | 2020-10-16 | 中国工商银行股份有限公司 | 分布式任务调度方法及装置 |
CN114327835A (zh) * | 2021-12-31 | 2022-04-12 | 中国工商银行股份有限公司 | 分布式任务的调度方法及装置、处理器和电子设备 |
-
2022
- 2022-07-04 CN CN202210788412.0A patent/CN115048247A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445921A (zh) * | 2018-10-24 | 2019-03-08 | 东北石油大学 | 一种分布式数据任务处理方法及装置 |
CN111782360A (zh) * | 2020-06-28 | 2020-10-16 | 中国工商银行股份有限公司 | 分布式任务调度方法及装置 |
CN114327835A (zh) * | 2021-12-31 | 2022-04-12 | 中国工商银行股份有限公司 | 分布式任务的调度方法及装置、处理器和电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117032911A (zh) * | 2023-04-23 | 2023-11-10 | 北京远舢智能科技有限公司 | 一种基于分布式调度引擎的任务调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381950B (zh) | 一种面向边缘计算环境基于多副本的任务调度方法和系统 | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
US7689996B2 (en) | Method to distribute programs using remote Java objects | |
CN105320561B (zh) | 任务管理方法和系统 | |
CN105912399B (zh) | 一种任务处理方法、装置及系统 | |
CN109343939B (zh) | 一种分布式集群及并行计算任务调度方法 | |
CN111625331A (zh) | 任务调度方法、装置、平台、服务器及存储介质 | |
TWI786564B (zh) | 任務調度方法和裝置、儲存媒體及計算機設備 | |
JPH0844576A (ja) | 動的作業負荷平衡化 | |
He et al. | Provably efficient online nonclairvoyant adaptive scheduling | |
CN111258746A (zh) | 资源分配方法和服务设备 | |
CN112162835A (zh) | 一种异构云环境下实时任务的调度优化方法 | |
CN115048247A (zh) | 一种分布式任务的动态分配方法和系统 | |
CN112162839A (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN116932201A (zh) | 一种面向深度学习训练任务的多资源共享调度方法 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、系统及装置 | |
CN106775975B (zh) | 进程调度方法及装置 | |
Shah et al. | Agent based priority heuristic for job scheduling on computational grids | |
CN117909061A (zh) | 基于gpu混合集群的模型任务处理系统和资源调度方法 | |
JPH0628323A (ja) | プロセス実行制御方法 | |
CN113010309A (zh) | 集群资源调度方法、装置、存储介质、设备和程序产品 | |
CN115712572A (zh) | 任务的测试方法、装置、存储介质及电子装置 | |
CN111580937B (zh) | 一种面向飞腾多核/众核混合集群的虚拟机自动调度方法 | |
CN108845870A (zh) | 一种基于pWCET整形的概率性实时任务调度方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220913 |