掌桥专利:专业的专利平台
掌桥专利
首页

任务分配方法及装置

文献发布时间:2023-06-19 11:22:42


任务分配方法及装置

技术领域

本申请属于网络技术领域,尤其涉及任务分配方法及装置。

背景技术

如今,网络技术已经渗透到人类社会的方方面面,对用户的生活以及工作都产生了非常重要的作用。

其中,网络技术中的分布式系统,通常指的是一种通过网络进行通信的、由多个节点组成的系统。分布式系统存在很多的优点,例如,分布式系统能够实现不同节点之间的远距离通信。然而,目前的分布式系统仍存在不足之处,例如,由于分布式系统的控制机制一般为:对系统中的节点进行分散控制,因此,容易导致分布式系统的任务不能被合理地分配,进而导致分布式系统整体的任务处理效率低下。

发明内容

本申请实施例提供了任务分配方法及装置,可以解决以下问题:分布式系统所要处理的任务不能被合理地分配。

第一方面,本申请实施例提供了一种任务分配方法,所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,所述任务分配方法包括:

若检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数,所述任务分配触发信息为:用于触发所述主节点分配任务的信息,所述目标节点包括:主节点和具有用于运行任务的模块且处于上线状态的从节点,所述待运行的任务为:已分配到目标节点但未运行的任务;

获取待分配的任务的信息,所述待分配的任务的信息包括待分配的任务的个数;

若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

第二方面,本申请实施例提供了一种任务分配装置,所述任务分配装置应用于分布式系统的主节点,所述主节点的个数为1,所述任务分配装置包括:

个数获取单元,用于若检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数,所述任务分配触发信息为:用于触发所述主节点分配任务的信息,所述目标节点包括:主节点和具有用于运行任务的模块且处于上线状态的从节点,所述待运行的任务为:已分配到目标节点但未运行的任务;

信息获取单元,用于获取待分配的任务的信息,所述待分配的任务的信息包括待分配的任务的个数;

第一分配单元,用于若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

第三方面,本申请实施例提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如所述任务分配方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如所述任务分配方法的步骤。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述任务分配方法的步骤。

可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

本申请实施例与现有技术相比存在的有益效果是:所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,若主节点检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数,获取待分配的任务的信息,再根据所述目标节点的待运行的任务的个数与所述待分配的任务的个数,将所述待分配的任务分配至所述待分配的任务对应的目标节点,即所述分布式系统中的主节点能集中调控资源进行任务分配,分配任务后,具有用于运行任务的模块且处于上线状态的从节点的待运行的任务的个数相等,避免了以下情况:一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别少,而另外一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别多,导致有些任务需要等待较长时间后才能运行。即本申请所述任务分配方法能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例提供的第一种任务分配方法的流程示意图;

图2是本申请一实施例提供的第二种任务分配方法的流程示意图;

图3是本申请一实施例提供的第三种任务分配方法的流程示意图;

图4是本申请实施例提供的一种任务分配装置的结构示意图;

图5是本申请实施例提供的终端设备的结构示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

图1示出了本申请实施例提供的一种任务分配方法的流程示意图,所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,详述如下:

步骤S101,若检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数,所述任务分配触发信息为:用于触发所述主节点分配任务的信息,所述目标节点包括:主节点和具有用于运行任务的模块且处于上线状态的从节点,所述待运行的任务为:已分配到目标节点但未运行的任务。

具体地,若检测到任务分配触发信息,则根据所述分布式系统中具有用于运行任务的模块的从节点的状态,确定所述分布式系统中具有用于运行任务的模块且处于上线状态的从节点,结合确定的从节点以及主节点获取目标节点的待运行的任务的个数。

作为示例而非限定的是,所述任务分配触发信息用于触发主节点进行任务分配,所述任务分配触发信息可具体为:系统启动完成信息或定时触发信息,所述系统启动完成信息可为:表示所述分布式系统中的所有节点(主节点和从节点)都已完成启动的信息,所述定时触发信息可为:用于在指定时间触发主节点进行任务分配的信息。

