一种服务器节点的任务分配方法及装置与流程

文档序号:24742235发布日期:2021-04-20 22:01阅读:215来源:国知局
一种服务器节点的任务分配方法及装置与流程

1.本发明涉及计算机技术领域,尤其涉及一种服务器节点的任务分配方法及装置。


背景技术:

2.目前大型的服务器系统当中,多采用分布式服务器以提供更强的性能。分布式服务器由多个服务器节点组成,每个服务器节点都可以是一台完整的计算机设备。所以相对于传统的单体服务器,分布式服务器的性能可以突破硬件性能的制约。在分布式服务器中,对于各个服务器节点的任务分配方式,是提升整体工作效率的关键。
3.常见的任务分配方法存在多种。例如,权重法即是根据每个服务器节点的性能强弱来设定其权重;服务器节点分配任务的数量则与权重正相关。这种方式在任务分配时充分的考虑了各个服务器节点的性能差异,但缺陷是权重设定和任务分配均为静态配置,无法在必要时进行动态调整。最小连接数法是根据服务器节点连接数的大小进行动态任务分配,虽然便于对任务分配进行调整,但没有考虑到服务器节点的性能差异。
4.可见,现有技术中的任务分配方式,无法兼顾服务器节点的性能差异,与任务的动态调节两方面。


技术实现要素:

5.本发明提供一种服务器节点的任务分配方法及装置,以至少解决现有技术中存在的以上技术问题。
6.第一方面,本发明提供一种服务器节点的任务分配方法,包括:
7.根据计算系统中各服务器节点的任务执行时长,确定各所述服务器节点的性能指数;
8.根据各所述服务器节点的性能指数,确定所述计算系统的性能序列;
9.确定目标任务对应的分配参数;根据所述分配参数和所述性能序列,确定所述目标任务对应的所述服务器节点。
10.优选的,确定各所述服务器节点的性能指数之前,还包括:
11.按照预设周期,确定所述服务器节点中的多个已执行任务的耗时数据;
12.根据所述多个已执行任务的耗时数据,确定所述任务执行时长。
13.优选的,所述确定各所述服务器节点的性能指数包括:
14.根据各所述服务器节点的任务执行时长,和预设的标准时长,确定所述服务器节点的性能指数。
15.优选的,所述根据各所述服务器节点的性能指数,确定所述计算系统的性能序列包括:
16.将各所述服务器节点的性能指数按顺序排列,以确定所述性能序列。
17.优选的,所述确定目标任务对应的分配参数包括:
18.将所述性能序列中各所述服务器节点的性能指数之和,确定为所述计算系统的性
能总值;
19.确定不大于所述性能总值的随机数,以作为所述目标任务对应的分配参数。
20.优选的,所述根据所述分配参数和所述性能序列,确定所述目标任务对应的所述服务器节点包括:
21.计算所述性能序列中,前k个所述服务器节点的性能指数之和,以及前k

1个所述服务器节点的性能指数之和;以使所述目标任务的分配参数小于所述前k个所述服务器节点的性能指数之和,且不小于所述前k

