首页 / 专利库 / 电脑零配件 / 计算机系统 / 基于实时计算的资源分配方法及系统

基于实时计算的资源分配方法及系统

阅读:679发布:2024-02-12

专利汇可以提供基于实时计算的资源分配方法及系统专利检索,专利查询,专利分析的服务。并且本 申请 适用于互联网技术领域,提供了一种基于实时计算的资源分配方法,包括步骤有:获取每台机器上报的多维度的可用资源数;获取应用申请的至少一个维度的需求资源数;根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源。相应地,本申请还提供一种基于实时计算的资源分配系统。借此,本申请能够在实时 计算机系统 中对机器资源按照多维度进行资源分配,可实现机器资源的最大化使用,彻底解决实时计算机系统中任务分配不均衡问题。,下面是基于实时计算的资源分配方法及系统专利的具体信息内容。

1.一种基于实时计算的资源分配方法,其特征在于,包括步骤有:
获取每台机器上报的多维度的可用资源数;
获取应用申请的至少一个维度的需求资源数;
根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源。
2.根据权利要求1所述的资源分配方法,其特征在于,所述获取每台机器上报的多维度的可用资源数的步骤包括:
获取每台所述机器上报的多维度的所述可用资源数,包括硬盘可用任务槽数、处理器可用任务槽数、内存可用任务槽数、网络可用任务槽数之一或其任意组合。
3.根据权利要求2所述的资源分配方法,其特征在于,所述获取应用申请的至少一个维度的需求资源数的步骤包括:
获取所述应用申请的硬盘需求任务槽数、处理器需求任务槽数、内存需求任务槽数、网络需求任务槽数之一或其任意组合;
所述根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源的步骤包括:
根据所述应用的所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数、所述网络需求任务槽数之一或其任意组合,以及所述机器的所述硬盘可用任务槽数、所述处理器可用任务槽数、所述内存可用任务槽数、所述网络可用任务槽数之一或其任意组合,按照维度为所述应用分配资源。
4.根据权利要求3所述的资源分配方法,其特征在于,所述硬盘可用任务槽数=硬盘个数;或者
所述处理器可用任务槽数=(处理器核数–1)*处理器基数;或者
所述内存可用任务槽数=(物理内存大小/单内存任务槽大小)*80%;或者所述网络可用任务槽数=最大网络带宽/每个任务槽所需带宽。
5.根据权利要求3所述的资源分配方法,其特征在于,所述应用包括多个任务和进程组件;当所述任务或所述进程组件的默认需求资源数无法满足应用需求时,所述应用根据所述应用需求申请更多的所述需求资源数。
6.根据权利要求3所述的资源分配方法,其特征在于,所述获取应用申请的至少一个维度的需求资源数的步骤还包括:
根据每台所述机器上报的多维度的所述可用资源数生成当前机器列表;
所述根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源的步骤包括:
对所述应用中的所有任务,按照每个所述任务申请的所述需求资源数进行排序;
根据所排顺序计算各所述任务在每个维度申请的需求资源数;
从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器。
7.根据权利要求6所述的资源分配方法,其特征在于,所述从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器的步骤还包括:
若从所有机器中无法找出满足所述任务的所述需求资源数的所述机器列表,则判定所述任务的资源分配失败。
8.根据权利要求6所述的资源分配方法,其特征在于,所述任务申请的所述需求资源数的权值由高至低依次是所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数和所述网络需求任务槽数;
所述从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器的步骤包括:
第一分配子步骤,若所述任务申请了所述硬盘需求任务槽数,则从满足所述硬盘需求任务槽数的所述当前机器列表中,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若所述硬盘可用任务槽数最多的第一机器有多个则进行下一轮分配步骤;
第二分配子步骤,若所述任务申请了所述处理器需求任务槽数,若所述处理器可用任务槽数最多的所述第二机器只有一个,则将所述任务分配到所述第二机器上,若所述处理器可用任务槽数最多的第二机器有多个则进行下一轮分配步骤;
第三分配子步骤,若所述任务申请了所述内存需求任务槽数,若所述内存可用任务槽数最多的所述第三机器只有一个,则将所述任务分配到所述第三机器上,若所述内存可用任务槽数最多的第三机器有多个则进行下一轮分配步骤;
第四分配子步骤,若所述任务申请了所述网络需求任务槽数,若所述网络可用任务槽数最多的所述第四机器只有一个,则将所述任务分配到所述第四机器上,若所述网络可用任务槽数最多的第四机器有多个,则进行下一轮分配步骤;
第五分配子步骤,根据预定规则从所述第四机器中选择一个第五机器,将所述任务分配到所述第五机器上。
9.根据权利要求8所述的资源分配方法,其特征在于,所述根据预定规则从所述第四机器中选择一个第五机器的步骤包括:
将所述第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的所述第五机器。
10.一种基于实时计算的资源分配系统,其特征在于,包括有:
第一获取模,用于获取每台机器上报的多维度的可用资源数;
第二获取模块,用于获取应用申请的至少一个维度的需求资源数;
资源分配模块,用于根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源。
11.根据权利要求10所述的资源分配系统,其特征在于,所述第一获取模块用于获取每台所述机器上报的多维度的所述可用资源数,包括硬盘可用任务槽数、处理器可用任务槽数、内存可用任务槽数、网络可用任务槽数之一或其任意组合。
12.根据权利要求11所述的资源分配系统,其特征在于,所述第二获取模块用于获取所述应用申请的硬盘需求任务槽数、处理器需求任务槽数、内存需求任务槽数、网络需求任务槽数之一或其任意组合;
所述资源分配模块用于根据所述应用的所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数、所述网络需求任务槽数之一或其任意组合,以及所述机器的所述硬盘可用任务槽数、所述处理器可用任务槽数、所述内存可用任务槽数、所述网络可用任务槽数之一或其任意组合,按照维度为所述应用分配资源。
13.根据权利要求12所述的资源分配系统,其特征在于,所述硬盘可用任务槽数=硬盘个数;或者
所述处理器可用任务槽数=(处理器核数–1)*处理器基数;或者
所述内存可用任务槽数=(物理内存大小/单内存任务槽大小)*80%;或者所述网络可用任务槽数=最大网络带宽/每个任务槽所需带宽。
14.根据权利要求12所述的资源分配系统,其特征在于,所述应用包括多个任务和进程组件;当所述任务或所述进程组件的默认需求资源数无法满足应用需求时,所述应用根据所述应用需求申请更多的所述需求资源数。
15.根据权利要求12所述的资源分配系统,其特征在于,所述第一获取模块还用于根据每台所述机器上报的多维度的所述可用资源数生成当前机器列表;
所述资源分配模块进一步包括:
排序子模块,用于对所述应用中的所有任务,按照每个所述任务申请的所述需求资源数进行排序;
资源数计算子模块,用于根据所排顺序计算各所述任务在每个维度申请的需求资源数;
资源分配子模块,用于从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器。
16.根据权利要求15所述的资源分配系统,其特征在于,所述资源分配子模块还用于若从所有机器中无法找出满足所述任务的所述需求资源数的所述机器列表,则判定所述任务的资源分配失败。
17.根据权利要求15所述的资源分配系统,其特征在于,所述任务申请的所述需求资源数的权值由高至低依次是所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数和所述网络需求任务槽数;
所述资源分配子模块进一步包括:
第一分配单元,用于若所述任务申请了所述硬盘需求任务槽数,则从满足所述硬盘需求任务槽数的所述当前机器列表中,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若所述硬盘可用任务槽数最多的第一机器有多个则进行下一分配单元;
第二分配单元,用于若所述任务申请了所述处理器需求任务槽数,若所述处理器可用任务槽数最多的所述第二机器只有一个,则将所述任务分配到所述第二机器上,若所述处理器可用任务槽数最多的第二机器有多个则进行下一分配单元;
第三分配单元,用于若所述任务申请了所述内存需求任务槽数,若所述内存可用任务槽数最多的所述第三机器只有一个,则将所述任务分配到所述第三机器上,若所述内存可用任务槽数最多的第三机器有多个则进行下一分配单元;
第四分配单元,用于若所述任务申请了所述网络需求任务槽数,若所述网络可用任务槽数最多的所述第四机器只有一个,则将所述任务分配到所述第四机器上,若所述网络可用任务槽数最多的第四机器有多个,则进行下一分配单元;
第五分配单元,用于根据预定规则从所述第四机器中选择一个第五机器,将所述任务分配到所述第五机器上。
18.根据权利要求17所述的资源分配系统,其特征在于,所述第五分配单元还用于将所述第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的所述第五机器。