以所述任务分配触发信息为系统启动完成信息为例,假设所述分布式系统中具有用于运行任务的模块的从节点包括:从节点1和从节点2,若检测到系统启动完成信息,从节点1和从节点2都处于上线状态,则确定目标节点,目标节点包括:主节点、从节点1以及从节点2,对应地,目标节点的待运行的任务的个数包括:主节点的待运行的任务的个数、节点1的待运行的任务的个数以及节点2的待运行的任务的个数。

在一些实施例中,在所述步骤S101之前,包括:获取分布式锁。

在分布式系统中每个节点启动之后,每个节点都会去申请分布式锁,但只有一个节点能申请到(获取到)分布式锁。只有获取到所述分布式锁的节点,才能作为主节点,也即才有资格执行所述任务分配方法,将分布式系统中的其它具有用于运行任务的模块且处于上线状态的节点作为从节点。

所述分布式锁可为基于指定软件的键值(Key/Value,KV)锁,所述指定软件可为:Consul软件。

Consul软件可用于:对分布式系统中具有运行模块的节点进行服务注册,以及存储指定文件,所述指定文件中的信息包括:已进行节点注册的节点的信息,和已分配至所述已进行节点注册的节点的任务的信息。所述指定文件的数据结构可为两层的树状结构,第一层包括:所述分布式系统中已进行节点注册的节点的信息,第二层包括:已分配至所述已进行节点注册的节点的任务的信息,所述节点的信息可包括但不限于以下任一种:节点的标识、节点的状态。所述任务的信息可包括:任务的标识、任务的状态、任务的个数,所述节点的状态可包括但不限于以下任一种:节点下线状态、节点上线状态、节点故障状态、节点正常工作状态。所述任务的状态可包括以下任一种:待运行的状态、待分配的状态、已运行的状态。

由于所述指定文件中的信息可包括:所述分布式系统中目标节点的待运行的任务的个数,因此,所述获取所述分布式系统中目标节点的待运行的任务的个数,可为:根据所述指定文件获取所述分布式系统中目标节点的待运行的任务的个数。

步骤S102,获取待分配的任务的信息,所述待分配的任务的信息包括待分配的任务的个数。

其中,所述待分配的任务的信息还可包括:待分配的任务的标识和待分配的任务的内容,所述待分配的任务的标识可为所述待分配的任务的名称。

作为示例而非限定的是,假设待分配的任务为任务1和任务2,所述步骤S102可为:获取待分配的任务的个数,待分配的任务的个数为2。

步骤S103,若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

作为示例而非限定的是,假设所述目标节点包括:主节点、从节点1以及从节点2,主节点的待运行的任务的个数为1,从节点1的待运行的任务的个数为1,从节点2的待运行的任务的个数为2,待分配的任务的个数为2,分别为任务A和任务B,即所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和为6,所述目标节点的个数为3,将待运行的任务的个数最少的目标节点确定为待分配的任务的节点,即可将主节点和从节点1确定为待分配的任务对应的节点,将任务A分配至主节点,将任务B分配至从节点1,分配后,各个目标节点的待运行的任务的个数相等。

可选地,在所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之前,预估各个待分配的任务对应的运算量,将各个待分配的任务对应的运算量和所述目标节点的运行性能评估等级进行匹配,根据匹配结果确定各个待分配的任务对应的目标节点。其中,所述运行性能评估等级用于评价目标节点的运行性能。运行性能评估等级越高,表示其对应的目标节点的运行性能越好,所匹配到的运算量越大。将运算量较大的任务分配给运行性能评估等级较高的节点,能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

作为示例而非限定的是,所述运行性能可为运算速度。

可选地,所述任务分配方法还包括:若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,不等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第二分配结果,所述第二分配结果为:分配后,待运行的任务的个数最多的目标节点的待运行的任务的个数,比待运行的任务的个数最少的目标节点的待运行的任务的个数大一。

作为示例而非限定的是,假设所述目标节点包括:主节点、从节点1以及从节点2,主节点的待运行的任务的个数为1,从节点1的待运行的任务的个数为1,从节点2的待运行的任务的个数为2,待分配的任务的个数为1,待分配的任务为任务A,即所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和为5,所述目标节点的个数为3,所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,不等于所述目标节点的个数的正整数倍,可将任务A分配至从节点1,分配后,待运行的任务的个数最多的目标节点的待运行的任务的个数为2,比待运行的任务的个数最少的目标节点的待运行的任务的个数大一。

