基于云主机为订单分配资源的方法和装置的制造方法_2

文档序号:8942941阅读:来源:国知局
单队列需求的资源量。例如可以结合待执行订单队列中订单所需求的虚拟机的规格和数量以及云主机的空闲资源总量中虚拟机的规格和数量来估算待执行订单队列占用的云主机的虚拟机规格和对应的数量。在后面的实施例中,将详细描述云主机的待执行订单队列所需求的资源量的方法。
[0030]步骤104,基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单。
[0031]在估算出待执行订单队列所需求的资源总量之后,可以计算云主机在为待执行订单队列中的订单分配资源后的资源余量,之后判断资源余量是否可以满足订单请求中的订单。
[0032]在一些实施例中,可以判断待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和是否小于或等于云主机的空闲资源总量;如果是,则允许执行订单请求中的订单。进一步地,如果待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和大于云主机的空闲资源总量,则不允许执行订单请求中的订单。
[0033]以下举例说明如何判断是否允许执行订单请求中的订单。如果云主机的空闲资源总量可以提供10个2CPU+4G内存的虚拟机,而待执行订单队列所需求的资源总量为5个1CPU+4G内存的虚拟机和3个1CPU+1G内存的虚拟机,则云主机可以为订单请求中的订单分配的资源余量为2个2CPU+4G内存的虚拟主机。如果订单请求中的订单所需求的资源量为I个1CPU+2G内存的虚拟机,则待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和小于云主机的空闲资源总量,允许执行订单请求中的订单。而如果订单请求中的订单所需求的资源量为I个2CPU+8G内存的虚拟机,则待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和大于云主机的空闲资源总量,订单处理器无法为订单请求中的订单分配足够的资源,这时,订单处理器可以拒绝执行订单请求中的订单。
[0034]步骤105,如果是,则将订单请求中的订单添加至待执行订单队列。
[0035]在本实施例中,如果允许执行订单请求中的订单,则可以将订单请求中的订单添加至待执行订单队列。在一些可选的实现方式中,如果允许执行订单请求中的订单,还可以生成订单请求中的订单已被添加至待执行订单队列的消息,告知当前订单可执行。用户可以根据消息获知订单的资源分配状态。如果订单请求中的订单被拒绝,也可以生成订单处理失败的消息,告知用户当前云主机无法执行该订单。这样,用户可以实时地了解订单的处理状态,避免出现请求的订单在创建一段时间后,订单处理失败时,消耗系统资源导致订单处理效率低的问题。
[0036]步骤106,为待执行订单队列中的订单分配资源。
[0037]订单处理器可以为待执行订单队列中的订单分配相应的资源。具体地,可以为每一个订单分配大于或等于所需资源量的资源,例如可以为一个资源需求量为I个1CPU+2G内存的订单分配I个1CPU+2G内存的虚拟机,或I个2CPU+4G内存的虚拟机。在分配资源之前,可以进行资源的预分配,确定合理的资源分配方案之后再为订单分配资源。
[0038]在一些实现中,可以按照订单请求的时间依次为订单预分配资源。由于预分配资源时首先满足请求时间相对较早的订单,可能导致剩余的资源量无法满足请求时间相对较晚资源的订单。例如,空闲资源总量为5个4CPU+8G内存的虚拟机,2个8CPU+16G内存的虚拟机,以及I个16CPU+32G内存的虚拟机。待执行订单队列中包括8个订单。如果待执行订单队列中的前7个订单需求的资源量均为4CPU+8G内存,第8个订单需求的资源量为8CPU+32G内存的虚拟机,在资源预分配时,如果为前7个订单中的任意一个预分配了空闲资源总量中的16CPU+32G内存的虚拟机,则剩余的资源量无法满足第8个订单所需求的资源量,这时,订单处理器可以重新为订单队列中的订单预分配资源,调整资源分配策略,例如可以优先为资源需求量大的订单预分配资源。
[0039]在为待执行订单队列中的每一个订单预分配资源成功之后,可以按照预分配资源的策略对订单进行实际资源的分配。在实际应用中,可以将订单发送至提供对应资源的数据中心节点进行处理。
[0040]需要说明的是,订单处理器可以以预定周期重复执行上述步骤101-106,例如可以以5秒的周期接收新的订单请求,以30秒的周期重复获取云主机的空闲资源余量等。
[0041]在上述实施例所提供的基于云主机为订单分配资源的方法,通过实时地主动收集云主机的可用资源,预测资源现状,提升了订单处理中的资源利用效率,从而提升订单处理的成功率。
[0042]在一些实施例中,可以通过其他的方式来估算云主机的待执行订单队列所需求的资源量。请参考图2,其示出了本申请估算云主机的待执行订单队列所需求的资源量的方法的一个实施例的流程图200,也即示出了上述流程100中步骤103的一种具体实现的流程图。
[0043]如图2所示,估算云主机的待执行订单队列所需求的资源量的方法可以包括以下步骤:
[0044]步骤201,获取待执行订单队列中每一个订单所需求的资源量。
[0045]在本实施例中,可以获取待执行订单队列中每一个订单所需求的资源量。其中,每一个订单所需求的资源量可以由云主机从订单请求中获取。用户在向云主机发起订单请求时,可以告知所需求的虚拟机规格及数量,订单处理器可以从订单请求中提取每一个订单所需求的虚拟机规格及数量。
[0046]步骤202,将每一个订单所需求的资源量进行累加,得到待执行订单队列所需求的资源量。
[0047]云主机的空闲资源余量可以包括多种规格的虚拟机,每一种规格的虚拟机的数量是一定的。在本实施例中,每一个订单所需求的资源量可以为其所占用的虚拟机的规格和数量。可以按照多种方法对订单所需求的资源量进行累加。
[0048]—种可选的方法为按照“悲观方式”来进行累加。“悲观方式”可以为资源占用率最低的方式。具体地,可以按照随机顺序对待执行订单队列中的订单分别计算每一种虚拟机规格的占用量。例如,当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为一个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为I个4CPU+8G内存的虚拟机,这时云主机剩余空闲资源量为4个4CPU+8G内存的虚拟机。当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为I个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为I个8CPU+16G内存的虚拟机,这时云主机剩余空闲资源量为5个4CPU+8G内存以及I个8CPU+16G内存的虚拟机。当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机、2个8CPU+16G内存的虚拟机以及I个16CPU+32G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为I个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为I个16CPU+32G内存的虚拟机,这时云主机剩余空闲资源量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机。按照如上的方式确定每一个订单所需求的虚拟机的规格和数量,并将相同规格的虚拟机进行累加,即可得到“悲观方式”下待执行订单队列所需求的资源量。
[0049]另一种可选的方式为按照优先占满物理机的策略进行资源需求总量的估算。即按照资源占用率最大的方式对每一个订单所需求的资源量进行累加。例如,当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为I个4CPU+8G内存的虚拟机,按照优先占满物理机的策略,该订单所需求的资源量为I个4CPU+8G内存的
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1