说明书全文

基于实时计算的资源分配方法及系统

技术领域

[0001] 本申请涉及互联网技术领域,尤其涉及一种基于实时计算的资源分配方法及系统。

背景技术

[0002] 在Storm或JStorm等实时计算系统中,每一应用(topology)都是一数据流线处理系统,每一级处理单元都需申请一些资源,该资源通常是worker进程,而一个worker进程运行在一台机器上的某个端口,并拥有若干处理器(CPU)、内存(Memory)、硬盘(Disk)、网络(Network)等资源。因此需设资源分配算法,分配一些worker给该应用。
[0003] 现有实时计算中对资源进行分配时,通常只有一个维度。每台机器上设置了一个slot(任务槽)列表,每一个slot是所有可用资源的集合,包含硬盘、处理器、内存、网络等,每个应用的资源数据几乎相同。但在真实场景中,应用对不同资源的需求并不同,单维度资源分配算法会造成大量的资源浪费,无法实现资源最大化利用。举例来说:
[0004] 1、不同的任务,对资源的需求量是不一样的,假设在一个应用中,spout(线程)组件只需1G内存,而bolt(线程)组件需8G内存,最终在应用申请的状况就是,每一个任务(task)都申请8G内存,这样spout就会浪费大量内存。spout为从外界获取数据的计算节点,bolt为普通的计算节点。
[0005] 2、假设应用是处理器类型的,一台机器只能允许10个该类应用同时运行,但该类应用对内存需求量不大,若按照内存的能,实际可允许运行20个该类应用,但由于slot是一个资源集合,根据短板效应,导致这台机器上最多设置10个slot,内存资源没有充分使用。
[0006] 3、假设一台机器上同时运行的瓶颈在处理器和内存的应用,这时计算slot数就非常困难,只能取一个保守值做为最终使用值,这个保守值可能是最多运行处理器类型的slot数和最多运行内存类型的slot数的最小值,因为无法确认最终实际在机器运行的状况,到底是处理器类型的多还是内存类型的多。
[0007] 综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。发明内容
[0008] 针对上述的缺陷,本申请的目的在于提供一种基于实时计算的资源分配方法及系统,其能够在实时计算机系统中对机器资源按照多维度进行资源分配,可实现机器资源的最大化使用,彻底解决实时计算机系统中任务分配不均衡问题。
[0009] 为了实现上述目的,本申请提供一种基于实时计算的资源分配方法,包括步骤有:
[0010] 获取每台机器上报的多维度的可用资源数;
[0011] 获取应用申请的至少一个维度的需求资源数;
[0012] 根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源。
[0013] 根据本申请所述的资源分配方法,所述获取每台机器上报的多维度的可用资源数的步骤包括:
[0014] 获取每台所述机器上报的多维度的所述可用资源数,包括硬盘可用任务槽数、处理器可用任务槽数、内存可用任务槽数、网络可用任务槽数之一或其任意组合。
[0015] 根据本申请所述的资源分配方法,所述获取应用申请的至少一个维度的需求资源数的步骤包括:
[0016] 获取所述应用申请的硬盘需求任务槽数、处理器需求任务槽数、内存需求任务槽数、网络需求任务槽数之一或其任意组合;
[0017] 所述根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源的步骤包括:
[0018] 根据所述应用的所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数、所述网络需求任务槽数之一或其任意组合,以及所述机器的所述硬盘可用任务槽数、所述处理器可用任务槽数、所述内存可用任务槽数、所述网络可用任务槽数之一或其任意组合,按照维度为所述应用分配资源。
[0019] 根据本申请所述的资源分配方法,所述硬盘可用任务槽数=硬盘个数;或者[0020] 所述处理器可用任务槽数=(处理器核数–1)*处理器基数;或者[0021] 所述内存可用任务槽数=(物理内存大小/单内存任务槽大小)*80%;或者[0022] 所述网络可用任务槽数=最大网络带宽/每个任务槽所需带宽。
[0023] 根据本申请所述的资源分配方法,所述应用包括多个任务和进程组件;当所述任务或所述进程组件的默认需求资源数无法满足应用需求时,所述应用根据所述应用需求申请更多的所述需求资源数。
[0024] 根据本申请所述的资源分配方法,所述获取应用申请的至少一个维度的需求资源数的步骤还包括:
[0025] 根据每台所述机器上报的多维度的所述可用资源数生成当前机器列表;
[0026] 所述根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源的步骤包括:
[0027] 对所述应用中的所有任务,按照每个所述任务申请的所述需求资源数进行排序;
[0028] 根据所排顺序计算各所述任务在每个维度申请的需求资源数;
[0029] 从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器。
[0030] 根据本申请所述的资源分配方法,所述从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器的步骤还包括:
[0031] 若从所有机器中无法找出满足所述任务的所述需求资源数的所述机器列表,则判定所述任务的资源分配失败。
[0032] 根据本申请所述的资源分配方法,所述任务申请的所述需求资源数的权值由高至低依次是所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数和所述网络需求任务槽数;
[0033] 所述从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器的步骤包括:
[0034] 第一分配子步骤,若所述任务申请了所述硬盘需求任务槽数,则从满足所述硬盘需求任务槽数的所述当前机器列表中,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若所述硬盘可用任务槽数最多的第一机器有多个则进行下一轮分配步骤;
[0035] 第二分配子步骤,若所述任务申请了所述处理器需求任务槽数,若所述处理器可用任务槽数最多的所述第二机器只有一个,则将所述任务分配到所述第二机器上,若所述处理器可用任务槽数最多的第二机器有多个则进行下一轮分配步骤;
[0036] 第三分配子步骤,若所述任务申请了所述内存需求任务槽数,若所述内存可用任务槽数最多的所述第三机器只有一个,则将所述任务分配到所述第三机器上,若所述内存可用任务槽数最多的第三机器有多个则进行下一轮分配步骤;
[0037] 第四分配子步骤,若所述任务申请了所述网络需求任务槽数,若所述网络可用任务槽数最多的所述第四机器只有一个,则将所述任务分配到所述第四机器上,若所述网络可用任务槽数最多的第四机器有多个,则进行下一轮分配步骤;
[0038] 第五分配子步骤,根据预定规则从所述第四机器中选择一个第五机器,将所述任务分配到所述第五机器上。
[0039] 根据本申请所述的资源分配方法,所述根据预定规则从所述第四机器中选择一个第五机器的步骤包括:
[0040] 将所述第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的所述第五机器。
[0041] 本发明还提供一种基于实时计算的资源分配系统,包括有:
[0042] 第一获取模,用于获取每台机器上报的多维度的可用资源数;
[0043] 第二获取模块,用于获取应用申请的至少一个维度的需求资源数;
[0044] 资源分配模块,用于根据所述应用的所述需求资源数和所述机器的所述可用资源数,按照维度为所述应用分配资源。
[0045] 根据本申请所述的资源分配系统,所述第一获取模块用于获取每台所述机器上报的多维度的所述可用资源数,包括硬盘可用任务槽数、处理器可用任务槽数、内存可用任务槽数、网络可用任务槽数之一或其任意组合。
[0046] 根据本申请所述的资源分配系统,所述第二获取模块用于获取所述应用申请的硬盘需求任务槽数、处理器需求任务槽数、内存需求任务槽数、网络需求任务槽数之一或其任意组合;
[0047] 所述资源分配模块用于根据所述应用的所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数、所述网络需求任务槽数之一或其任意组合,以及所述机器的所述硬盘可用任务槽数、所述处理器可用任务槽数、所述内存可用任务槽数、所述网络可用任务槽数之一或其任意组合,按照维度为所述应用分配资源。
[0048] 根据本申请所述的资源分配系统,所述硬盘可用任务槽数=硬盘个数;或者[0049] 所述处理器可用任务槽数=(处理器核数–1)*处理器基数;或者[0050] 所述内存可用任务槽数=(物理内存大小/单内存任务槽大小)*80%;或者[0051] 所述网络可用任务槽数=最大网络带宽/每个任务槽所需带宽。
[0052] 根据本申请所述的资源分配系统,所述应用包括多个任务和进程组件;当所述任务或所述进程组件的默认需求资源数无法满足应用需求时,所述应用根据所述应用需求申请更多的所述需求资源数。
[0053] 根据本申请所述的资源分配系统,所述第一获取模块还用于根据每台所述机器上报的多维度的所述可用资源数生成当前机器列表;
[0054] 所述资源分配模块进一步包括:
[0055] 排序子模块,用于对所述应用中的所有任务,按照每个所述任务申请的所述需求资源数进行排序;
[0056] 资源数计算子模块,用于根据所排顺序计算各所述任务在每个维度申请的需求资源数;
[0057] 资源分配子模块,用于从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器。
[0058] 根据本申请所述的资源分配系统,所述资源分配子模块还用于若从所有机器中无法找出满足所述任务的所述需求资源数的所述机器列表,则判定所述任务的资源分配失败。
[0059] 根据本申请所述的资源分配系统,所述任务申请的所述需求资源数的权值由高至低依次是所述硬盘需求任务槽数、所述处理器需求任务槽数、所述内存需求任务槽数和所述网络需求任务槽数;
[0060] 所述资源分配子模块进一步包括:
[0061] 第一分配单元,用于若所述任务申请了所述硬盘需求任务槽数,则从满足所述硬盘需求任务槽数的所述当前机器列表中,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若所述硬盘可用任务槽数最多的第一机器有多个则进行下一分配单元;
[0062] 第二分配单元,用于若所述任务申请了所述处理器需求任务槽数,若所述处理器可用任务槽数最多的所述第二机器只有一个,则将所述任务分配到所述第二机器上,若所述处理器可用任务槽数最多的第二机器有多个则进行下一分配单元;
[0063] 第三分配单元,用于若所述任务申请了所述内存需求任务槽数,若所述内存可用任务槽数最多的所述第三机器只有一个,则将所述任务分配到所述第三机器上,若所述内存可用任务槽数最多的第三机器有多个则进行下一分配单元;
[0064] 第四分配单元,用于若所述任务申请了所述网络需求任务槽数,若所述网络可用任务槽数最多的所述第四机器只有一个,则将所述任务分配到所述第四机器上,若所述网络可用任务槽数最多的第四机器有多个,则进行下一分配单元;
[0065] 第五分配单元,用于根据预定规则从所述第四机器中选择一个第五机器,将所述任务分配到所述第五机器上。
[0066] 根据本申请所述的资源分配系统,所述第五分配单元还用于将所述第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的所述第五机器。
[0067] 本申请中由每台机器上报的多维度的可用资源数,再由应用申请的至少一个维度的需求资源数;然后根据所述应用的需求资源数和所述机器的可用资源数,按照维度为应用分配资源。所述维度优选包括硬盘、处理器、内存、网络这四个维度。借此,本申请可以在实时计算机系统中对机器资源按照多维度进行资源分配,可实现机器资源的最大化使用,彻底解决实时计算机系统中任务分配不均衡问题。附图说明
[0068] 图1是本申请基于实时计算的资源分配系统的结构示意图;
[0069] 图2是本申请优选基于实时计算的资源分配系统的结构示意图;
[0070] 图3是本申请基于实时计算的资源分配方法的流程图
[0071] 图4是本申请优选基于实时计算的资源分配方法的流程图。