在一些实施例中,为了指示目标节点运行任务,因此,在所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之后,包括:发送运行指令至对应的目标节点。

在一些实施例中,根据所述第一分配结果或者所述第二结果,更新所述指定文件,使得所述指定文件中的信息具备较高的准确性。

可选地,在所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之后,包括:若查询到两个或者两个以上的目标节点运行同一个任务,则确定待停止运行的节点,所述待停止运行的节点的数量比运行所述同一个任务的节点的数量小一;发送停止运行指令至所述待停止运行的节点,即若查询到有多个目标节点运行同一个任务,则只保留一个目标节点继续运行该任务,其它的目标节点停止运行该任务。

作为示例而非限定的是,假设目标节点包括:主节点和从节点1,若查询到两个或者两个以上的目标节点运行同一个任务,则确定待停止运行的节点为从节点1,发送停止运行指令至从节点1。

在一些实施例中,所述确定待停止运行的节点包括:根据各个目标节点运行所述同一个任务的时长,确定待停止运行的节点。

具体地,从各个目标节点运行所述同一个任务的时长中,确定出最大时长,将小于最大时长的时长对应的目标节点确定为待停止运行的节点。

一般地,若节点运行任务的时长越长,则已完成的运算量越大,即任务的完成度越高。由于能将小于最大时长的时长对应的目标节点确定为待停止运行的节点,而最大时长的目标节点继续运行任务,因此,有效地保证了分布式系统整体的任务处理效率。

本申请实施例中,所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,即所述分布式系统中的主节点能集中调控资源,进行任务分配,分配后,具有用于运行任务的模块且处于上线状态的所有节点的待运行的任务的个数相等,避免了以下情况:一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别少,而另外一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别多,导致有些任务需要等待较长时间后才能运行。即本申请所述任务分配方法能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

与上述实施例一对应,图2示出了本申请实施例提供的一种任务分配方法的示意图,所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,本实施例的步骤S203与实施例一的步骤S103相同,此处不再赘述:

步骤S201,若检测到事件变化信息,则获取所述分布式系统中目标节点的待运行的任务的个数。

其中,所述事件变化信息对应的事件包括至少一个任务。所述事件变化信息为表示事件的状态或者事件的数量发生变化的信息。所述事件变化信息包括但不限于以下任一种:事件发布信息、事件下线信息。所述事件发布信息用于表示有事件被发布,所述事件下线信息用于表示有事件下线。

步骤S202,根据所述事件变化信息对应的事件中的任务,获取待分配的任务的信息。

具体地,根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息。

在一些实施例中,为了能够对新事件中的任务进行分配,因此,所述事件变化信息为事件发布信息,所述事件发布信息对应的事件为新事件,对应地,所述待分配的任务为:所述新事件中的任务。

若所述事件发布信息对应的当次被发布的事件是第一次被发布的事件,则所述事件发布信息对应的事件为新事件。

作为示例而非限定的是,假设所述事件发布信息具体表示发布事件A,即所述事件发布信息对应的当次被发布的事件为事件A,若事件A是第一次被发布的事件,即在此次发布前,从未被发布过,则事件A为新事件。

由于新事件中的任务为待分配的任务,因此,新事件中的任务的个数为待分配的任务的个数。

在一些实施例中,所述事件发布信息对应的事件为旧事件,对应地,在所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息之前,包括:发送所述旧事件中的任务对应的启动运行指令至原先运行所述旧事件中的任务的节点,以指示原先运行所述旧事件中的任务的节点重新运行所述旧事件中的任务,对应地,所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息包括:根据所述旧事件中的任务的个数,获取原先运行所述旧事件中的任务的节点上待重新分配的任务的个数。

其中,若所述事件发布信息对应的当次被发布的事件是第N次被发布的事件,N表示大于或者等于2的正整数,则所述事件发布信息对应的事件为旧事件。