1个所述服务器节点的性能指数之和;
22.将所述性能序列中的第k个所述服务器节点,确定为所述目标任务对应的所述服务器节点;其中,k为正整数。
23.优选的,当所述计算系统中有服务器节点下线,还包括:
24.将所述下线的服务器节点上运行的未完成任务,确定为所述目标任务。
25.优选的,当所述计算系统中有服务器节点上线,还包括:
26.确定所述上线的服务器节点的性能指数,并根据所述上线的服务器节点的性能指数,更新所述计算系统的性能序列。
27.第二方面,本发明提供一种服务器节点的任务分配装置,包括:
28.性能指数确定模块,用于根据计算系统中各服务器节点的任务执行时长,确定各所述服务器节点的性能指数;
29.性能序列确定模块,用于根据各所述服务器节点的性能指数,确定所述计算系统的性能序列;
30.任务分配模块,用于确定目标任务对应的分配参数;根据所述分配参数和所述性能序列,确定所述目标任务对应的所述服务器节点。
31.第三方面,本发明提供一种电子设备,包括:
32.处理器;
33.用于存储所述处理器可执行指令的存储器;
34.所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明所述的服务器节点的任务分配方法。
35.与现有技术相比,本发明提供的一种服务器节点的任务分配方法及装置,基于服务器节点性能确定性能指数,并根据性能指数确定性能序列,利用性能序列实现目标任务的分配,可在任务分配时考虑到服务器节点的性能差异,使得服务器节点被分配的任务数量与其性能正相关,由此达到整个计算系统各个服务器节点的负载平衡,提高整体效率;同时可在服务器节点发生变化时,仅针对变化的部分进行低成本的动态调整,可满足流计算等场景中的使用需求。
附图说明
36.图1为本发明一实施例提供的一种服务器节点的任务分配方法的流程示意图;
37.图2为本发明一实施例提供的另一种服务器节点的任务分配方法的流程示意图;
38.图3为本发明一实施例提供的一种服务器节点的任务分配装置的结构示意图。
具体实施方式
39.为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.在分布式服务器中,任务分配方法存在多种。常见的包括权重法、最小连接数法、一致性哈希算法等。
41.权重法是根据每个服务器节点的性能强弱来设定其权重;服务器节点分配任务的数量则与权重正相关。这种方式在任务分配时充分的考虑了各个服务器节点的性能差异。但该方法中所谓的“权重”本质上是“百分比”,所有服务器节点的权重之和恒等于100%。若分布式服务器中的服务器节点增加或减少,则全部服务器节点的权重均发生变化,必须重新计算。因此在权重法中,权重设定和任务分配均为静态配置,无法在在服务器节点发生变化时,仅针对变化的部分进行动态调整。
42.最小连接数法是根据服务器节点连接数的大小进行动态任务分配。该方法与权重法恰恰相反,其便于对任务分配进行动态调整,能够始应服务器节点变化。但任务分配过程中仅仅以连接数作为依据,没有考虑到服务器节点的性能差异,即无法做到服务器节点之间的负载平衡。
43.一致性哈希算法在一定程度上,可以兼顾服务器节点的性能差异,与任务的动态调节两方面。但是在该方法当中,若一个服务器节点上线,则必须第一时间进行任务分配,否则该服务器节点无法纳入到哈希算法当中。所以该方法更适用于数据存储、无状态短时任务等对数据分配不敏感的场景。在如流计算等场景当中,一致性哈希算法会导致大量的任务切换,对进行中的任务产生明显的影响。
44.通过上述可见,目前的任务分配方法各有不同缺陷,难以在基于服务器节点的性能进行任务分配的同时,实现低成本的任务动态调节,满足流计算等场景中的使用需求。
45.因此,本发明实施例将提供一种服务器节点的任务分配方法,以至少解决现有技术中存在的以上技术问题。如图1所示,本实施例中方法包括以下步骤:
46.步骤101、根据计算系统中各服务器节点的任务执行时长,确定各服务器节点的性能指数。
47.计算系统可以是分布式服务器,或称之为集群服务器。该计算系统中包括多个服务器节点。本实施例中,可在某一服务器节点中运行特定程序,使该服务器节点作为驱动节点。该驱动节点可作为本实施例中方法的执行主体。
48.本实施例中,将通过计算各个服务器节点的任务执行时长,来评估其性能,确定相应的性能指数。确定任务执行时长的过程具体如下:按照预设周期,确定服务器节点中的多个已执行任务的耗时数据;根据多个已执行任务的耗时数据,确定任务执行时长。具体的,可以在一定的周期之内从服务器节点中抓取日志,对服务器节点已经执行完成的某些任务进行采样分析,即确定该已执行任务的耗时数据。该耗时数据就是已执行任务的实际执行时长。并取已执行任务的耗时数据的均值,以作为服务器节点的任务执行时长。在本实施例中可以认为,服务器节点的任务执行时长与服务器节点的性能是负相关的,即服务器节点的性能越强,执行任务便越快,相应的任务执行时长越短。因此,可以以任务执行时长,作为
评价服务器节点性能的依据。
49.该预设周期可以是时间周期,即在一定的时间范围内确定服务器节点的任务执行时长。也可以以已执行任务的采样数量作为周期,例如采样数量达到特定数值,即可计算一次任务执行时长。通过预设周期,本实施例中将定期的确定服务器节点的性能指数,使得性能指数能够反应服务器节点的真实性能。且该性能指数可作为基于服务器节点的性能进行任务分配的根据。
50.性能指数,代表对于服务器节点的性能进行量化而得到的一项数据指标。由于服务器节点的任务执行时长与服务器节点的性能存在明确的相关性,所以本实施例中利用任务执行时长确定性能指数。不同于现有技术的是,该性能指数本质上不再是“百分比”或者“比例值”,而是一个用以衡量服务器节点性能的绝对数值。该性能指数的数值仅仅取决于服务器性能本身,并且可按照上述的预设周期进行更新。通常性能指数的数值越大,意味着服务器节点的性能越强。也就是说,由于性能指数是绝对数值,所以在计算系统中服务器节点增加或减少时,其他服务器节点的性能指数也不会受到影响,无需重新计算。
51.本实施例中,对于性能指数的计算方式不做限定,任何可实现相同或类似效果的算法,均可结合在本实施例整体技术方案当中。例如,可以根据各服务器节点的任务执行时长,和预设的标准时长,确定服务器节点的性能指数。预设的标准时长,即理论上完成任务所需的时长,而任务执行时长代表了服务器节点实际完成任务的时长。将两者进行比对,可确定出服务器节点的性能指数。具体的,可基于logistic回归算法对服务器节点的任务执行时长和标准时长进行计算,确定性能指数,计算公式如下:
[0052][0053]
其中,n代表性能指数,x代表任务执行时长,c代表标准时长,e为自然常数。
[0054]
步骤102、根据各服务器节点的性能指数,确定计算系统的性能序列。
[0055]
在确定了各个服务器节点的性能指数之后,可以此建立一个集合,或者说以此按照顺序排列以确定计算系统的性能序列。性能序列中包括了各个性能指数,便反映了计算系统中各个服务器节点的实际性能分布。后续根据性能序列进行任务分配,即可在任务分配时考虑到服务器节点的性能差异,使得服务器节点被分配的任务数量与其性能正相关,由此达到整个计算系统各个服务器节点的负载平衡,提高整体效率。
[0056]
当计算系统中服务器节点增加或减少时,也只需在性能序列中增加或减少相应的项(即性能指数)。其他服务器节点对应的性能指数不受影响,因此已经分配到其他服务器节点的任务也无需变化。因此本实施例中方法能够在服务器节点发生变化时,仅针对变化的部分进行低成本的动态调整,可满足流计算等场景中的使用需求。
[0057]
步骤103、确定目标任务对应的分配参数;根据分配参数和性能序列,确定目标任务对应的服务器节点。
[0058]
目标任务即待分配到服务器节点上进行处理的任务。分配参数即是在分配过程中,为目标任务确定的一项标识。该根据分配参数,可确定目标任务命中到性能序列中具体的哪个性能指数上。进而可将目标任务分配到命中的性能指数对应的服务器节点上,即实现了任务分配。通常,性能指数数值越大,其命中的概率就越高。因此根据概率统计,计算系统中高性能的服务器节点将执行较多的任务,反之低性能的服务器节点将执行较少的任
务。由此达到整个计算系统各个服务器节点的负载平衡。本实施例中对于具体的分配算法不做限定,任何可实现相同或类似效果的算法,均可结合在本实施例整体技术方案当中。
[0059]
需要说明的是,在本实施例上述方法中,可以在服务器节点发生变化时,仅针对变化的部分进行低成本的动态调整。具体来说,包括服务器节点下线和服务器节点上线两种具体情况。具体如下:
[0060]
当计算系统中有服务器节点下线,将下线的服务器节点上运行的未完成任务,确定为目标任务。本实施例中的执行主体驱动节点,与各个服务器节点之间均存在常连接关系。当服务器节点受控下线时,会通过常连接告知驱动节点。或者当服务器节点由于宕机而被迫下线时常连接将断开,也将会被驱动节点所知悉。因此无论那种情况,驱动节点均可确定服务器节点下线。
[0061]
在服务器节点下线时,可在性能序列中删除该服务器节点对应的性能指数,即性能序列中减少一项,其他项则不受影响。并将该服务器节点上正在执行的未完成任务全部确定为目标任务,并按照步骤103中的方式向正常的服务器节点进行重新分配,并在分配后重新执行。由此可见,在服务器节点下线时,该方法可进行低成本的针对性调节,使得其他服务器节点以及其他任务不受影响。
[0062]
当计算系统中有服务器节点上线,确定上线的服务器节点的性能指数,并根据上线的服务器节点的性能指数,更新计算系统的性能序列。当新的服务器节点上线,即可立即向驱动节点上报并建立常连接,以使驱动节点知悉新上线的服务器节点。然后可根据步骤101~步骤102中方式,确定新上线的服务器节点的性能指数,并将该性能指数加入到性能序列中。即性能序列中增加一项,其他项则不受影响。其他已经分配的任务也无需发生变化。
[0063]
当新的目标任务出现,即可按照步骤103中方式进行分配。由于新节点中尚无任务分配,所以通常其性能较高,性能指数的数值较大。所以在性能序列中,其有更大的概率被优先分配到目标任务。并且本实施例不同于一致性哈希算法的特点在于,在新的服务器节点上线后,也无需立即为其分配任务。而是可以在目标任务出现时进行正常的分配,因此对于其他执行中的任务不产生影响。由此可见,在服务器节点上线时,该方法可进行低成本的针对性调节,使得其他服务器节点以及其他任务不受影响。
[0064]
通过以上技术方案可知,本实施例存在的有益效果是:基于服务器节点性能确定性能指数,并根据性能指数确定性能序列,利用性能序列实现目标任务的分配,可在任务分配时考虑到服务器节点的性能差异,使得服务器节点被分配的任务数量与其性能正相关,由此达到整个计算系统各个服务器节点的负载平衡,提高整体效率;同时可在服务器节点发生变化时,仅针对变化的部分进行低成本的动态调整,可满足流计算等场景中的使用需求。
[0065]
图1所示仅为本发明所述方法的基础实施例,在其基础上进行一定的优化和拓展,还能够得到所述方法的其他优选实施例。
[0066]
如图2所示,为本发明所述服务器节点的任务分配方法的另一个具体实施例。本实施例在前述实施例的基础上,进行示例性描述。所述方法具体包括以下步骤:
[0067]
步骤201、根据计算系统中各服务器节点的任务执行时长,确定各服务器节点的性能指数。
[0068]
本实施例中性能指数的计算方法可以与前述实施例一致,在此不重复叙述。假设计算系统包括5个服务器节点,其性能指数分别为n1、n2、n3、n4和n5;具体的:n1=10,n2=15,n3=12,n4=20,n5=8。
[0069]
步骤202、将各服务器节点的性能指数按顺序排列,以确定性能序列。
[0070]
本实施例中,性能序列中各个性能指数的命中概率取决于其数值大小,与其排列顺序并无关系。所以本步骤对于性能指数的排序方式不做限定,任何排序方式均可结合在本实施例整体技术方案中。
[0071]
具体的,性能序列可表示为以下:[10,15,12,20,8]。
[0072]
步骤203、将性能序列中各服务器节点的性能指数之和,确定为计算系统的性能总值。
[0073]
性能总值,可以代表计算系统的整体性能。本步骤中性能总值表示为n。该性能总值即为上述n1~n5的总和。也就是:
[0074]
n=n1+n2+n3+n4+n5=65。
[0075]
步骤204、确定不大于性能总值的随机数,以作为目标任务对应的分配参数。
[0076]
本实施例中,当有待分配的目标任务时,可通过随机算法确定其分配参数。随机算法可采用现有算法,在此不赘述。分配参数为不大于性能总值数值的随机数。具体的,分配参数可表示为m。本步骤中假设,m=42。
[0077]
步骤205、根据分配参数和性能序列,确定目标任务对应的服务器节点。
[0078]
根据分配参数和性能序列,即可确定分配参数命中到具体哪个性能指数,进而将目标任务分配到被命中的性能指数对应的服务器节点上。具体的,分配参数的命中方式可参考以下:
[0079]
计算性能序列中,前k个服务器节点的性能指数之和,以及前k