具体实施方式

[0072] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0073] 在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0074] 内存可能包括计算机可读介质中的非永久性存储器随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0075] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0076] 图1是本申请基于实时计算的资源分配系统的结构示意图,所述资源分配系统100优选设置于Storm或Jstorm等实时计算系统中的主节点(Nimbus)上,并且所述资源分配系统100至少包括有第一获取模块10、第二获取模块20以及资源分配模块30,其中:
[0077] 所述第一获取模块10,用于获取每台机器上报的多维度的可用资源数。所述机器通常为实时计算系统中的从节点(Supervisor)。优选的是,第一获取模块10用于获取每台机器上报的四个维度的可用资源数,包括硬盘可用slot(任务槽)数、处理器可用slot数、内存可用slot数和网络可用slot数。当然,也可以获取这四个维度中两个或三个维度的可用资源数。
[0078] 所述第二获取模块20,用于获取应用申请的至少一个维度的需求资源数。优选的是,第二获取模块20用于获取应用申请的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。
[0079] 所述资源分配模块30,用于根据所述应用的需求资源数和所述机器的可用资源数,按照维度为所述应用分配资源。优选的是,资源分配模块30用于根据应用的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合,以及机器的硬盘可用slot数、处理器可用slot数、内存可用slot数、网络可用slot数之一或其任意组合,按照维度为应用分配资源。
[0080] 本申请对机器资源按照这多个维度进行资源分配,可让机器的资源最大化使用。彻底解决实时计算机系统中任务分配不均衡问题。本申请不限计算机语言,java/c++/c等均可。
[0081] 图2是本申请优选基于实时计算的资源分配系统的结构示意图,所述资源分配系统100优选设置于Storm或Jstorm等实时计算系统中的主节点,并且所述资源分配系统100至少包括有第一获取模块10、第二获取模块20以及资源分配模块30,其中:
[0082] 所述第一获取模块10,用于获取每台机器上报的多维度的可用资源数,并根据每台机器上报的多维度的可用资源数生成当前机器列表。所述机器通常为实时计算系统中的从节点。典型的资源类型有4类:硬盘、处理器、内存、网络。优选的是,第一获取模块10用于获取每台机器上报的四个维度的可用资源数,包括硬盘可用slot数、处理器可用slot数、内存可用slot数和网络可用slot数。当然,也可以获取这四个维度中两个或三个维度的可用资源数。实时计算系统中的每台机器可定时汇报自己的可用资源数。
[0083] 每台所述机器的可用资源数的算法优选为:
[0084] 硬盘可用slot数=硬盘个数。即机器中有几块磁盘,则拥有几个磁盘可用slot,任何时候,机器都会包含一块系统盘;或者
[0085] 处理器可用slot数=(处理器核数–1)*处理器基数。假设一台机器的处理器是24核,减去一个操作系统使用的处理器核,则为23,再乘以处理器基数,默认为2,则该机器的处理器可用slot数为46;或者
[0086] 内存可用slot数=(物理内存大小/单内存slot大小)*80%。假设一台机器的物理内存为96G,一个内存slot大小为1G,则该机器的内存可用slot数为75;或者[0087] 网络可用slot数=最大网络带宽/每个slot所需带宽。所述最大网络带宽是指通过测试程序测试该机器到主节点机器上最大网络带宽为多少,假设为50M,按照5M一个slot,则该机器的网络可用slot数为10。
[0088] 所述第二获取模块20,用于获取应用申请的至少一个维度的需求资源数。优选的是,第二获取模块20用于获取应用申请的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。更好的是,所述应用包括多个任务(task)和worker组件(进程组件),worker组件是指运行具体处理组件逻辑的进程,worker组件中每一个spout/bolt的线程称为一个任务。每个任务的默认需求资源数设为1个处理器slot、1个内存slot、0个硬盘slot。worker组件的默认需求资源数设为1个网络slot。当任务和/或worker组件的默认需求资源数无法满足应用需求时,应用根据应用需求调用指定的API(Application Programming Interface,应用程序编程接口),申请更多的需求资源数,即应用可以根据需求申请更多的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。
[0089] 所述资源分配模块30,用于根据应用的需求资源数和机器的可用资源数,按照维度为所述应用分配资源。优选的是,资源分配模块30用于根据应用的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合,以及机器的硬盘可用slot数、处理器可用slot数、内存可用slot数、网络可用slot数之一或其任意组合,按照维度为所述应用分配资源。
[0090] 更好的是,资源分配模块30进一步包括:
[0091] 排序子模块31,用于对应用中的所有任务,按照每个任务申请的需求资源数进行排序。这里,设定任务申请的需求资源数的权值由高至低依次是硬盘需求slot数、处理器需求slot数、内存需求slot数和网络需求slot数。对JStorm的所有任务,进行排序,按照任务申请的资源数做排序,权值越高的任务,优先分配资源。硬盘权值最高,处理器其次,内存和网络权值最后,然后根据资源的优先级来进行平衡算法。
[0092] 资源数计算子模块32,用于根据所排顺序计算各所述任务在每个维度申请的需求资源数。
[0093] 资源分配子模块33,用于,用于从所有机器中找出满足每个所述任务的所述需求资源数的机器列表,并将所述任务分配给所述机器列表对应的机器。资源分配子模块33还用于若从所有机器中无法找出满足所述任务的所述需求资源数的所述机器列表,则判定所述任务的资源分配失败。
[0094] 更好的是,资源分配子模块33进一步包括:
[0095] 第一分配单元,用于若任务申请了硬盘需求slot数,则从满足硬盘需求slot数的当前机器列表中按照硬盘可用slot数的高低顺序排序,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若硬盘可用slot数最多的第一机器只有一个,则将任务分配到第一机器上,若硬盘可用slot数最多的第一机器有多个则进行下一轮分配步骤。
[0096] 第二分配单元,用于若任务申请了处理器需求slot数,则将第一机器按照处理器可用slot数的高低顺序排序,若处理器可用slot数最多的第二机器只有一个,则将任务分配到第二机器上,若处理器可用slot数最多的第二机器有多个则进行下一轮分配步骤。可以理解的是,假若所述任务未申请硬盘需求slot数,则直接执行第二分配单元,则此时的第一机器相当于满足处理器需求slot数的当前机器列表中的机器。
[0097] 第三分配单元,用于若任务申请了内存需求slot数,则将第二机器按照内存可用slot数的高低顺序排序,若内存可用slot数最多的第三机器只有一个,则将任务分配到第三机器上,若内存可用slot数最多的第三机器有多个则进行下一轮分配步骤。可以理解的是,假若所述任务申请了硬盘需求slot数,但未申请处理器需求slot数,则执行完第一分配单元后不执行第二分配单元,而直接执行第三分配单元,则此时的第二机器相当于所述第一机器。假若所述任务未申请硬盘需求slot数和处理器需求slot数,则不执行第一分配单元和第二分配单元,而直接执行第三分配单元,则此时的第二机器相当于满足处理器需求slot数的当前机器列表中的机器。
[0098] 第四分配单元,用于若任务申请了网络需求slot数,则将第三机器按照网络可用slot数的高低顺序排序,若网络可用slot数最多的第四机器只有一个,则将任务分配到第四机器上,若网络可用slot数最多的第四机器有多个,则进行下一轮分配步骤。可以理解的是,假若所述任务未申请硬盘需求slot数、处理器需求slot数、内存需求slot数之一或其任意组合,则跳过相应的分配单元后,执行第三分配单元。
[0099] 第五分配单元,用于根据预定规则从第四机器中选择一个第五机器,将任务分配到第五机器上。优选的是,第五分配单元还用于将第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的第五机器。
[0100] 例如,因硬盘需求slot数的资源优先级最高,首先将按硬盘维度进行分配,若任务没有申请硬盘需求slot数,则无需考虑硬盘slot排序,若申请了硬盘需求slot数,则对满足任务资源的机器列表,按照硬盘需求slot数从多到少进行排序,若硬盘需求slot数最多的机器只有一个,则该任务就分配到该机器上,若slot数最多的机器存在多个,则按照下一维度进行,进一步确认。依次按照处理器/内存/网络这三个维度,进一步确认任务运行所在的机器。对上一次选取好的机器,按照本维度进行slot排序,slot最多的机器优先级最高,若slot数最多的机器是一台,则任务被分配在该机器上,若slot数据最多的机器不止一台,则按下一个维度进行进一步判断。若按照硬盘/处理器/内存/网络这四个维度判断完毕,仍然存在多台机器,则对机器名字按字符顺序进行排序,取第一台即可。
[0101] 图3是本申请基于实时计算的资源分配方法的流程图,其可通过如图1或图2所示的资源分配系统100实现,包括步骤有:
[0102] 步骤S301,获取每台机器上报的多维度的可用资源数。
[0103] 所述机器通常为实时计算系统中的从节点(Supervisor)。优选的是,获取每台机器上报的四个维度的可用资源数,包括硬盘可用slot(任务槽)数、处理器可用slot数、内存可用slot数和网络可用slot数。当然,也可以获取这四个维度中两个或三个维度的可用资源数。
[0104] 步骤S302,获取应用申请的至少一个维度的需求资源数。
[0105] 优选的是,获取应用申请的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。
[0106] 步骤S303,根据所述应用的需求资源数和所述机器的可用资源数,按照维度为所述应用分配资源。
[0107] 优选的是,根据应用的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合,以及机器的硬盘可用slot数、处理器可用slot数、内存可用slot数、网络可用slot数之一或其任意组合,按照维度为应用分配资源。
[0108] 图4是本申请优选基于实时计算的资源分配方法的流程图,其可通过如图2所示的资源分配系统100实现,包括步骤有:
[0109] 步骤S401,获取每台机器上报的多维度的可用资源数。
[0110] 优选的是,所述机器通常为实时计算系统中的从节点。典型的资源类型有4类:硬盘、处理器、内存、网络。优选的是,获取每台机器上报的四个维度的可用资源数,包括硬盘可用slot数、处理器可用slot数、内存可用slot数和网络可用slot数。当然,也可以获取这四个维度中两个或三个维度的可用资源数。实时计算系统中的每台机器可定时汇报自己的可用资源数。
[0111] 每台所述机器的可用资源数的算法优选为:
[0112] 硬盘可用slot数=硬盘个数。即机器中有几块磁盘,则拥有几个磁盘可用slot,任何时候,机器都会包含一块系统盘;和/或
[0113] 处理器可用slot数=(处理器核数–1)*处理器基数。假设一台机器的处理器是24核,减去一个操作系统使用的处理器核,则为23,再乘以处理器基数,默认为2,则该机器的处理器可用slot数为46;和/或
[0114] 内存可用slot数=(物理内存大小/单内存slot大小)*80%。假设一台机器的物理内存为96G,一个内存slot大小为1G,则该机器的内存可用slot数为75;和/或[0115] 网络可用slot数=最大网络带宽/每个slot所需带宽。所述最大网络带宽是指通过测试程序测试该机器到主节点机器上最大网络带宽为多少,假设为50M,按照5M一个slot,则该机器的网络可用slot数为10。
[0116] 步骤S402,根据每台机器上报的多维度的可用资源数生成当前机器列表。
[0117] 步骤S403,获取应用申请的至少一个维度的需求资源数。
[0118] 优选的是,获取应用申请的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。更好的是,所述应用包括多个任务和worker组件,worker组件是指运行具体处理组件逻辑的进程,worker组件中每一个spout/bolt的线程称为一个任务。每个任务的默认需求资源数设为1个处理器slot、1个内存slot、0个硬盘slot。worker组件的默认需求资源数设为1个网络slot。当任务和/或worker组件的默认需求资源数无法满足应用需求时,应用根据应用需求调用指定的API申请更多的需求资源数,即应用可以根据需求申请更多的硬盘需求slot数、处理器需求slot数、内存需求slot数、网络需求slot数之一或其任意组合。
[0119] 步骤S404,对应用中的所有任务,按照每个任务申请的需求资源数进行排序。
[0120] 优选的是,任务申请的需求资源数的权值由高至低依次是硬盘需求slot数、处理器需求slot数、内存需求slot数和网络需求slot数。
[0121] 步骤S405,根据所排顺序计算各所述任务在每个维度申请的需求资源数。
[0122] 步骤S406,判断从所有机器中是否能找出满足每个任务的需求资源数的机器列表,若是则执行步骤S407,否则执行步骤S408。
[0123] 步骤S407,若能从所有机器中找出满足每个任务的需求资源数的机器列表,将所述任务分配给所述机器列表对应的机器。
[0124] 优选的是,本步骤进一步包括:
[0125] 第一分配步骤,若任务申请了硬盘需求slot数,则从满足硬盘需求slot数的当前机器列表中按照硬盘可用slot数的高低顺序排序,将所述任务分配到所述硬盘可用任务槽数最多的第一机器上,若硬盘可用slot数最多的第一机器只有一个,则将任务分配到第一机器上,若硬盘可用slot数最多的第一机器有多个则进行下一轮分配步骤。
[0126] 第二分配步骤,若任务申请了处理器需求slot数,则将第一机器按照处理器可用slot数的高低顺序排序,若处理器可用slot数最多的第二机器只有一个,则将任务分配到第二机器上,若处理器可用slot数最多的第二机器有多个则进行下一轮分配步骤。可以理解的是,假若所述任务未申请硬盘需求slot数,则直接执行第二分配步骤,则此时的第一机器相当于满足处理器需求slot数的当前机器列表中的机器。
[0127] 第三分配步骤,若任务申请了内存需求slot数,则将第二机器按照内存可用slot数的高低顺序排序,若内存可用slot数最多的第三机器只有一个,则将任务分配到第三机器上,若内存可用slot数最多的第三机器有多个则进行下一轮分配步骤。可以理解的是,假若所述任务申请了硬盘需求slot数,但未申请处理器需求slot数,则执行完第一分配步骤后不执行第二分配步骤,而直接执行第三分配步骤,则此时的第二机器相当于所述第一机器。假若所述任务未申请硬盘需求slot数和处理器需求slot数,则不执行第一分配步骤和第二分配步骤,而直接执行第三分配步骤,则此时的第二机器相当于满足处理器需求slot数的当前机器列表中的机器。
[0128] 第四分配步骤,若任务申请了网络需求slot数,则将第三机器按照网络可用slot数的高低顺序排序,若网络可用slot数最多的第四机器只有一个,则将任务分配到第四机器上,若网络可用slot数最多的第四机器有多个,则进行下一轮分配步骤。可以理解的是,假若所述任务未申请硬盘需求slot数、处理器需求slot数、内存需求slot数之一或其任意组合,则跳过相应的分配步骤后,执行第三分配步骤。
[0129] 第五分配步骤,根据预定规则从第四机器中选择一个第五机器,将任务分配到第五机器上。优选的是,将第四机器的机器名字按字符顺序进行排序,并从中选择第一序位的第五机器。
[0130] 例如,因硬盘需求slot数的资源优先级最高,首先将按硬盘维度进行分配,若任务没有申请硬盘需求slot数,则无需考虑硬盘slot排序,若申请了硬盘需求slot数,则对满足任务资源的机器列表,按照硬盘需求slot数从多到少进行排序,若硬盘需求slot数最多的机器只有一个,则该任务就分配到该机器上,若slot数最多的机器存在多个,则按照下一维度进行,进一步确认。依次按照处理器/内存/网络这三个维度,进一步确认任务运行所在的机器。对上一次选取好的机器,按照本维度进行slot排序,slot最多的机器优先级最高,若slot数最多的机器是一台,则任务被分配在该机器上,若slot数据最多的机器不止一台,则按下一个维度进行进一步判断。若按照硬盘/处理器/内存/网络这四个维度判断完毕,仍然存在多台机器,则对机器名字按字符顺序进行排序,取第一台即可。
[0131] 步骤S408,若能从所有机器中无法找出满足每个任务的需求资源数的机器列表,则判定任务的资源分配失败。
[0132] 例如,在一个应用中,其中某个任务的需求资源数为4个处理器slot,8个内存slot,0个硬盘slot。根据各个机器的机器列表中的可用资源信息分析出,当前所有机器的内存可用slot数均不到8个,从而可以看出当前没有一个机器能够无法满足该任务的需求资源数,因此资源分配系统100判定该任务的资源分配失败,此时可以直接反馈“资源分配失败”或者提示“资源不足”等信息。
[0133] 综上所述,本申请中由每台机器上报的多维度的可用资源数,再由应用申请的至少一个维度的需求资源数;然后根据所述应用的需求资源数和所述机器的可用资源数,按照维度为应用分配资源。所述维度优选包括硬盘、处理器、内存、网络这四个维度。借此,本申请可以在实时计算机系统中对机器资源按照多维度进行资源分配,可实现机器资源的最大化使用,彻底解决实时计算机系统中任务分配不均衡问题。
[0134] 当然,本申请还可有其它多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请所附的权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