节点在运行旧事件中的任务的过程中,可能需要获取某些数据才能顺利地完成任务的运行。由于原先运行旧事件中的任务的节点已经运行过旧事件中的任务,其可能还存储着原先运行旧事件中的任务所需的数据,因此,让原先运行旧事件中的任务的节点重新运行旧事件中的任务,能够提高旧事件中的任务的处理效率。然而,由于原先运行旧事件中的任务的节点需要重新运行旧事件中的任务,因此,其需要处理的任务量增加,由于能够重新分配旧事件中的任务的节点上的除旧事件中的任务之外的待运行的任务,从而,能够提高分布式系统的任务分配的合理性。

具体地,所述根据所述旧事件中的任务的个数,获取原先运行所述旧事件中的任务的节点上待重新分配的任务的个数包括:将所述旧事件中的任务的个数作为原先运行所述旧事件中的任务的节点上待重新分配的任务的个数。

作为示例而非限定的是,假设旧事件中的任务的个数是2个,可将原先运行所述旧事件中的任务的节点上待重新分配的任务的个数确定为2个。

在一些实施例中,所述事件变化信息为事件下线信息,对应地,在所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息之前,包括:发送所述事件下线信息中的任务对应的停止运行指令至运行所述事件下线信息中的任务的节点,以指示运行所述事件下线信息中的任务的节点停止运行所述事件下线信息中的任务,对应地,所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息,包括:根据所述事件下线信息中的任务的节点的个数,获取待分配的任务的信息,所述待分配的任务的信息为:待重新分配到所述运行所述事件下线信息中的任务的节点的任务的个数。

由于事件下线信息中的任务的节点不再运行事件下线信息中的任务,因此,将其他节点上的待运行的任务,转移到运行所述事件下线信息中的任务的节点,可有效地保持各个节点之间待运行的任务的数量的平衡。

作为示例而非限定的是,根据所述事件下线信息中的任务的节点的个数,获取待分配的任务的信息包括:将所述事件下线信息中的任务的节点的个数,作为待重新分配到所述运行所述事件下线信息中的任务的节点的任务的个数,即所述事件下线信息中的任务的节点的个数与待重新分配到所述运行所述事件下线信息中的任务的节点的任务的个数相等。

步骤S203,若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

本申请实施例中,由于当检测到事件变化信息时,能获取所述分布式系统中目标节点的待运行的任务的个数,然后根据所述事件变化信息对应的事件中的任务分配待分配的任务,使得各个目标节点的待运行的任务的个数相等,即本申请实施例能及时地根据事件变化信息动态调整任务的分配,使各个目标节点上的待运行的任务的个数处于相对平衡状态,因此,能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

与上述实施例一对应,图3示出了本申请实施例提供的一种任务分配方法的示意图,所述任务分配方法应用于分布式系统的主节点,所述主节点的个数为1,本实施例的步骤S303与实施例一的步骤S103相同,此处不再赘述:

步骤S301,若检测到节点变化信息,则获取所述分布式系统中目标节点的待运行的任务的个数。

其中,所述节点变化信息为表示节点的数量或者节点的状态发生变化的信息。所述节点变化信息可包括但不限于以下任一种:节点新增信息、节点故障信息、节点下线信息。所述节点新增信息用于表示所述分布式系统的节点的数量增多,节点故障信息用于表示所述分布式系统中有节点处于节点故障状态,所述节点下线信息用于表示有节点处于节点下线状态。

步骤S302,根据所述节点变化信息对应的节点,获取待分配的任务的信息。

在一些实施例中,所述节点变化信息为节点新增信息,对应地,所述步骤S302,包括:根据所述节点变化信息对应的节点的个数和所述分布式系统中目标节点的待运行的任务的个数,获取待分配的任务的信息。

具体地,根据所述节点新增信息对应的节点的个数和所述分布式系统中目标节点的待运行的任务的个数,获取待分配的任务的信息,所述待分配的任务的信息包括:待重新分配到所述节点新增信息对应的节点的待运行的任务的个数。

由于能够获取待重新分配到新增的节点的待运行的任务的个数,结合后续步骤S303,即能将新增节点前的目标节点的待运行的任务转移到新增的节点上,因此,能够有效地保证各个节点之间待运行的任务的数量处于相对平衡的状态。

作为示例而非限定的是,假设节点新增信息具体表示:分布式系统中新增了一个节点,为节点A,根据所述节点新增信息对应的节点的个数和所述分布式系统中目标节点的待运行的任务的个数,获取待重新分配到节点A的任务的个数,待重新分配到节点A的任务的个数应能够保证:在分配后,各个目标节点(包括节点A)的待运行的任务的个数相等。