1个服务器节点的性能指数之和;以使目标任务的分配参数小于前k个服务器节点的性能指数之和,且不小于前k

1个服务器节点的性能指数之和;将性能序列中的第k个服务器节点,确定为目标任务对应的服务器节点;其中,k为正整数。
[0080]
在上述的方式中,k代表了性能序列中性能指数的序号。例如当k=1的情况下,可具体的计算确定分配参数是否命中了性能序列中的第1个性能指数。此时,前k个服务器节点的性能指数之和等于n1,也就是10。而前k

1个服务器节点的性能指数之和为0。本实施例中分配参数m的数值是42,不符合上述条件。说明未命中性能序列中的第1个性能指数。
[0081]
同理当k=2时,可计算确定分配参数是否命中了性能序列中的第2个性能指数。此时,前k个服务器节点的性能指数之和等于n1+n2,也就是25。而前k

1个服务器节点的性能指数之和等于n1,也就是10。分配参数m同样不符合上述条件。说明未命中性能序列中的第2个性能指数。
[0082]
直到k=4时,前k个服务器节点的性能指数之和等于n1+n2+n3+n4,也就是57。而前k

1个服务器节点的性能指数之和等于n1+n2+n3,也就是37。此时满足37<m<57。即满足目标任务的分配参数小于前k个服务器节点的性能指数之和,且不小于前k

