发明内容
本发明实施例提供了一种云计算资源的调度方法、装置及云计算平台,旨在解决现有技术提供的云计算资源的调度方法,没有考虑被调度的应用程序的服务质量,而导致整个云计算平台中的应用程序的整体服务质量低的问题。
一方面,提供一种云计算资源的调度方法,所述方法包括:
根据预设的调度策略从等待队列中选择一应用程序;
计算所述应用程序在不同资源集下运行时所能取得的效用值;
将效用值最大时的资源集分配给所述应用程序;
从所述资源集中选择一个资源作为所述应用程序的第一节点;
在所述第一节点上根据分配给所述应用程序的资源集创建所述应用程序的运行环境,所述应用程序在所述运行环境中运行。
进一步地,还包括步骤:
判断进入等待队列的应用程序是否满足运行条件;
如果满足运行条件,则为所述应用程序组建元组;
将所述元组加入运行队列;
发送运行程序的消息至所述应用程序的第一节点。
进一步地,所述元组包括所述应用程序的ID、服务级别、作业需求;
所述应用程序的第一节点是云计算平台中的一个从节点。
进一步地,所述计算所述应用程序在不同资源集下运行时所能取得的效用值包括:
计算分配给应用程序的资源集中的每个资源的服务级别;
根据所述资源集中的每个资源的服务级别计算所述应用程序在所述资源集下运行时所能达到的服务级别;
根据所述应用程序的服务级别以及所述应用程序在所述资源集下运行时所能达到的服务级别计算所述应用程序在不同资源集下运行时所能取得的效用值。
进一步地,在所述在所述第一节点上根据分配给所述应用程序的资源集创建所述应用程序的运行环境,所述应用程序在所述运行环境中运行之后,还包括:
接收集群中各从节点发送的当前运行的各应用程序的效用偏差;
根据所述效用偏差重新分配资源集给各应用程序。。
另一方面,提供一种云计算资源的调度装置,所述装置包括:
应用确定单元,用于根据预设的调度策略从等待队列中选择一应用程序;
效用值计算单元,用于计算所述应用程序在不同资源集下运行时所能取得的效用值;
第一资源集分配单元,用于将效用值最大时的资源集分配给所述应用程序;
第一节点确定单元,用于从分配给所述应用程序的资源集中选择一个资源作为所述应用程序的第一节点;
应用运行单元,用于在所述第一节点上根据分配给所述应用程序的资源集创建所述应用程序的运行环境,所述应用程序在所述运行环境中运行。
进一步地,所述装置还包括:
判断单元,用于判断进入等待队列的应用程序是否满足运行条件;
元组组建单元,用于如果满足运行条件,则为所述应用程序组建元组;
元组加入单元,用于将所述元组加入运行队列;
运行消息发送单元,用于发送运行程序的消息至所述应用程序的第一节点。
进一步地,所述效用值计算单元包括:
子服务级别计算模块,用于计算分配给应用程序的资源集中的每个资源的服务级别;
服务级别计算单元,用于根据所述资源集中的每个资源的服务级别计算所述应用程序在所述资源集下运行时所能达到的服务级别;
效用值计算模块,用于根据所述应用程序的服务级别以及所述应用程序在所述资源集下运行时所能达到的服务级别计算所述应用程序在不同资源集下运行时所能取得的效用值。
进一步地,所述装置还包括:
效用偏差接收单元,用于接收集群中各从节点发送的当前运行的各应用程序的效用偏差;
第二资源集分配单元,用于根据所述效用偏差重新分配资源集给各应用程序。
另一方面,提供一种云计算资源平台,所述云计算平台包括至少一个从节点,所述云计算平台还包括主节点,所述主节点中包括如上所述的云计算资源的调度装置,所述主节点与所述从节点连接。
在本发明实施例,通过计算得到需要调度的应用程序在不同资源集下运行时所能取得的效用值后,从中选择效用值最大时的资源集分配给该应用程序,由于效用值反映了该应用程序的服务质量,因此,可以根据应用程序在不同资源集下的服务质量来分配给应用程序相应的资源集,使得应用程序被调度时的服务质量得到了保证。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,计算得到需要调度的应用程序在不同资源集下运行时所能取得的效用值后,从中选择效用值最大时的资源集分配给该应用程序。
以下结合具体实施例对本发明的实现进行详细描述:
实施例一
图1示出了本发明实施例一提供的云计算资源的调度方法的实现流程,以云计算平台中的主节点侧为例来进行说明,详述如下:
在步骤S101中,主节点根据预设的调度策略从等待队列中选择一应用程序Appj。
本发明实施例中,实施时需要在云计算平台下进行,云计算平台包括主节点和若干从节点。本实施例中选择高性能的服务器作为云计算平台中的主节点;选择各种类型的商用PC作为从节点,选择2台以上商用PC作为从节点。
主节点上除了部署云计算平台下的主节点的常用功能外,还需要部署调度程序,主节点启动时,主节点上的调度程序随即运行,初始化调度程序中的等待队列与运行队列,再由调度程序等待新的应用程序Appi进入等待队列。
在接收到新的应用程序Appi发送的请求进入等待队列的指令后,调度程序根据Appi中包括的作业需求Di判定Appi是否满足预设的运行条件,即判定Appi是否可以在集群中执行,判定的步骤具体包括:
第一步:获取集群总资源;
第二步:判断Appi的作业需求Di是否大于集群总资源,若大于集群总资源则Appi不可执行,否则Appi可执行。
如果Appi可执行,则组建该Appi的元组,该元组中包括该Appi的ID、服务级别和作业需求,并将该元组加入调度程序中的等待队列。加入完成后,即可触发一次调度。若不可执行,则发送调度失败消息给该Appi的主节点。
调度程序执行一次调度;调度程序是在主节点上运行的一个程序,如Erlang语言环境下的一个Erlang进程。
调度程序执行调度时,先判断等待队列是否为空,如果等待队列为空,则表示没有可以调度的应用程序,本次调度结束,否则根据预设的调度策略从等待队列中选择一个Appj,对该Appj进行调度。
其中,预设的调度策略包括先进先出,资源需求少优先,服务级别高优先。
调度策略是为整个集群而配置的,在集群启动时由主节点载入该配置。
先进先出是指先进入等待队列的应用程序优先调度执行;资源需求少优先是指等待队列中所需资源少的应用程序优先调度执行;服务级别高优先是指等待队列中服务级别高的应用程序优先调度执行。
在步骤S102中,主节点计算该应用程序Appj在不同资源集下运行时所能取得的效用值Uj,并将效用值Uj最大时的资源集Ressj分配给Appj。
本发明实施例中,主节点中的调度程序可以通过以下步骤计算从等待队列中选择一个Appj在不同资源集下运行时所能取得的效用值Uj,其中,资源集是由不同资源组成的一个集合:
步骤1、主节点计算分配给应用程序Appj的资源集中的每个资源djk′的服务级别sjk′,1≤k≤n,其中,dj1′,dj2′,...dj(n-1)′,djn′为Dj′的n个资源,Dj′为分配给Appj的资源集;
步骤2、主节点根据资源集Dj′中的每个资源的服务级别sjk′计算Appj在所述Dj′下运行时所能达到的服务级别Sj′,其中Sj′=sjk′*n;
步骤3、主节点根据S
j和S
j′计算App
j在不同资源集下运行时所能取得的效用值U
j,其中,
,S
j为App
j的服务级别。
计算得到Appj在不同资源集下运行时所能取得的效用值Uj后,可以从中选择效用值Uj最大时的资源集Ressj分配给Appj。
在步骤S103中,主节点在该Ressj中选择一个资源作为该Appj的第一节点AppNodej,其中,该Appj的第一节点AppNodej是云计算平台中的一个从节点。
在步骤S104中,主节点在Appj的AppNodej上根据Ressj创建Appj的运行环境AEj,Appj在AEj中运行。
本发明实施例中,主节点在AppNodej上根据Ressj创建Appj的运行环境AEj,并将等待队列中的元组加入运行队列,然后发送运行程序的消息至Appj的第一节点AppNodej,第一节点AppNodej接收到该消息后,Appj即可在AEj中运行,由AEj负责Appj内部的子程序的资源分配、回收和调整。另外,主节点在将元组加入运行队列后,还需要将该元组从等待队列中移除。
另外,作为本发明的一个优选实施例,在Appj正常运行时,Appj的第一节点AppNodej可以发送“调度”消息给主节点的调度程序,请求调度程序发起再一次调度。因为此时集群资源仍有可能有空闲,可以尝试让等待队列中的应用程序加入运行队列,并且Appj并发继续执行。这样可使得多个应用程序并行运算,从而提高***利用率。
本实施例,通过计算得到需要调度的应用程序在不同资源集下运行时所能取得的效用值后,从中选择效用值最大时的资源集分配给该应用程序,由于效用值反映了该应用程序的服务质量,因此,可以根据应用程序在不同资源集下的服务质量来分配给应用程序相应的资源集,使得应用程序被调度时的服务质量得到了保证。
本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
实施例二
图2示出了本发明实施例二提供的云计算资源的调度方法的实现流程,以主节点侧为例进行说明,本实施例是在实施例一的基础上执行的,执行的各个步骤均在实施例一的步骤S104之后执行,详述如下:
在步骤S201中,主节点接收各从节点发送的当前运行的各应用程序的效用偏差。
在本发明实施例中,当前运行的各应用程序的第一节点可以实时或者周期性地计算在其上运行的各应用程序的效用值,并根据该效用值计算得到效用偏差,当U超出[minU,maxU]范围时,发送效用偏差μ给主节点。其中,若应用程序的效用值为U,则效用偏差μ为:μ=|1-U|,若U>1,则返回1;否则返回U。其中,在从节点中计算效用值的方法与步骤S102中在主节点中计算效用值的方法相同,在此不再赘述。
在步骤S202中,主节点根据该效用偏差重新分配资源集给各应用程序。
在本发明实施例中,主节点接收到从节点发送的效用偏差后,根据效用偏差增加或者回收从节点为应用程序所分配的资源。例如,若效用值为1,则回收从节点发送的效用偏差对应的资源,若效用值小于minU,则尝试从现有空闲资源中增加新的资源给该从节点中运行的应用程序。本实施例中,minU等于0.8。
另外,被调度的应用程序运行结束后,可以由其第一节点(云计算平台中的从节点)将运行结果发送至主节点中的调度程序,同时释放分配给该应用程序的资源,并再一次发送调度消息至主节点的调度程序,调度程序接收到运行结果后,返回运行结果至用户,并根据从节点发送的调度消息发起再一次调度。
本实施例,在应用程序的运行期间,各应用程序的第一节点可以发送当前应用程序的效用偏差值至主节点,由主节点根据高效用偏差值重新分配资源给各个应用程序。根据效用值的动态变化适时调整资源的分配,使得根据服务质量动态调整资源,达到了整个云计算平台资源的动态调整、自我优化的效果,同时有效降低了云计算平台中主节点的负载,提高了平台稳定性。
实施例三
图3示出了本发明实施例三提供的云计算资源的调度装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该云计算资源的调度装置3可以是内置于主节点中的软件单元、硬件单元或者软硬件结合的单元,所述装置3包括:应用确定单元31、效用值计算单元32、第一资源集分配单元33、第一节点确定单元34和应用运行单元35。
其中,应用确定单元31,用于根据预设的调度策略从等待队列中选择一应用程序;
效用值计算单元32,用于计算应用确定单元31选择的应用程序在不同资源集下运行时所能取得的效用值,其中,资源集是由不同资源组成的一个集合;
第一资源集分配单元33,用于将效用值最大时的资源集分配给应用确定单元31选择的应用程序;
第一节点确定单元34,用于从分配给应用确定单元31选择的应用程序的资源集中选择一个资源作为该应用程序的第一节点,该应用程序的第一节点是云计算平台中的一个从节点;
应用运行单元35,用于在第一节点确定单元34确定的第一节点上根据分配给该应用程序的资源集创建该应用程序的运行环境,该应用程序在所创建的运行环境中运行。
进一步地的,该装置3还包括:
判断单元,用于判断进入等待队列的应用程序是否满足运行条件;
元组组建单元,用于如果满足运行条件,则为该应用程序组建元组;
元组加入单元,用于将该元组加入运行队列;
运行消息发送单元,用于发送运行程序的消息至该应用程序的第一节点。
具体的,效用值计算单元32包括:
子服务级别计算模块,用于计算分配给应用程序的资源集中的每个资源的服务级别;
服务级别计算单元,用于根据该资源集中的每个资源的服务级别计算应用程序在该资源集下运行时所能达到的服务级别;
效用值计算模块,用于根据应用程序的服务级别以及应用程序在该资源集下运行时所能达到的服务级别计算应用程序在不同资源集下运行时所能取得的效用值。
本发明实施例提供的云计算资源的调度装置可以应用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
实施例四
图4示出了本发明实施例四提供的云计算资源的调度装置的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该云计算资源的调度装置4是主节点中的软件单元、硬件单元或者软硬件结合的单元,该装置4中除了包括实施例三中的应用确定单元31、效用值计算单元32、第一资源集分配单元33、第一节点确定单元34和应用运行单元35,还包括效用偏差接收单元41和第二资源集分配单元42。
其中,效用偏差接收单元41,用于接收集群中各从节点发送的当前运行的各应用程序的效用偏差;
第二资源集分配单元42,用于根据所述效用偏差重新分配资源集给各应用程序。
本发明实施例提供的云计算资源的调度装置可以应用在前述对应的方法实施例二中,详情参见上述实施例二的描述,在此不再赘述。
实施例五
图5示出了本发明实施例五提供的云计算资源平台的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该云计算资源平台5包括主节点51,该主节点51中包括实施例三提供或者实施例四所提供的云计算资源的调度装置,该云计算资源平台5还包括与该主节点51连接的至少一个从节点52。
值得注意的是,上述装置实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。