在一些实施例中,所述节点变化信息为节点故障信息或者节点下线信息,对应地,所述待分配的任务为:所述节点故障信息对应的节点的待运行的任务,或者,所述节点下线信息对应的节点的待运行的任务。

作为示例而非限定的是,假设所述节点变化信息为节点故障信息,节点故障信息具体为:表示节点A处于节点故障状态的信息,对应地,所述待分配的任务为:节点A的待运行的任务。

由于能将处于节点下线状态或者节点故障状态的任务重新分配,因此,能够避免耽误到任务的运行,从而有效地保证了分布式系统的任务处理效率。

在一些实施例中,若查询到节点的用于运行任务的模块在预设时间长度内不能连接到Consul,则可证明该节点处于节点故障状态,所述任务分配方法还包括:在所述获取待分配的任务的信息之前,发送停止运行指令至所述该节点,以指示处于节点故障状态的节点停止运行任务。

步骤S303,若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

本申请实施例中,由于当检测到节点变化信息时,能获取所述分布式系统中目标节点的待运行的任务的个数,然后根据所述节点变化信息对应的节点分配待分配的任务,使得各个目标节点的待运行的任务的个数相等,即本申请实施例能及时地根据节点变化信息动态调整任务的分配,使各个目标节点上的待运行的任务的个数处于相对平衡状态,因此,能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

与上述实施例一对应,图4示出了本申请实施例提供的一种数据传输装置的结构示意图,所述任务分配装置应用于分布式系统的主节点,所述主节点的个数为1,所述任务分配装置包括:个数获取单元401、信息获取单元402以及第一分配单元403,其中:

个数获取单元401,用于若检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数,所述任务分配触发信息为:用于触发所述主节点分配任务的信息,所述目标节点包括:主节点和具有用于运行任务的模块且处于上线状态的从节点,所述待运行的任务为:已分配到目标节点但未运行的任务。

可选地,所述任务分配装置还包括:分布式锁获取单元。

所述分布式锁获取单元,用于在所述个数获取单元401执行所述若检测到任务分配触发信息,则获取所述分布式系统中目标节点的待运行的任务的个数之前,获取分布式锁。

在分布式系统中每个节点启动之后,每个节点都会去申请分布式锁,但只有一个节点能申请到(获取到)分布式锁。只有获取到所述分布式锁的节点,才能作为主节点,将分布式系统中的其它具有用于运行任务的模块且处于上线状态的节点作为从节点。

信息获取单元402,用于获取待分配的任务的信息,所述待分配的任务的信息包括待分配的任务的个数。

可选地,信息获取单元402具体用于:根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息。

可选地,所述事件变化信息为事件发布信息,所述事件发布信息对应的事件为旧事件,对应地,所述任务分配装置还包括:第一指令发送单元。

第一指令发送单元用于:在所述信息获取单元402执行所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息之前,发送所述旧事件中的任务对应的启动运行指令至原先运行所述旧事件中的任务的节点,以指示原先运行所述旧事件中的任务的节点重新运行所述旧事件中的任务,对应地,所述信息获取单元402在执行所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息时,具体用于:根据所述旧事件中的任务的个数,获取原先运行所述旧事件中的任务的节点上待重新分配的任务的个数。

可选地,所述事件变化信息为事件下线信息,对应地,所述任务分配装置还包括:第二指令发送单元。

第二指令发送单元用于:在所述信息获取单元402执行所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息之前,发送所述事件下线信息中的任务对应的停止运行指令至运行所述事件下线信息中的任务的节点,以指示运行所述事件下线信息中的任务的节点停止运行所述事件下线信息中的任务,对应地,所述信息获取单元402在执行所述根据所述事件变化信息对应的事件中的任务的个数,获取待分配的任务的信息时,具体用于:根据所述事件下线信息中的任务的节点的个数,获取待分配的任务的信息,所述待分配的任务的信息为:待重新分配到所述运行所述事件下线信息中的任务的节点的任务的个数。