1个服务器节点的性能指数之和。说明分配参数命中了性能序列中第4个性能指数。进一步的可将该目标任务分配到性能序列中第4个性能指数对应的服务器节点上。
[0083]
按照上述的任务分配方式可以理解的是,由于分配参数m是随机数,所以目标任务
可以按照一定的概率随机命中任一服务器节点。而具体的命中概率,与服务器节点性能参数的数值成正比,且与性能序列中的排列顺序不相关。在这一情况下,可在任务分配时考虑到服务器节点的性能差异,使得服务器节点被分配的任务数量与其性能正相关,由此达到整个计算系统各个服务器节点的负载平衡,提高整体效率。
[0084]
如图3所示,为本发明所述服务器节点的任务分配装置的一个具体实施例。本实施例装置,即用于执行图1~2所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中装置包括:
[0085]
性能指数确定模块301,用于根据计算系统中各服务器节点的任务执行时长,确定各服务器节点的性能指数。
[0086]
性能序列确定模块302,用于根据各服务器节点的性能指数,确定计算系统的性能序列。
[0087]
任务分配模块303,用于确定目标任务对应的分配参数;根据分配参数和性能序列,确定目标任务对应的服务器节点。
[0088]
另外在图3所示实施例的基础上,优选的,还包括:
[0089]
任务时长确定模块304,用于按照预设周期,确定服务器节点中的多个已执行任务的耗时数据;根据多个已执行任务的耗时数据,确定任务执行时长。
[0090]
任务分配模块303包括:
[0091]
性能总值确定单元331,用于将性能序列中各服务器节点的性能指数之和,确定为计算系统的性能总值。
[0092]
分配参数确定单元332,用于确定不大于性能总值的随机数,以作为目标任务对应的分配参数。
[0093]
任务分配单元333,用于计算性能序列中,前k个服务器节点的性能指数之和,以及前k

1个服务器节点的性能指数之和;以使目标任务的分配参数小于前k个服务器节点的性能指数之和,且不小于前k

1个服务器节点的性能指数之和;将性能序列中的第k个服务器节点,确定为目标任务对应的服务器节点;其中,k为正整数。
[0094]
还包括,下线处理模块305,用于将下线的服务器节点上运行的未完成任务,确定为目标任务。
[0095]
还包括,上线处理模块306,用于确定上线的服务器节点的性能指数,并根据上线的服务器节点的性能指数,更新计算系统的性能序列。
[0096]
除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。
[0097]
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0098]
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指
令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的方法中的步骤。
[0099]
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0100]
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
[0101]
本发明中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。
[0102]
还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。
[0103]
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0104]
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1