CN105159783A - 一种系统任务分配方法 - Google Patents
一种系统任务分配方法 Download PDFInfo
- Publication number
- CN105159783A CN105159783A CN201510650371.9A CN201510650371A CN105159783A CN 105159783 A CN105159783 A CN 105159783A CN 201510650371 A CN201510650371 A CN 201510650371A CN 105159783 A CN105159783 A CN 105159783A
- Authority
- CN
- China
- Prior art keywords
- system task
- task
- control end
- execution
- described system
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种系统任务分配方法,适用于分布式系统技术领域;方法包括:步骤S1,根据外部输入的配置指令,在控制端内配置不同的系统任务的属性,以及系统任务之间的依赖关系;步骤S2,控制端依照不同的系统任务之间的依赖关系构造形成包括所有系统任务的任务关系树;步骤S3,控制端遍历任务关系树,以将所有系统任务按照对应的遍历顺序放入一执行队列中;步骤S4,控制端依照遍历顺序依次读取执行队列中的所有系统任务,并将关联于每个系统任务的属性下发至对应的运算端进行运算。上述技术方案的有益效果是:提升系统任务分配的效率和条理性,保证了任务之间的执行依赖关系,提升了整个分布式运算系统的运算效率。
Description
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种系统任务分配方法。
背景技术
在分布式系统中存在多个运算节点,以及结构复杂、数量众多的系统任务。现有的任务分配方法无法按照使用者设定的方式灵活地分配任务,不同的系统任务之间若存在相互依赖关系(例如父任务的输出为子任务的输入),则现有技术中无法针对这些任务进行关联性分配,同时存在运算系统可用性较差,可维护性不佳等问题。
发明内容
根据现有技术中存在的问题,现提供一种系统任务分配方法,旨在解决传统的多任务-多运算节点模式下任务分配非常混乱,无法很好地分配和执行链式任务等问题。
上述技术方案具体包括:
一种系统任务分配方法,适用于分布式运算系统,所述分布式运算系统包括多个运算端;其中,包括一分别与每个所述运算端连接的控制端,还包括:
步骤S1,根据外部输入的配置指令,在所述控制端内配置不同的系统任务的属性,以及所述系统任务之间的依赖关系;
步骤S2,所述控制端依照不同的所述系统任务之间的依赖关系构造形成包括所有所述系统任务的任务关系树;
步骤S3,所述控制端遍历所述任务关系树,以将所有所述系统任务按照对应的遍历顺序放入一执行队列中;
步骤S4,所述控制端依照所述遍历顺序依次读取所述执行队列中的所有所述系统任务,并将关联于每个所述系统任务的所述属性下发至对应的所述运算端进行运算。
优选的,该系统任务分配方法,其中,所述步骤S1中,关联于所述系统任务的属性包括:
关联于所述系统任务的任务参数;和/或
关联于所述系统任务的程序代码的存储地址;和/或
关联于所述系统任务的任务名称;和/或
具有所述依赖关系的所述系统任务的执行状况。
优选的,该系统任务分配方法,其中,所述步骤S1中,提供一连接所述控制端的配置端,以供使用者向所述控制端输入所述配置指令。
优选的,该系统任务分配方法,其中,所述任务关系树中的每个节点关联于一个所述系统任务的所有所述属性。
优选的,该系统任务分配方法,其中,所述步骤S3中,所述控制端采用广度优先遍历方式对所述任务关系树进行遍历;
则所述遍历顺序为广度优先的遍历顺序。
优选的,该系统任务分配方法,其中,所述步骤S4中,所述运算端将被执行的所述系统任务的执行状况反馈至所述控制端,所述控制端将所述执行状况作为具有所述依赖关系的所述系统任务的所述属性并保存于所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S4具体包括:
步骤S41,所述控制端按照所述遍历顺序获取所述执行队列中的一个所述系统任务并送入一执行线程中;
步骤S42,所述控制端判断被获取的所述系统任务是否为所述执行队列中的第一个所述系统任务:
若是,则所述控制端采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S43,所述控制端根据关联于被获取的所述系统任务的所述属性,判断关联于所述系统任务的父任务是否已经执行完成:
若是,则所述控制端采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S44,所述控制端判断所述执行队列中是否存在尚未被执行的所述系统任务:
若否,则所述控制端将所述系统任务送入一缓冲队列中,随后返回所述步骤S41;
若是,则在经过预设的时间后返回所述步骤S43。
优选的,该系统任务分配方法,其中,所述步骤S42中,若判断被获取的所述系统任务为所述执行队列中的第一个所述系统任务后,所述控制端在将所述系统任务下发至对应的所述运算端执行的同时,从所述缓冲队列中提取一个所述系统任务并放入所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S42中,若判断被获取的所述系统任务为所述执行队列中的第一个所述系统任务后,所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S43中,若判断关联于所述系统任务的父任务已经执行完成,则继续执行下述步骤:
步骤S431,判断所述系统任务是否为一预设的第一类型;
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S432,判断所述父任务是否执行成功:
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
步骤S433,判断所述系统任务是否为一预设的第二类型:
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S434,所述系统任务确认为一预设的第三类型,并进而判断所述父任务的执行时间是否与所述系统任务的执行时间相同:
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S431中,若所述系统任务为所述第一类型,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S433中,若所述系统任务为所述第二类型,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
优选的,该系统任务分配方法,其中,所述步骤S434中,若所述父任务的执行时间是否与所述系统任务的执行时间相同,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
优选的,该系统任务分配方法,其中,所述第一类型用于指示执行所述系统任务仅依赖于对应的所述父任务已经被执行;
所述第二类型用于指示执行所述系统任务依赖于对应的所述父任务被执行成功;
所述第三类型用于指示执行所述系统任务依赖于对应的所述父任务的执行时间与所述系统任务的执行时间相同。
优选的,该系统任务分配方法,其中,对应一个所述运算端,设定一个所述执行线程;
所述控制端采用关联于不同的所述运算端的所述执行线程,将所述系统任务分配给不同的所述运算端。
优选的,该系统任务分配方法,其中,于执行所述步骤S4之后,所述控制端记录下发至不同的所述运算端进行执行的所述系统任务的所述依赖关系,以供使用者进行查询。
上述技术方案的友谊效果是:提供一种系统任务分配方法,能够基于分布式运算系统的基础上,合理分配不同的系统任务至不同的运算端执行,提升系统任务分配的效率和条理性,保证了任务之间的执行依赖关系,提升了整个分布式运算系统的运算效率。
附图说明
图1是本发明的较佳的实施例中,分布式运算系统的结构示意图;
图2是本发明的较佳的实施例中,一种系统任务分配方法的总体流程示意图;
图3-4是本发明的较佳的实施例中,于图2的基础上,一种系统任务分配方法的分步骤流程示意图;
图5-8分别是本发明的较佳的实施例中,不同的任务关系树的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种系统任务分配方法的技术方案,该方法适用于一分布式运算系统(如图1所示)。该分布式运算系统中包括:
一个控制端1,用于根据外部输入的配置指令设定系统任务;
多个运算端2,分别连接上述控制端1。上述控制端1可以向不同的运算端2下发不同的系统任务,则运算端2执行接收到的系统任务,并将相应的执行结果反馈给控制端1。
一个配置端3,连接上述控制端1,用于提供使用者配置界面,以供使用者输入配置指令。配置端3将配置指令下发给控制端1,控制端1根据配置指令配置不同的系统任务的属性。
因此,本发明的较佳的实施例中,如图2所示,基于上述分布式运算系统,上述系统任务分配方法具体包括:
步骤S1,根据外部输入的配置指令,在控制端内配置不同的系统任务的属性,以及系统任务之间的依赖关系;
步骤S2,控制端依照不同的系统任务之间的依赖关系构造形成包括所有系统任务的任务关系树;
步骤S3,控制端遍历任务关系树,以将所有系统任务按照对应的遍历顺序放入一执行队列中;
步骤S4,控制端依照遍历顺序依次读取执行队列中的所有系统任务,并将关联于每个系统任务的属性下发至对应的运算端进行运算。
在一个具体实施例中,首先,上述控制端根据配置端输入的配置指令,配置不同的系统任务的属性,以及不同系统任务之间的依赖关系。
则该实施例中,上述属性可以包括下文中的一种或几种:
关联于系统任务的任务参数,例如执行该系统任务所需要的参数配置等;
关联于系统任务的程序代码的存储地址,例如该系统任务所对应的执行程序代码的存储地址;
关联于系统任务的任务名称;
具有依赖关系的系统任务的执行状况。由于一些系统任务在执行之前,需要另一些系统任务已经执行完毕,即有些系统任务的执行依赖于其他系统任务的执行结果。则上述执行状况即可以说明不同的系统任务当前的执行结果,例如该系统任务已经执行完成,该系统任务执行成功,或者该系统任务执行失败等。该实施例中,上述执行状况可以根据运算端的反馈实时更新。
因此,进一步地,上述依赖关系可以定义为:一个系统任务的执行依赖于另一个系统任务执行完成/执行成功,例如一个系统任务的输入需要依赖另一个系统任务的输出,则认为这两个系统任务之间具有依赖关系。
该实施例中,依赖关系并不一定是一一对应的,例如一个系统任务的输出可以为多个系统任务的输入。
则上述步骤中,控制端依据配置指令确定不同的系统任务之间的依赖关系之后,根据该依赖关系构造形成包括所有系统任务的任务关系树(任务关系树在下文中会详述)。则上述任务关系树中,每个节点均对应一个系统任务(及其属性)。
随后,控制端根据上述任务关系树进行遍历,并将遍历得到的不同的系统任务依照遍历顺序放入一执行队列中。具体地,控制端采用广度优先的遍历方式对上述任务关系树进行遍历,随后根据广度优先的遍历顺序将上述遍历得到的所有系统任务一一送入执行队列中。
控制端根据遍历顺序,分别获取上述执行队列中的每个系统任务,并将关联于该被获取的系统任务的所有具体属性下发至对应的运算端中,以供运算端执行。并且,控制端获取运算端的执行结果,并根据该执行结果确定接下来的系统任务的执行策略。
具体地,本发明的较佳的实施例中,运算端将被执行的系统任务的执行状况反馈至控制端,控制端将执行状况作为具有依赖关系的系统任务的属性并保存于执行队列中。换言之,上述执行队列中的不同的系统任务的属性中,其执行状况是实时变化的,这样才能给后续执行的系统任务带来实时参照。
本发明的一个较佳的实施例中,上述任务关系树的一种结构如图5所示,其中R0为根节点。
本发明的另一个较佳的实施例中,上述任务关系树的一种结构如图6所示,其中R0同样为根节点。
本发明的另一个较佳的实施例中,上述任务关系树的一种结构如图7所示,其中A1为根节点。
本发明的另一个较佳的实施例中,上述任务关系树的一种结构如图8所示,其中D1为根节点,E1和E2分别为子节点。D1可以为一完整的任务关系树(类似图5-7所示),同样E1和E2也分别可以为一完整的任务关系树。换言之,在图8中,一个节点可以用于表示一棵完整的任务关系树,不同的任务关系树之间同样可以建立依赖关系。
则可以看到,一棵任务关系树可以为一个任务流,不同的任务关系树(任务流)可以组合形成一棵大关系树(大任务流)。上述配置可以由使用者任意组合形成,因此增加了任务配置的灵活性。
则本发明的较佳的实施例中,在控制端依照不同的任务关系树进行广度优先的遍历,并依照广度优先的遍历顺序将遍历得到的所有系统任务依次保存于一执行队列中。以上图5中所示的任务关系树为例,对其广度优先遍历后得到的遍历顺序为:R0→A1→A2→A3→B1→C1→C2→D1→D2→E1→E2。则可以看到,上述执行队列的存储形式实际为链表式的,即在执行队列中依照遍历顺序,保留了不同的系统任务之间的依赖关系。
本发明的较佳的实施例中,如图3所示,上述步骤S4具体包括:
步骤S41,控制端按照遍历顺序获取执行队列中的一个系统任务并送入一执行线程中;
本发明的较佳的实施例中,可以存在N个执行线程,每个执行线程对应一个运算端。
进一步地,本发明的较佳的实施例中,每个执行线程在同一时刻均只能承载一个系统任务,不同的执行线程在同一时刻承载的系统任务必然不同。换言之,在同一时刻不同的运算端执行的系统任务必然不同。
步骤S42,控制端判断被获取的系统任务是否为执行队列中的第一个系统任务:
若是,则控制端采用执行线程,将系统任务下发至对应的运算端执行;
本发明的较佳的实施例中,所谓执行队列中的第一系统任务,即指本次执行的任务关系树的根节点任务(例如图5中所示的R0节点对应的系统任务)。
则上述步骤S42中,在一个执行线程中,若当前被获取的系统任务为根节点,则控制端直接采用该执行线程,将系统任务下发至对应的运算端执行;反之,继续执行下述步骤S43;
本发明的较佳的实施例中,若当前被获取的系统任务为根节点,则控制端直接采用该执行线程,将系统任务下发至对应的运算端执行,随后执行下述步骤:
根据运算端反馈的关联于系统任务的执行结果判断系统任务是否执行成功:
若是,则控制端将系统任务的执行状况设定为用于表示执行成功的第一标记,并将执行状况作为系统任务的属性反馈至执行队列中;
若否,则控制端将系统任务的执行状况设定为用于表示执行失败的第二标记,并将执行状况作为系统任务的属性反馈至执行队列中。
换言之,本发明的较佳的实施例中,若被获取的系统任务为第一个任务(根任务),则控制端直接将该系统任务下发至相应的运算端,随后根据运算端反馈的执行结果判断该任务是否执行成功:若是,则将执行队列中相应的执行状况更改为用于表示成功的第一标记,例如DICT(ID,TRUE);若否,则将执行队列中相应的执行状况更改为用于表示失败的第二标记,例如DICT(ID,FALSE)。
本发明的较佳的实施例中,若被获取的系统任务为根任务,则控制端在向运算端下发该系统任务的同时,从一缓冲(Buffer)队列中获取系统任务并按照顺序放入执行队列中。缓冲队列中的系统任务的来源在下文中会详述。
步骤S43,控制端根据关联于被获取的系统任务的属性,判断关联于系统任务的父任务是否已经执行完成:
若是,则控制端采用执行线程,将系统任务下发至对应的运算端执行;
本发明的较佳的实施例中,由于在执行队列中的系统任务均具有依赖关系,即每个系统任务均具有依赖的父任务(除了根任务)。因此,在上述步骤S43中,在判断被获取的系统任务不为根任务后,进一步判断其对应的父任务是否执行完成:
若执行完成,则回到上述步骤S42中的判断分支后的执行流程,即控制端直接采用执行线程,将系统任务下发至对应的运算端执行。之后如上文中所述,同样执行从缓冲队列中取出系统任务并放入执行队列中,以及根据运算端反馈的执行结果判断并更新执行队列中的执行状况等过程。
步骤S44,控制端判断执行队列中是否存在尚未被执行的系统任务:
若否,则控制端将系统任务送入一缓冲队列中,随后返回步骤S41;
若是,则在经过预设的时间后返回步骤S43。
本发明的较佳的实施例中,在判断被获取的系统任务并非根任务,并且其父任务尚未执行完成,则进一步判断在执行队列中是否存在其他尚未被执行的系统任务:
若存在,则等待一段预设的时间,可以为几秒钟,以等待执行队列中是否有该系统任务的父任务被调用并执行,随后返回上述步骤S43,重新判断该系统任务的父任务是否执行完成;
若不存在,则将当前被获取的系统任务放入上述缓冲队列中,随后返回上述步骤S41,以按照遍历顺序继续从执行队列中获取下一个系统任务。因此可以解释上述缓冲队列中系统任务的数据来源。
本发明的较佳的实施例中,上述步骤S43中,若判断关联于系统任务的父任务已经执行完成,则继续执行如图4所示的步骤:
步骤S431,判断系统任务是否为一预设的第一类型;
若是,则控制端直接采用执行线程,将系统任务下发至对应的运算端执行;
本发明的较佳的实施例中,上述第一类型可以用于指示执行系统任务仅依赖于对应的父任务已经被执行。本发明的一个较佳的实施例中,可以采用END_ONLY来表示上述第一类型。若一个系统任务属于END_ONLY,则只需要该系统任务的父任务执行完成即可以执行该系统任务。
则本发明的较佳的实施例中,若该系统任务为第一类型,且经过之前的判断,该系统任务的父任务已经执行完成,则直接跳转至“控制端直接采用执行线程,将系统任务下发至对应的运算端执行”的过程,并同样执行如上文中所述的将缓冲队列中的系统任务移至执行队列中,以及判断并更新执行状况的过程。
若该系统任务不为第一类型,则继续执行下述步骤S432。
步骤S432,判断父任务是否执行成功:
若否,则控制端将系统任务的执行状况设定为用于表示执行失败的第二标记,并将执行状况作为系统任务的属性反馈至执行队列中;
本发明的较佳的实施例中,上文中所述的执行结束,与上述步骤S432中所述的执行成功为两个不同的概念。“执行结束”并不关心该系统任务执行后是否成功,而“执行成功”需要关心最终的执行结果。
步骤S433,判断系统任务是否为一预设的第二类型:
若是,则控制端直接采用执行线程,将系统任务下发至对应的运算端执行;
则本发明的较佳的实施例中,所谓第二类型,用于指示执行所述系统任务依赖于对应的所述父任务被执行成功(END_SUCCEED)。换言之,一个系统任务为第二类型,实际指该系统任务的执行依赖于其父任务执行成功,而不仅仅是执行结束。
本发明的较佳的实施例中,若一个系统任务被判断为第二类型,且依照之前的判断已经确认其父任务执行成功,则直接跳转至“控制端直接采用执行线程,将系统任务下发至对应的运算端执行”的过程,并同样执行如上文中所述的将缓冲队列中的系统任务移至执行队列中,以及判断并更新执行状况的过程。
若该系统任务不为第二类型,则继续执行下述步骤S434。
步骤S434,系统任务确认为一预设的第三类型,并进而判断父任务的执行时间是否与系统任务的执行时间相同:
若是,则控制端直接采用执行线程,将系统任务下发至对应的运算端执行;
若否,则控制端将系统任务的执行状况设定为用于表示执行失败的第二标记,并将执行状况作为系统任务的属性反馈至执行队列中。
本发明的较佳的实施例中,所谓第三类型,实际用于指示执行所述系统任务依赖于对应的所述父任务的执行时间与所述系统任务的执行时间相同(END_DATE)。换言之,若一个系统任务被认为是第三类型,则实际表示该系统任务的执行依赖于其父任务与该系统任务的执行时间相同。
则本发明的较佳的实施例中,若当前被获取的系统任务为第三类型,则进一步判断其父任务的执行时间是否与该系统任务的执行时间相同:
若相同,则直接跳转至“控制端直接采用执行线程,将系统任务下发至对应的运算端执行”的过程,并同样执行如上文中所述的将缓冲队列中的系统任务移至执行队列中,以及判断并更新执行状况的过程。
若不相同,则控制端直接将系统任务的执行状况设定为用于表示执行失败的第二标记,并将执行状况作为系统任务的属性反馈至执行队列中。
综上所述,本发明技术方案中,根据使用者的配置指令,控制端首先设置包括多个相互之间具有依赖关系的系统任务的任务关系树,随后遍历该关系树并按照遍历顺序将其放入执行队列中。控制端通过多个执行线程,依照遍历顺序并发地获取系统任务并下发至不同的运算端,从而完成分布式运算系统的系统任务分配过程。例如,对于执行队列中包括系统任务1→2→3→4→5,且具有3个运算端(3个执行线程),则3个执行线程首先同时获取1(第一个执行线程),2(第二个执行线程)和3(第三个执行线程),并分别送入相应的运算端执行,随后第一个空闲的执行线程获取4并送入相应的运算端,第二个空闲的执行线程获取5并送入相应的运算端,从而完成执行队列中所有系统任务的分配过程。
本发明的较佳的实施例中,于执行上述步骤S4之后,控制端记录下发至不同的运算端进行执行的系统任务的依赖关系,以供使用者进行查询。
换言之,本发明的较佳的实施例中,控制端提供使用者能够查询不同的系统任务的数据“血缘”关系,即可以依照遍历执行的顺序依次往上查找不同的系统任务的父任务,直至查找到根任务,因此能够在任务执行出现问题时,通过日志查询方便地追溯到数据源头的质量问题。
本发明的较佳的实施例中,上述多个运算端可以运行在不同的操作系统下,或者为不同的服务器,或者为其他不同的计算机设备/网络设备。例如可以为运行于Linux环境下的设备,运行于AIX环境下的设备,运行于Windows环境下的设备,Oracle数据库服务器,Hbase数据库服务器,以及其他可能的设备。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (16)
1.一种系统任务分配方法,适用于分布式运算系统,所述分布式运算系统包括多个运算端;其特征在于,包括一分别与每个所述运算端连接的控制端,还包括:
步骤S1,根据外部输入的配置指令,在所述控制端内配置不同的系统任务的属性,以及所述系统任务之间的依赖关系;
步骤S2,所述控制端依照不同的所述系统任务之间的依赖关系构造形成包括所有所述系统任务的任务关系树;
步骤S3,所述控制端遍历所述任务关系树,以将所有所述系统任务按照对应的遍历顺序放入一执行队列中;
步骤S4,所述控制端依照所述遍历顺序依次读取所述执行队列中的所有所述系统任务,并将关联于每个所述系统任务的所述属性下发至对应的所述运算端进行运算。
2.如权利要求1所述的系统任务分配方法,其特征在于,所述步骤S1中,关联于所述系统任务的属性包括:
关联于所述系统任务的任务参数;和/或
关联于所述系统任务的程序代码的存储地址;和/或
关联于所述系统任务的任务名称;和/或
具有所述依赖关系的所述系统任务的执行状况。
3.如权利要求1所述的系统任务分配方法,其特征在于,所述步骤S1中,提供一连接所述控制端的配置端,以供使用者向所述控制端输入所述配置指令。
4.如权利要求1所述的系统任务分配方法,其特征在于,所述任务关系树中的每个节点关联于一个所述系统任务的所有所述属性。
5.如权利要求1所述的系统任务分配方法,其特征在于,所述步骤S3中,所述控制端采用广度优先遍历方式对所述任务关系树进行遍历;
则所述遍历顺序为广度优先的遍历顺序。
6.如权利要求1所述的系统任务分配方法,其特征在于,所述步骤S4中,所述运算端将被执行的所述系统任务的执行状况反馈至所述控制端,所述控制端将所述执行状况作为具有所述依赖关系的所述系统任务的所述属性并保存于所述执行队列中。
7.如权利要求1所述的系统任务分配方法,其特征在于,所述步骤S4具体包括:
步骤S41,所述控制端按照所述遍历顺序获取所述执行队列中的一个所述系统任务并送入一执行线程中;
步骤S42,所述控制端判断被获取的所述系统任务是否为所述执行队列中的第一个所述系统任务:
若是,则所述控制端采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S43,所述控制端根据关联于被获取的所述系统任务的所述属性,判断关联于所述系统任务的父任务是否已经执行完成:
若是,则所述控制端采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S44,所述控制端判断所述执行队列中是否存在尚未被执行的所述系统任务:
若否,则所述控制端将所述系统任务送入一缓冲队列中,随后返回所述步骤S41;
若是,则在经过预设的时间后返回所述步骤S43。
8.如权利要求7所述的系统任务分配方法,其特征在于,所述步骤S42中,若判断被获取的所述系统任务为所述执行队列中的第一个所述系统任务后,所述控制端在将所述系统任务下发至对应的所述运算端执行的同时,从所述缓冲队列中提取一个所述系统任务并放入所述执行队列中。
9.如权利要求7所述的系统任务分配方法,其特征在于,所述步骤S42中,若判断被获取的所述系统任务为所述执行队列中的第一个所述系统任务后,所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
10.如权利要求7所述的系统任务分配方法,其特征在于,所述步骤S43中,若判断关联于所述系统任务的父任务已经执行完成,则继续执行下述步骤:
步骤S431,判断所述系统任务是否为一预设的第一类型;
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S432,判断所述父任务是否执行成功:
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
步骤S433,判断所述系统任务是否为一预设的第二类型:
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
步骤S434,所述系统任务确认为一预设的第三类型,并进而判断所述父任务的执行时间是否与所述系统任务的执行时间相同:
若是,则所述控制端直接采用所述执行线程,将所述系统任务下发至对应的所述运算端执行;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
11.如权利要求10所述的系统任务分配方法,其特征在于,所述步骤S431中,若所述系统任务为所述第一类型,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
12.如权利要求10所述的系统任务分配方法,其特征在于,所述步骤S433中,若所述系统任务为所述第二类型,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
13.如权利要求10所述的系统任务分配方法,其特征在于,所述步骤S434中,若所述父任务的执行时间是否与所述系统任务的执行时间相同,则所述控制端将所述系统任务下发至对应的所述运算端执行,并继续执行下述步骤:
所述控制端根据所述运算端反馈的关联于所述系统任务的执行结果判断所述系统任务是否执行成功:
若是,则所述控制端将所述系统任务的执行状况设定为用于表示执行成功的第一标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中;
若否,则所述控制端将所述系统任务的执行状况设定为用于表示执行失败的第二标记,并将所述执行状况作为所述系统任务的所述属性反馈至所述执行队列中。
14.如权利要求10所述的系统任务分配方法,其特征在于,所述第一类型用于指示执行所述系统任务仅依赖于对应的所述父任务已经被执行;
所述第二类型用于指示执行所述系统任务依赖于对应的所述父任务被执行成功;
所述第三类型用于指示执行所述系统任务依赖于对应的所述父任务的执行时间与所述系统任务的执行时间相同。
15.如权利要求7所述的系统任务分配方法,其特征在于,对应一个所述运算端,设定一个所述执行线程;
所述控制端采用关联于不同的所述运算端的所述执行线程,将所述系统任务分配给不同的所述运算端。
16.如权利要求1所述的系统任务分配方法,其特征在于,于执行所述步骤S4之后,所述控制端记录下发至不同的所述运算端进行执行的所述系统任务的所述依赖关系,以供使用者进行查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510650371.9A CN105159783A (zh) | 2015-10-09 | 2015-10-09 | 一种系统任务分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510650371.9A CN105159783A (zh) | 2015-10-09 | 2015-10-09 | 一种系统任务分配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105159783A true CN105159783A (zh) | 2015-12-16 |
Family
ID=54800646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510650371.9A Pending CN105159783A (zh) | 2015-10-09 | 2015-10-09 | 一种系统任务分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159783A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239468A (zh) * | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 任务节点管理方法及装置 |
CN108108235A (zh) * | 2017-12-07 | 2018-06-01 | 北京荣之联科技股份有限公司 | 任务处理方法及装置 |
CN108415740A (zh) * | 2018-03-09 | 2018-08-17 | 成都优易数据有限公司 | 一种应用于数据分析任务的工作流调度方法 |
CN108572865A (zh) * | 2018-04-04 | 2018-09-25 | 国家计算机网络与信息安全管理中心 | 一种任务队列处理方法和装置 |
CN108829880A (zh) * | 2018-06-27 | 2018-11-16 | 烽火通信科技股份有限公司 | 一种光网络终端设备的配置管理的方法 |
CN109739667A (zh) * | 2019-01-10 | 2019-05-10 | 广州华多网络科技有限公司 | 一种消息的消费方法、装置及设备 |
CN109933426A (zh) * | 2019-02-19 | 2019-06-25 | 北京三快在线科技有限公司 | 服务调用的处理方法、装置、电子设备及可读存储介质 |
CN110489086A (zh) * | 2019-07-25 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 流程执行控制方法、装置、计算机设备及存储介质 |
CN110991127A (zh) * | 2019-10-17 | 2020-04-10 | 广东高云半导体科技股份有限公司 | 任务执行方法、装置、计算机设备及存储介质 |
CN111459981A (zh) * | 2019-01-18 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 查询任务的处理方法、装置、服务器及系统 |
CN112099958A (zh) * | 2020-11-17 | 2020-12-18 | 深圳壹账通智能科技有限公司 | 分布式多任务管理方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713192A (zh) * | 2004-06-25 | 2005-12-28 | 国际商业机器公司 | 处理逻辑建模与执行方法和设备 |
CN101470626A (zh) * | 2007-12-27 | 2009-07-01 | 新奥特(北京)视频技术有限公司 | 一种任务排序方法 |
CN102880500A (zh) * | 2011-07-13 | 2013-01-16 | 阿里巴巴集团控股有限公司 | 一种任务树的优化方法和装置 |
CN103336723A (zh) * | 2013-07-21 | 2013-10-02 | 哈尔滨理工大学 | 基于关键路径的适应处理器内核紧缺调度方法 |
CN104461502A (zh) * | 2014-11-03 | 2015-03-25 | 广州汇讯营销咨询有限公司 | 基于Hadoop的任务管理方法和系统 |
US20150143381A1 (en) * | 2013-11-20 | 2015-05-21 | International Business Machines Corporation | Computing session workload scheduling and management of parent-child tasks |
-
2015
- 2015-10-09 CN CN201510650371.9A patent/CN105159783A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713192A (zh) * | 2004-06-25 | 2005-12-28 | 国际商业机器公司 | 处理逻辑建模与执行方法和设备 |
CN101470626A (zh) * | 2007-12-27 | 2009-07-01 | 新奥特(北京)视频技术有限公司 | 一种任务排序方法 |
CN102880500A (zh) * | 2011-07-13 | 2013-01-16 | 阿里巴巴集团控股有限公司 | 一种任务树的优化方法和装置 |
CN103336723A (zh) * | 2013-07-21 | 2013-10-02 | 哈尔滨理工大学 | 基于关键路径的适应处理器内核紧缺调度方法 |
US20150143381A1 (en) * | 2013-11-20 | 2015-05-21 | International Business Machines Corporation | Computing session workload scheduling and management of parent-child tasks |
CN104461502A (zh) * | 2014-11-03 | 2015-03-25 | 广州汇讯营销咨询有限公司 | 基于Hadoop的任务管理方法和系统 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239468A (zh) * | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 任务节点管理方法及装置 |
CN107239468B (zh) * | 2016-03-29 | 2020-11-10 | 创新先进技术有限公司 | 任务节点管理方法及装置 |
CN108108235A (zh) * | 2017-12-07 | 2018-06-01 | 北京荣之联科技股份有限公司 | 任务处理方法及装置 |
CN108108235B (zh) * | 2017-12-07 | 2021-10-29 | 哈勃智远(北京)科技有限公司 | 任务处理方法及装置 |
CN108415740A (zh) * | 2018-03-09 | 2018-08-17 | 成都优易数据有限公司 | 一种应用于数据分析任务的工作流调度方法 |
CN108415740B (zh) * | 2018-03-09 | 2021-05-18 | 成都优易数据有限公司 | 一种应用于数据分析任务的工作流调度方法 |
CN108572865A (zh) * | 2018-04-04 | 2018-09-25 | 国家计算机网络与信息安全管理中心 | 一种任务队列处理方法和装置 |
CN108829880A (zh) * | 2018-06-27 | 2018-11-16 | 烽火通信科技股份有限公司 | 一种光网络终端设备的配置管理的方法 |
CN108829880B (zh) * | 2018-06-27 | 2020-12-01 | 烽火通信科技股份有限公司 | 一种光网络终端设备的配置管理的方法 |
CN109739667A (zh) * | 2019-01-10 | 2019-05-10 | 广州华多网络科技有限公司 | 一种消息的消费方法、装置及设备 |
CN111459981A (zh) * | 2019-01-18 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 查询任务的处理方法、装置、服务器及系统 |
CN111459981B (zh) * | 2019-01-18 | 2023-06-09 | 阿里巴巴集团控股有限公司 | 查询任务的处理方法、装置、服务器及系统 |
CN109933426A (zh) * | 2019-02-19 | 2019-06-25 | 北京三快在线科技有限公司 | 服务调用的处理方法、装置、电子设备及可读存储介质 |
CN109933426B (zh) * | 2019-02-19 | 2021-06-25 | 北京三快在线科技有限公司 | 服务调用的处理方法、装置、电子设备及可读存储介质 |
CN110489086A (zh) * | 2019-07-25 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 流程执行控制方法、装置、计算机设备及存储介质 |
CN110489086B (zh) * | 2019-07-25 | 2021-01-19 | 广东高云半导体科技股份有限公司 | 流程执行控制方法、装置、计算机设备及存储介质 |
CN110991127A (zh) * | 2019-10-17 | 2020-04-10 | 广东高云半导体科技股份有限公司 | 任务执行方法、装置、计算机设备及存储介质 |
CN112099958A (zh) * | 2020-11-17 | 2020-12-18 | 深圳壹账通智能科技有限公司 | 分布式多任务管理方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159783A (zh) | 一种系统任务分配方法 | |
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
CN104898573A (zh) | 一种基于云计算的数控系统数据采集及处理方法 | |
CN108985937A (zh) | 一种基于区块链技术的计算资源共享方法及区块链系统 | |
CN106874189B (zh) | 一种电网实时数据库系统的自动化测试系统的实现方法 | |
CN104331767A (zh) | 用于离散制造企业生产过程控制的多系统协同系统及方法 | |
CN104866378A (zh) | 一种协调执行任务的系统及方法 | |
US11210277B2 (en) | Distributing and processing streams over one or more networks for on-the-fly schema evolution | |
CN110134505A (zh) | 一种集群系统的分布式计算方法、系统及介质 | |
CN105786611A (zh) | 一种分布式集群的任务调度方法及装置 | |
CN105956481A (zh) | 一种数据处理方法及其装置 | |
CN107193543B (zh) | 一种批量操作执行方法及装置 | |
CN102946410A (zh) | 网络同步方法和装置 | |
CN106227397A (zh) | 基于应用虚拟化技术的计算集群作业管理系统及方法 | |
CN110059829A (zh) | 一种异步参数服务器高效并行架构与方法 | |
CN114202027A (zh) | 执行配置信息的生成方法、模型训练方法和装置 | |
CN106940671A (zh) | 一种集群中任务线程运行的监控方法、装置及系统 | |
CN104360842A (zh) | 一种基于jbpm的服务动态流程编排方法 | |
CN104298761A (zh) | 一种异构软件系统间主数据匹配的实现方法 | |
CN107547608A (zh) | 分布式任务处理方法和装置 | |
CN105187487A (zh) | 一种面向云存储的复制状态机模块化框架设计方法 | |
CN104598250B (zh) | 一种系统管理架构及其实现管理的方法 | |
CN109189575A (zh) | 一种多OpenStack集群的统一管理方法及装置 | |
CN113342826A (zh) | 一种对不同数据采集引擎的数据操作进行统一管理的方法、存储介质及系统 | |
CN106294445A (zh) | 基于跨机房Hadoop集群的数据存储的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151216 |
|
RJ01 | Rejection of invention patent application after publication |