可选地,所述事件变化信息为事件下线信息,对应地,所述任务分配装置还包括:第二指令发送单元。

可选地,所述任务分配装置还包括:查询单元和第四指令发送单元。

查询单元用于:若查询到节点的用于运行任务的模块在预设时间长度内不能连接到Consul,则可证明该节点处于节点故障状态,第四指令发送单元用于:在所述信息获取单元402获取待分配的任务的信息之前,发送停止运行指令至所述该节点,以指示处于节点故障状态的节点停止运行任务。

第一分配单元403,用于若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第一分配结果,所述第一分配结果为:分配后,各个目标节点的待运行的任务的个数相等。

可选地,所述任务分配装置还包括:第二分配单元。

第二分配单元,用于若所述目标节点的待运行的任务的个数与所述待分配的任务的个数之和,不等于所述目标节点的个数的正整数倍,则将所述待分配的任务分配至所述待分配的任务对应的目标节点,以满足第二分配结果,所述第二分配结果为:分配后,待运行的任务的个数最多的目标节点的待运行的任务的个数,比待运行的任务的个数最少的目标节点的待运行的任务的个数大一。

可选地,所述任务分配装置还包括:第五指令发送单元。

第五指令发送单元,用于在第一分配单元403执行所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之后,若查询到两个或者两个以上的目标节点运行同一个任务,则确定待停止运行的节点,所述待停止运行的节点的数量比运行所述同一个任务的节点的数量小一;发送停止运行指令至所述待停止运行的节点。

可选地,所述任务分配装置还包括:节点确定单元。

节点确定单元,用于在所述第一分配单元403执行所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之前,预估各个待分配的任务对应的运算量,将各个待分配的任务对应的运算量和所述目标节点的运行性能评估等级进行匹配,根据匹配结果确定各个待分配的任务对应的目标节点。其中,所述运行性能评估等级用于评价目标节点的运行性能。运行性能评估等级越高,表示其对应的目标节点的运行性能越好,所匹配到的运算量越大。将运算量较大的任务分配给运行性能评估等级较高的节点,能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

可选地,所述任务分配装置还包括:第六指令发送单元。

第六指令发送单元,用于在所述第一分配单元403执行所述将所述待分配的任务分配至所述待分配的任务对应的目标节点之后,发送运行指令至对应的目标节点。

可选地,所述任务分配装置还包括:文件更新单元。

文件更新单元,用于根据所述第一分配结果或者所述第二结果,更新指定文件,使得所述指定文件中的信息具备较高的准确性。

本申请实施例中,所述任务分配装置应用于分布式系统的主节点,所述主节点的个数为1,即所述分布式系统中的主节点能集中调控资源,进行任务分配,分配后,具有用于运行任务的模块且处于上线状态的所有节点的待运行的任务的个数相等,避免了以下情况:一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别少,而另外一些具有用于运行任务的模块且处于上线状态的节点的待运行的任务特别多,导致有些任务需要等待较长时间后才能运行。即本申请所述任务分配装置能够提高分布式系统的任务分配的合理性,进而提高分布式系统整体的任务处理效率。

图5为本申请一实施例提供的任务分配终端设备的结构示意图。如图5所示,该实施例的任务分配终端设备5包括:至少一个处理器50(图5中仅示出一个)处理器、存储器51以及存储在所述存储器51中并可在所述至少一个处理器50上运行的计算机程序52,所述处理器50执行所述计算机程序52时实现上述任意各个任务分配方法实施例中的步骤。

所述任务分配终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该任务分配终端设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是任务分配终端设备5的举例,并不构成对任务分配终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。

所称处理器50可以是中央处理单元(Central Processing Unit,CPU),该处理器50还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器51在一些实施例中可以是所述任务分配终端设备5的内部存储单元,例如任务分配终端设备5的硬盘或内存。所述存储器51在另一些实施例中也可以是所述任务分配终端设备5的外部存储设备,例如所述任务分配终端设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,所述存储器51还可以既包括所述任务分配终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。

需要说明的是,上述单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的网络设备和方法,可以通过其它的方式实现。例如,以上所描述的网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 一种任务分配方法及虚拟货币挖矿任务分配方法
  • 任务分配方法、任务分配装置、介质及电子设备
技术分类

06120112901508