CN105159782B - 基于云主机为订单分配资源的方法和装置 - Google Patents

基于云主机为订单分配资源的方法和装置 Download PDF

Info

Publication number
CN105159782B
CN105159782B CN201510542343.5A CN201510542343A CN105159782B CN 105159782 B CN105159782 B CN 105159782B CN 201510542343 A CN201510542343 A CN 201510542343A CN 105159782 B CN105159782 B CN 105159782B
Authority
CN
China
Prior art keywords
order
resource
pending
cloud host
stock number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510542343.5A
Other languages
English (en)
Other versions
CN105159782A (zh
Inventor
杨�一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201510542343.5A priority Critical patent/CN105159782B/zh
Publication of CN105159782A publication Critical patent/CN105159782A/zh
Application granted granted Critical
Publication of CN105159782B publication Critical patent/CN105159782B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了基于云主机为订单分配资源的方法和装置。所述方法的一具体实施方式包括:接收订单请求,订单请求包括订单需求的资源量;获取云主机的空闲资源总量,空闲资源总量包括空闲CPU数量和空闲内存总量;估算云主机的待执行订单队列所需求的资源量;基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单;如果是,则将订单请求中的订单添加至待执行订单队列;为待执行订单队列中的订单分配资源。该实施方式通过实时地主动收集云主机的可用资源,预测资源现状,提升了订单处理中的资源利用效率,从而提升了订单处理的成功率。

Description

基于云主机为订单分配资源的方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及云计算技术领域,尤其涉及基于云主机为订单分配资源的方法和装置。
背景技术
现有技术中,用户向云主机发出订单请求时,订单处理器在对订单请求中的订单内容进行解析后为订单分配资源,以执行订单。在订单执行过程中,订单处理器持续监控订单的执行状态,并及时反馈给用户。在处理大数据量的订单或资源需求较高的订单时,由于订单处理器未对不同机房中主机的资源利用情况进行主动搜集,因而常常会出现云主机资源分配无法满足订单需求的问题。由此导致在长时间等待后用户请求的订单处理失败,影响了订单处理的成功率。因此,需要提升订单处理中的资源利用效率,从而提升订单处理的成功率。
发明内容
有鉴于此,本申请提供了基于云主机为订单分配资源的方法和装置。
一方面,本申请提供了一种基于云主机为订单分配资源的方法,包括:接收订单请求,订单请求包括订单需求的资源量;获取云主机的空闲资源总量,空闲资源总量包括空闲CPU数量和空闲内存总量;估算云主机的待执行订单队列所需求的资源量;基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单;如果是,则将订单请求中的订单添加至待执行订单队列;为待执行订单队列中的订单分配资源。
另一方面,本申请提供了一种基于云主机为订单分配资源的装置,包括:接收单元,用于接收订单请求,订单请求包括订单需求的资源量;获取单元,用于获取云主机的空闲资源总量,空闲资源总量包括空闲CPU数量和空闲内存总量;估算单元,用于估算云主机的待执行订单队列所需求的资源量;判断单元,用于基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单;添加单元,用于响应于允许执行订单请求中的订单,将订单请求中的订单添加至待执行订单队列;分配单元,用于为待执行订单队列中的订单分配资源。
本申请提供的基于云主机为订单分配资源的方法和装置,通过实时地主动收集云主机的可用资源,预测资源现状,提升了订单处理中的资源利用效率,从而提升了订单处理的成功率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请基于云主机为订单分配资源的方法的一个实施例的流程图;
图2是本申请估算云主机的待执行订单队列所需求的资源量的方法的一个实施例的流程图;
图3是图1所示实施例的应用场景的示意图;
图4是本申请基于云主机为订单分配资源的方法的另一个实施例的流程图;
图5是图4所示实施例的应用场景的示意图;
图6是本申请基于云主机为订单分配资源的装置的一个实施例的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1,其示出了基于云主机为订单分配资源的方法的一个实施例的流程100。本实施例主要以该方法应用于公有的云计算服务中来说明。在公有的云弹性计算中,多个用户共享相同的资源池,由订单处理器来对用户的订单请求分配资源。所述基于云主机为订单分配资源的方法,包括以下步骤:
步骤101,接收订单请求。
在本实施例中,用户可以通过控制台向云主机发出订单请求,云主机可以通过网络接收订单请求。一般地,订单请求可以包括订单的项目、数量、类别、金额以及时间等信息。云主机可以接收这些信息,还可以将接收到的订单请求中的信息保存在存储器中,云主机可以为订单请求分配处理器来进行订单的处理和执行。
用户发出的订单请求可以包括订单需求的资源量。订单需求的资源量可以为订单所需求的CPU(Central Processing Unit,中央处理器)数量以及内存量,例如,订单需求的资源量可以为1CPU+2G内存,即处理该订单需要占用1个CPU和2G内存的资源量。
在一些实现中,云主机可以实时地监测是否有新的订单请求,在监测到订单请求时,接收订单请求。在另一些实现中,云主机可以定时地获取订单请求,例如可以每隔10秒执行一次接收,获取10秒内所有用户的订单请求。
步骤102,获取云主机的空闲资源总量。
其中,空闲资源总量包括空闲CPU数量和空闲内存总量。在本实施例中,可以通过计算一时间段内的资源释放量,结合已有的空闲资源量,来获取云主机空闲资源总量。在实际应用环境中,云主机可以提供的虚拟机的规格是确定的,例如虚拟机的规格可以为1CPU+1G内存、1CPU+2G内存、2CPU+4G内存、4CPU+8G内存等等。云主机的空闲资源总量可以用云主机所能创建的虚拟机数量来表示。举例而言,如果云主机的空闲资源可以提供10个2CPU+2G内存的虚拟机和5个4CPU+8G内存的虚拟机,则云主机的空闲资源至少为40CPU+60G内存。
在一些可选的实现方式中,可以分别获取云主机的每一个机房节点的空闲资源量,来确定云主机的空闲资源总量。具体地,可以收集与云主机关联的各独立主机的空闲CPU数量以及空闲内存量,作为云主机的空闲资源总量。其中,与云主机关联的各独立主机可以为提供云主机的公有云服务的不同机房中的各物理机。可选地,云主机可以通过Resource Agent(资源代理)来收集空闲CPU数量和空闲内存量。具体地,Resource Agent可以通过安装在各物理机上的代理进程对各物理机的CPU和内存量进行估算。各物理机通过代理进程将自身的空闲资源量反馈给Resource Agent,则可以获取云主机的空闲资源总量。
可选地,可以以预定周期收集不同机房反馈的资源余量,并进行记录。进一步地,在获取云主机的空闲CPU数量和空闲内存量之后,可以计算当前空闲的CPU数量和内存量所能创建的虚拟机的规格和对应的数量,作为云主机的空闲资源总量。
需要说明的是,不同机房的空闲资源量也可以用其所能创建的虚拟机数量来表示。例如,某一机房的空闲资源量为10CPU+40G内存,则该机房的空闲资源量还可以表示为10个1CPU+4G内存的虚拟机。将所有为云主机提供资源的机房所能创建的虚拟机数量和规格进行统计,则可以得到云主机的空闲资源总量。
步骤103,估算云主机的待执行订单队列所需求的资源量。
订单处理器在接收到订单请求后,可以将允许执行的订单保存在云主机的待执行订单队列中,之后为待执行订单队列中的订单分配资源。在接收到新的订单时,订单处理器可以对待执行订单队列所需求的资源量进行估算,确定云主机是否可以为新的订单请求中的订单分配资源。
具体地,可以按照如下方式快速地估算云主机的待执行订单队列所需求的资源量:首先获取待执行订单队列中的订单数量,然后确定待执行订单队列中资源需求量最大的订单,之后将资源需求量最大的订单所需求的资源乘以待执行订单队列中的订单数量,即可获取待执行订单队列所需求的资源量的大致估计。
在一些实施例中,还可以通过其他方式估算待执行订单队列需求的资源量。例如可以结合待执行订单队列中订单所需求的虚拟机的规格和数量以及云主机的空闲资源总量中虚拟机的规格和数量来估算待执行订单队列占用的云主机的虚拟机规格和对应的数量。在后面的实施例中,将详细描述云主机的待执行订单队列所需求的资源量的方法。
步骤104,基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单。
在估算出待执行订单队列所需求的资源总量之后,可以计算云主机在为待执行订单队列中的订单分配资源后的资源余量,之后判断资源余量是否可以满足订单请求中的订单。
在一些实施例中,可以判断待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和是否小于或等于云主机的空闲资源总量;如果是,则允许执行订单请求中的订单。进一步地,如果待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和大于云主机的空闲资源总量,则不允许执行订单请求中的订单。
以下举例说明如何判断是否允许执行订单请求中的订单。如果云主机的空闲资源总量可以提供10个2CPU+4G内存的虚拟机,而待执行订单队列所需求的资源总量为5个1CPU+4G内存的虚拟机和3个1CPU+1G内存的虚拟机,则云主机可以为订单请求中的订单分配的资源余量为2个2CPU+4G内存的虚拟主机。如果订单请求中的订单所需求的资源量为1个1CPU+2G内存的虚拟机,则待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和小于云主机的空闲资源总量,允许执行订单请求中的订单。而如果订单请求中的订单所需求的资源量为1个2CPU+8G内存的虚拟机,则待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和大于云主机的空闲资源总量,订单处理器无法为订单请求中的订单分配足够的资源,这时,订单处理器可以拒绝执行订单请求中的订单。
步骤105,如果是,则将订单请求中的订单添加至待执行订单队列。
在本实施例中,如果允许执行订单请求中的订单,则可以将订单请求中的订单添加至待执行订单队列。在一些可选的实现方式中,如果允许执行订单请求中的订单,还可以生成订单请求中的订单已被添加至待执行订单队列的消息,告知当前订单可执行。用户可以根据消息获知订单的资源分配状态。如果订单请求中的订单被拒绝,也可以生成订单处理失败的消息,告知用户当前云主机无法执行该订单。这样,用户可以实时地了解订单的处理状态,避免出现请求的订单在创建一段时间后,订单处理失败时,消耗系统资源导致订单处理效率低的问题。
步骤106,为待执行订单队列中的订单分配资源。
订单处理器可以为待执行订单队列中的订单分配相应的资源。具体地,可以为每一个订单分配大于或等于所需资源量的资源,例如可以为一个资源需求量为1个1CPU+2G内存的订单分配1个1CPU+2G内存的虚拟机,或1个2CPU+4G内存的虚拟机。在分配资源之前,可以进行资源的预分配,确定合理的资源分配方案之后再为订单分配资源。
在一些实现中,可以按照订单请求的时间依次为订单预分配资源。由于预分配资源时首先满足请求时间相对较早的订单,可能导致剩余的资源量无法满足请求时间相对较晚资源的订单。例如,空闲资源总量为5个4CPU+8G内存的虚拟机,2个8CPU+16G内存的虚拟机,以及1个16CPU+32G内存的虚拟机。待执行订单队列中包括8个订单。如果待执行订单队列中的前7个订单需求的资源量均为4CPU+8G内存,第8个订单需求的资源量为8CPU+32G内存的虚拟机,在资源预分配时,如果为前7个订单中的任意一个预分配了空闲资源总量中的16CPU+32G内存的虚拟机,则剩余的资源量无法满足第8个订单所需求的资源量,这时,订单处理器可以重新为订单队列中的订单预分配资源,调整资源分配策略,例如可以优先为资源需求量大的订单预分配资源。
在为待执行订单队列中的每一个订单预分配资源成功之后,可以按照预分配资源的策略对订单进行实际资源的分配。在实际应用中,可以将订单发送至提供对应资源的数据中心节点进行处理。
需要说明的是,订单处理器可以以预定周期重复执行上述步骤101-106,例如可以以5秒的周期接收新的订单请求,以30秒的周期重复获取云主机的空闲资源余量等。
在上述实施例所提供的基于云主机为订单分配资源的方法,通过实时地主动收集云主机的可用资源,预测资源现状,提升了订单处理中的资源利用效率,从而提升订单处理的成功率。
在一些实施例中,可以通过其他的方式来估算云主机的待执行订单队列所需求的资源量。请参考图2,其示出了本申请估算云主机的待执行订单队列所需求的资源量的方法的一个实施例的流程图200,也即示出了上述流程100中步骤103的一种具体实现的流程图。
如图2所示,估算云主机的待执行订单队列所需求的资源量的方法可以包括以下步骤:
步骤201,获取待执行订单队列中每一个订单所需求的资源量。
在本实施例中,可以获取待执行订单队列中每一个订单所需求的资源量。其中,每一个订单所需求的资源量可以由云主机从订单请求中获取。用户在向云主机发起订单请求时,可以告知所需求的虚拟机规格及数量,订单处理器可以从订单请求中提取每一个订单所需求的虚拟机规格及数量。
步骤202,将每一个订单所需求的资源量进行累加,得到待执行订单队列所需求的资源量。
云主机的空闲资源余量可以包括多种规格的虚拟机,每一种规格的虚拟机的数量是一定的。在本实施例中,每一个订单所需求的资源量可以为其所占用的虚拟机的规格和数量。可以按照多种方法对订单所需求的资源量进行累加。
一种可选的方法为按照“悲观方式”来进行累加。“悲观方式”可以为资源占用率最低的方式。具体地,可以按照随机顺序对待执行订单队列中的订单分别计算每一种虚拟机规格的占用量。例如,当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为一个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为1个4CPU+8G内存的虚拟机,这时云主机剩余空闲资源量为4个4CPU+8G内存的虚拟机。当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为1个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为1个8CPU+16G内存的虚拟机,这时云主机剩余空闲资源量为5个4CPU+8G内存以及1个8CPU+16G内存的虚拟机。当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机、2个8CPU+16G内存的虚拟机以及1个16CPU+32G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为1个4CPU+8G内存的虚拟机,按照悲观方式计算,该订单所需求的资源量为1个16CPU+32G内存的虚拟机,这时云主机剩余空闲资源量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机。按照如上的方式确定每一个订单所需求的虚拟机的规格和数量,并将相同规格的虚拟机进行累加,即可得到“悲观方式”下待执行订单队列所需求的资源量。
另一种可选的方式为按照优先占满物理机的策略进行资源需求总量的估算。即按照资源占用率最大的方式对每一个订单所需求的资源量进行累加。例如,当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为1个4CPU+8G内存的虚拟机,按照优先占满物理机的策略,该订单所需求的资源量为1个4CPU+8G内存的虚拟机,这时云主机剩余空闲资源量为4个4CPU+8G内存以及2个8CPU+16G内存的虚拟机。当云主机的空闲资源余量为5个4CPU+8G内存的虚拟机、2个8CPU+16G内存的虚拟机以及1个16CPU+32G内存的虚拟机时,如果待执行订单队列中的一个订单要求的资源量为1个4CPU+8G内存的虚拟机以及1个8CPU+32G内存的虚拟机,按照优先占满物理机的策略,该订单所需求的资源量为1个4CPU+8G内存的虚拟机以及1个16CPU+32G内存的虚拟机,这时云主机剩余空闲资源量为4个4CPU+8G内存的虚拟机以及2个8CPU+16G内存的虚拟机。按照这种方式依次确定待执行订单队列中的订单所需求的虚拟机规格和数量,并将相同规格的虚拟机进行累加,即可得到“优先占满物理机”策略下待执行订单队列所需求的资源量。
在一些实施例中,需要结合两种方式来估算待执行订单队列所需求的资源量。具体地,可以先计算按照“悲观方式”估算得出的待执行订单队列所需求的资源量与订单请求中的订单所需求的资源量之和是否小于或等于云主机空闲资源总量,如果是,则可以直接确定允许执行订单请求中的订单。如果否,可以重新计算按照“优先占满物理机”的策略重新估算出的待执行订单队列所需求的资源总量与订单请求中的订单所需求的资源量之和是否小于或等于云主机空闲资源总量,如果是,则也可以确定允许执行订单请求中的订单。如果否,则可以拒绝执行订单请求中的订单。
上述结合图2所描述的实施例中,可以通过多种方式估算待执行订单队列所需求的资源量,结合流程100中的步骤104确定订单是否被允许执行,进一步提升了资源利用率和订单处理的成功率。
进一步参考图3,图3是图1所示实施例的应用场景的示意图。如图3所示,用户可以通过控制台确定订单的内容,控制台可以基于用户确定的订单内容向订单分配处理器发出订单请求。订单分配处理器可以接收包含新订单的订单请求。同时,订单分配处理器可以从第一机房、第二机房、第三机房等多个机房的代理(Agent)获取各机房的资源量,并根据获取的资源量判断是否允许执行订单请求中的新订单,如果判断结果为是,则将新订单添加至待执行订单队列,并向第一机房、第二机房或第三机房等发送订单,以分别处理待执行订单队列中的订单。在此过程中,订单分配处理器可以以预定时间周期获取各机房的资源量,对云主机的空闲资源总量进行更新,以提升资源利用率。
请参考图4,其示出了本申请基于云主机为订单分配资源的方法的另一个实施例的流程图400。如图4所示,该基于云主机为订单分配资源的方法400可以包括以下步骤:
步骤401,接收订单请求。
在本实施例中,用户可以通过控制台向云主机发出订单请求,云主机可以通过网络接收订单请求。一般地,订单请求可以包括订单的项目、数量、类别、金额以及时间等信息。云主机可以接收这些信息,还可以将接收到的订单请求中的信息保存在存储器中,云主机可以为订单请求分配处理器来进行订单的处理和执行。
用户发出的订单请求中可以包括订单需求的资源量。订单需求的资源量可以为订单所需求的CPU数量以及内存量,例如,订单需求的资源量可以为1CPU+2G内存,即处理该订单需要占用1个CPU和2G内存的资源量。
步骤402,获取云主机的空闲资源总量。
其中,空闲资源总量包括空闲CPU数量和空闲内存总量。在本实施例中,可以通过计算一时间段内的资源释放量,结合已有的空闲资源量,来获取云主机空闲资源总量。在实际应用环境中,云主机的空闲资源总量可以用云主机所能创建的虚拟机数量来表示。举例而言,如果云主机的空闲资源可以提供10个2CPU+2G内存的虚拟机和5个4CPU+8G内存的虚拟机,则云主机的空闲资源至少为40CPU+60G内存。
步骤403,估算云主机的待执行订单队列所需求的资源量。
在接收到新的订单时,订单处理器可以对待执行订单队列所需求的资源量进行估算,确定云主机是否可以为新的订单请求中的订单分配资源。具体地,订单处理器可以将资源需求量最大的订单所需求的资源乘以待执行订单队列中的订单数量,得出待执行订单队列所需求的资源量的大致估计。在一些实施例中,订单处理器还可以按照上述“悲观方式”或优先占满物理机的策略估算云主机的待执行订单队列。在“悲观方式”中,订单处理器可以以资源占用率最低的方式对待执行订单队列中每一个订单所需求的虚拟机的规格和数量进行统计;在优先占满物理机的策略中,订单处理器可以按照资源占用率最大的方式对每一个订单所需求的虚拟机的规格和数量进行统计。
步骤404,基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单。
在估算出待执行订单队列所需求的资源总量之后,可以计算云主机在为待执行订单队列中的订单分配资源后的资源余量,之后判断资源余量是否可以满足订单请求中的订单。
在一些实施例中,可以判断待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和是否小于或等于云主机的空闲资源总量;如果是,则允许执行订单请求中的订单。进一步地,如果待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和大于云主机的空闲资源总量,则不允许执行订单请求中的订单。
步骤405,如果是,基于发出订单请求的用户的历史支付数据和用户的当前资源利用率确定用户的优先级。
在本实施例中,订单处理器可以根据用户的历史支付数据,例如消费总额或平均额、成功消费的次数以及消费频率动态地确定用户的优先级。例如可以设置抢占、优先和普通三个用户等级,当用户消费总额或消费频率超过第一阈值时,确定用户的优先级为抢占,当消费总额位于第一阈值到第二阈值之间时,确定用户的优先级为优先,当消费总额低于第二阈值时,确定用户的优先级为普通。
还可以结合用户当前的资源利用率确定用户的优先级。每个用户所占用的云主机的资源可能是不同的。在本实施例中,可以计算每个用户所发出的订单请求中的订单在当前所占用的虚拟机规格和数量,计算其资源利用率,根据资源利用率来确定用户的优先级。例如可以将资源利用率位于某一区间内的用户的优先级确定为优先,将资源利用率高于该区间的用户的优先级确定为抢占,将资源利用率低于该区间的用户的优先级确定为普通。
可选地,还可以结合用户的资源占用率来确定用户的优先级。例如,当用户的资源占用率较高时,可以将用户的优先级设置为普通或优先,当用户的资源占用率较低时,可以将用户的游先生及设置为优先或抢占。
进一步地,还可以结合管理员的配置来设置用户的优先级。例如,管理员可以为用户设置优先级。这时,可以不考虑用户的历史支付数据和资源利用率,直接将用户的优先级确定为管理员设置的优先级。
可选地,订单处理器可以以一定周期来更新用户的优先级,例如可以结合用户的历史支付数据和资源利用率每天动态计算出用户的优先级。进一步地,还可以结合管理员的配置和用户的资源占用率,确定每一个用户的优先级。
步骤406,将待执行订单队列划分为与用户的优先级对应的多个子队列。
在本实施例中,可以将待执行订单的队列划分为与用户优先级对应的多个子队列。例如当用户优先级包括抢占、优先、普通三个级别时,待执行订单队列可以包括抢占子队列、优先子队列和普通子队列。
步骤407,将订单请求中的订单添加至待执行订单队列。
订单处理器可以将允许执行的订单请求中的订单添加至待执行订单队列。在一些可选的实现方式中,可以按照如下方式添加订单至待执行订单队列:根据用户的优先级确定订单请求中订单的优先级;将订单请求中的订单添加至与订单的优先级对应的子队列,即可以根据提交订单的用户的优先级,确定订单的优先级,然后将订单添加至对应优先级的子队列中。例如,当用户优先级为抢占时,用户提交的订单可以被添加至抢占子队列。在分配资源时,优先为抢占子队列中的订单分配资源。
在一些可选的实现方式中,订单处理器还可以以预定周期执行以下操作:调整订单的优先级,将订单从调整前的优先级对应的子队列删除,并添加至调整后的优先级对应的子队列。为了防止在资源紧张状态下高优先级的用户耗尽云主机的资源,可以在订单添加至对应优先级的队列的预定时间之后,调整订单的优先级,例如可以将优先子队列中的订单的优先级调整为普通,并将订单从优先子队列中调整至普通子队列中。可选地,对于管理员配置在最高优先级(例如抢占)的用户,可以不调整该用户发出的订单的优先级,保证抢占用户的优先权。进一步地,在调整订单优先级之后的另一预定时间之后,可以恢复订单在调整之前的优先级,并将订单调整回到原来的子队列中,例如可以在1小时后将优先级为优先的用户的订单调整回优先子队列中。
步骤408,按照用户的优先级依次为对应的子队列中的订单分配资源。
在本实施例中,订单处理器可以按照待执行订单队列的优先级依次为订单分配资源,例如可以按照抢占子队列>优先子队列>普通子队列的顺序进行订单资源的申请和分配。可选地,可以为每一个订单分配大于或等于所需资源量的资源,例如可以为一个资源需求量为1个1CPU+2G内存的订单分配1个1CPU+2G内存的虚拟机,或1个2CPU+4G内存的虚拟机。在分配资源之前,可以进行资源的预分配,确定合理的资源分配方案之后再为订单分配资源。
在本实施例中,上述实现流程中的步骤401、步骤402、步骤403和步骤404分别与前述实施例中的步骤101、步骤102、步骤103和步骤104相同,在此不再赘述。
从图4中可以看出,与图1对应的实施例不同的是,本实施例中的基于云主机为订单分配资源的方法的流程400多出了确定用户优先级的步骤405和划分子队列的步骤406。通过增加的步骤405和406,本实施例表述的方案实现了对不同级别的用户的订单区分处理,有助于实现云主机资源分配的效率的最大化。
需要说明的是,上述实施例中以特定顺序描述了基于云主机为订单分配资源的方法的流程,在一些实施例中,一些步骤可以同时执行,例如可以同时执行上述流程400中的步骤402和步骤406,在另一些实施例中,还可以先执行步骤406,再执行步骤402,确定用户优先级之后再获取云主机的空闲资源总量,本申请对方法中各步骤的执行顺序并未限定。
进一步参考图5,示出了图4所示实施例的应用场景的示意图。
如图5所示,订单创建和分配的流程如下:用户可以通过控制台提交订单,控制台可以向订单处理器发出订单请求。订单处理器可以从代理(Agent)定期收集各机房当前的资源量。所收集的资源量可以包括当前可提供的虚拟机规格和对应的数量。订单处理器可以从接收到的订单请求中提取新订单,按照当前空闲资源总量和待执行订单队列所需求的资源总量进行评估,判断是否允许执行新订单。同时,订单处理器可以根据用户的历史订单和当前资源利用率确定用户的优先级。可以每天将全部用户进行优先级标记,对于当天新增的用户,可以按照最低级别的优先级处理。在确定允许执行新订单和提交该新订单的用户的优先级之后,订单处理器可以将新订单放入对应优先级的队列中,例如抢占队列、优先队列或普通队列,之后可以通过扫描不同队列中的订单依次将订单发送至对应的机房进行资源分配。
请参考图6,其示出了本申请基于云主机为订单分配资源的装置600的一个实施例的结构示意图。
如图6所示,本实施例所述的基于云主机为订单分配资源的装置600包括:接收单元601、获取单元602、估算单元603、判断单元604、添加单元605以及分配单元606。其中,接收单元601可以用于接收订单请求,该订单请求包括所述订单需求的资源量。获取单元602可以用于获取云主机的空闲资源总量,该云主机的空闲资源总量包括空闲CPU数量和空闲内存总量。估算单元603可以用于估算云主机的待执行订单队列所需求的资源量。判断单元604可以用于基于云主机的空闲资源总量、云主机的待执行订单队列所需求的资源量以及订单请求中的订单需求的资源量确定是否允许执行订单请求中的订单。添加单元605可以用于响应于允许执行订单请求中的订单,将订单请求中的订单添加至待执行订单队列。分配单元606可以用于为待执行订单队列中的订单分配资源。
在本实施例中,接收单元601可以通过网络接收用户提交的订单请求。可选地,在接收到订单请求之后,可以提取其中的信息,例如订单内容、订单所需求的资源量、订单请求时间等,保存在存储器中。
在本实施例中,获取单元602可以通过收集与云主机关联的各独立主机的空闲CPU数量以及空闲内存量,作为云主机的空闲资源总量。具体地,获取单元602可以通过Resource Agent来收集各机房内物理机的空闲CPU数量和空闲内存量。
在本实施例中,估算单元603可以将待执行订单队列中资源需求量最大的订单所需求的资源乘以待执行订单队列中的订单数量,即可获取待执行订单队列所需求的资源量的大致估计。进一步地,还可以根据结合图2所描述的实施例中的多种方法估算待执行订单队列需求的资源量。
在本实施例中,判断单元604可以判断待执行订单队列所需求的资源量与订单请求中的订单需求的资源量之和是否小于或等于云主机的空闲资源总量;如果是,则允许执行订单请求中的订单。
在本实施例中,添加单元605可以将允许执行的订单添加至待执行订单队列中。可选地,还可以生成订单被允许或拒绝的消息,告知用户订单处理的状态。
在本实施例中,分配单元606可以首先对待执行订单队列中的订单进行资源预分配,确定合理的资源分配策略后,为每一个订单分配大于或等于所需资源量的资源。
在本实施例的一个可选实施方式中,上述基于云主机为订单分配资源的装置600还包括:确定单元以及划分单元(未示出),该确定单元可以用于基于发出订单请求的用户的历史支付数据和所述用户的当前资源利用率确定用户的优先级,该划分单元可以用于将待执行订单队列划分为与用户的优先级对应的多个子队列。这时,添加单元605可以根据用户的优先级确定接收单元601所接收到的订单请求中的订单的优先级,将该订单添加至与该订单的优先级对应的子队列中。
装置600中记载的诸单元或模块与参考图1和图4描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于装置600及其中包含的单元,在此不再赘述。装置600中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
本领域技术人员可以理解,上述基于云主机为订单分配资源的装置600还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图6中未示出。
本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、获取单元、估算单元、判断单元、添加单元以及分配单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“用于接收订单请求的单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。所述计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的基于云主机为订单分配资源的方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (14)

1.一种基于云主机为订单分配资源的方法,其特征在于,所述方法包括:
接收订单请求,所述订单请求包括所述订单需求的资源量;
获取所述云主机的空闲资源总量,所述空闲资源总量包括空闲CPU数量和空闲内存总量;
估算所述云主机的待执行订单队列所需求的资源量;
基于所述云主机的空闲资源总量、所述云主机的待执行订单队列所需求的资源量以及所述订单请求中的订单需求的资源量确定是否允许执行所述订单请求中的订单;
如果是,则将所述订单请求中的订单添加至所述待执行订单队列;
为所述待执行订单队列中的订单分配资源;
其中,所述基于所述云主机的空闲资源总量、所述云主机的待执行订单队列所需求的资源量以及所述订单请求中的订单需求的资源量确定是否允许执行所述订单请求中的订单,包括:
判断所述待执行订单队列所需求的资源量与所述订单请求中的订单需求的资源量之和是否小于或等于所述云主机的空闲资源总量;
如果是,则允许执行所述订单请求中的订单;
如果所述待执行订单队列所需求的资源量与所述订单请求中的订单需求的资源量之和大于所述云主机的空闲资源总量,则不允许执行所述订单请求中的订单。
2.根据权利要求1所述的方法,其特征在于,所述获取所述云主机的空闲资源总量,包括:
收集与所述云主机关联的各独立主机的空闲CPU数量以及空闲内存量,作为所述云主机的空闲资源总量。
3.根据权利要求1或2所述的方法,其特征在于,所述估算所述云主机的待执行订单队列所需求的资源量,包括:
获取所述待执行订单队列中每一个订单所需求的资源量;
将所述每一个订单所需求的资源量进行累加,得到所述待执行订单队列所需求的资源量;以及
所述为所述待执行订单队列中的订单分配资源,包括:
为所述待执行订单队列中的每一个订单分配大于或等于所述每一个订单所需求的资源量的资源。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于发出所述订单请求的用户的历史支付数据和所述用户的当前资源利用率确定所述用户的优先级。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:将所述待执行订单队列划分为与用户的优先级对应的多个子队列。
6.根据权利要求5所述的方法,其特征在于,所述将所述订单请求中的订单添加至所述待执行订单队列中,包括:
根据用户的优先级确定所述订单请求中订单的优先级;
将所述订单请求中的订单添加至与所述订单的优先级对应的子队列;以及
所述为所述待执行订单队列中的订单分配资源,包括:
按照所述用户的优先级依次为对应的子队列中的订单分配资源。
7.根据权利要求6所述的方法,其特征在于,所述将所述订单请求中的订单添加至所述待执行订单队列中,还包括:
以预定周期执行以下操作:
调整所述订单的优先级;
将所述订单从调整前的优先级对应的子队列删除,并添加至调整后的优先级对应的子队列。
8.一种基于云主机为订单分配资源的装置,其特征在于,所述装置包括:
接收单元,用于接收订单请求,所述订单请求包括所述订单需求的资源量;
获取单元,用于获取所述云主机的空闲资源总量,所述空闲资源总量包括空闲CPU数量和空闲内存总量;
估算单元,用于估算所述云主机的待执行订单队列所需求的资源量;
判断单元,用于基于所述云主机的空闲资源总量、所述云主机的待执行订单队列所需求的资源量以及所述订单请求中的订单需求的资源量确定是否允许执行所述订单请求中的订单;
添加单元,用于响应于允许执行所述订单请求中的订单,将所述订单请求中的订单添加至所述待执行订单队列;
分配单元,用于为所述待执行订单队列中的订单分配资源;
其中,所述判断单元用于按如下方式确定是否允许执行所述订单请求中的订单:
判断所述待执行订单队列所需求的资源量与所述订单请求中的订单需求的资源量之和是否小于或等于所述云主机的空闲资源总量;
如果是,则允许执行所述订单请求中的订单;
如果所述待执行订单队列所需求的资源量与所述订单请求中的订单需求的资源量之和大于所述云主机的空闲资源总量,则不允许执行所述订单请求中的订单。
9.根据权利要求8所述的装置,其特征在于,所述获取单元用于按如下方式获取所述云主机的空闲资源总量:
收集与所述云主机关联的各独立主机的空闲CPU数量以及空闲内存量,作为所述云主机的空闲资源总量。
10.根据权利要求8或9所述的装置,其特征在于,所述估算单元用于按如下方式估算所述云主机的待执行订单队列所需求的资源量:
获取所述待执行订单队列中每一个订单所需求的资源量;
将所述每一个订单所需求的资源量进行累加,得到所述待执行订单队列所需求的资源量;以及
所述为所述待执行订单队列中的订单分配资源,包括:
为所述待执行订单队列中的每一个订单分配大于或等于所述每一个订单所需求的资源量的资源。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
确定单元,用于基于发出所述订单请求的用户的历史支付数据和所述用户的当前资源利用率确定所述用户的优先级。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
划分单元,用于将所述待执行订单队列划分为与用户的优先级对应的多个子队列。
13.根据权利要求12所述的装置,其特征在于,所述添加单元用于按如下方式将所述订单请求中的订单添加至所述待执行订单队列中:
根据用户的优先级确定所述订单请求中订单的优先级;
将所述订单请求中的订单添加至与所述订单的优先级对应的子队列;以及
所述为所述待执行订单队列中的订单分配资源,包括:
按照所述用户的优先级依次为对应的子队列中的订单分配资源。
14.根据权利要求13所述的装置,其特征在于,所述添加单元还用于以预定周期执行以下操作:
调整所述订单的优先级;
将所述订单从调整前的优先级对应的子队列删除,并添加至调整后的优先级对应的子队列。
CN201510542343.5A 2015-08-28 2015-08-28 基于云主机为订单分配资源的方法和装置 Active CN105159782B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510542343.5A CN105159782B (zh) 2015-08-28 2015-08-28 基于云主机为订单分配资源的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510542343.5A CN105159782B (zh) 2015-08-28 2015-08-28 基于云主机为订单分配资源的方法和装置

Publications (2)

Publication Number Publication Date
CN105159782A CN105159782A (zh) 2015-12-16
CN105159782B true CN105159782B (zh) 2018-11-02

Family

ID=54800645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510542343.5A Active CN105159782B (zh) 2015-08-28 2015-08-28 基于云主机为订单分配资源的方法和装置

Country Status (1)

Country Link
CN (1) CN105159782B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630604A (zh) * 2015-12-18 2016-06-01 国云科技股份有限公司 一种基于sla的多租户虚拟机资源分配方法
CN107147610B (zh) * 2016-03-01 2020-05-05 阿里巴巴集团控股有限公司 资源的处理方法及装置
CN107203918A (zh) * 2016-03-18 2017-09-26 北京京东尚科信息技术有限公司 订单处理方法和装置
CN107402939B (zh) * 2016-05-20 2020-06-09 平安科技(深圳)有限公司 保单处理方法和装置
CN107527250B (zh) * 2016-06-20 2021-02-05 腾讯科技(北京)有限公司 一种订单管理方法及服务器
CN107872499B (zh) * 2016-09-28 2021-05-25 北京金山云网络技术有限公司 业务创建方法、装置及系统
CN106444643B (zh) * 2016-09-30 2018-09-07 华中科技大学 一种订单分派调度与混合产品排序系统及方法
CN106504076A (zh) * 2016-11-23 2017-03-15 杭州先手科技有限公司 分布式订单处理方法、装置及订单处理系统
CN108122145A (zh) * 2016-11-28 2018-06-05 阿里巴巴集团控股有限公司 一种云计算商品的生产方法及装置、电子设备
CN108241531A (zh) * 2016-12-23 2018-07-03 阿里巴巴集团控股有限公司 一种在集群中为虚拟机分配资源的方法和装置
CN108279974B (zh) * 2017-01-06 2022-07-19 阿里巴巴集团控股有限公司 一种云资源分配方法及装置
CN106960249B (zh) * 2017-02-10 2021-07-23 上海蔚来汽车有限公司 补能下单过程中的智能资源分配方法与系统
CN106897920A (zh) * 2017-02-28 2017-06-27 郑州云海信息技术有限公司 一种业务流程自动审批方法及系统
CN110135925B (zh) * 2018-02-08 2023-09-26 北京京东尚科信息技术有限公司 订单处理系统、方法和装置
CN110858161B (zh) * 2018-08-24 2023-05-12 阿里巴巴集团控股有限公司 资源分配方法、装置、系统、设备和介质
CN109389306B (zh) * 2018-09-30 2021-01-26 中国联合网络通信集团有限公司 一种用户订单的同步方法和装置
CN109582592B (zh) * 2018-10-26 2021-06-15 华为技术有限公司 资源管理的方法和装置
CN113168342B (zh) * 2018-11-19 2023-12-26 阿里云计算有限公司 用于提供资源的方法和设备、计算机可读存储介质
CN109379235B (zh) * 2018-11-27 2019-08-30 无锡华云数据技术服务有限公司 基于高并发请求场景创建云主机的方法
CN110012507B (zh) * 2019-04-02 2021-01-26 华南理工大学 一种用户体验优先的车联网资源分配方法及系统
CN110009421B (zh) * 2019-04-04 2022-02-11 杭州朗和科技有限公司 云计算虚拟资源的单价确定方法、介质、装置和计算设备
CN110162402B (zh) * 2019-05-27 2021-04-02 眸芯科技(上海)有限公司 集成电路稀缺资源的使用方法及系统
CN113127185B (zh) * 2019-12-31 2023-11-10 北京懿医云科技有限公司 任务执行队列处理方法及装置、存储介质、电子设备
TWI770470B (zh) * 2020-02-20 2022-07-11 中華電信股份有限公司 電信訂單快速受理系統與方法
CN111752706B (zh) * 2020-05-29 2024-05-17 北京沃东天骏信息技术有限公司 资源配置方法、装置及存储介质
CN112766748B (zh) * 2021-01-22 2024-06-07 北京嘀嘀无限科技发展有限公司 一种调整服务资源的方法、装置、设备、介质和产品
CN116503138B (zh) * 2023-05-04 2023-10-31 杭州妙壹科技有限公司 一种基于异步编程的话费充值订单调度方法与系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605567A (zh) * 2013-10-29 2014-02-26 河海大学 面向实时性需求变化的云计算任务调度方法
US8767535B2 (en) * 2007-07-11 2014-07-01 Hewlett-Packard Development Company, L.P. Dynamic feedback control of resources in computing environments
CN104657214A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于多队列和多优先级的大数据任务管理系统和方法
CN104735095A (zh) * 2013-12-18 2015-06-24 中国移动通信集团四川有限公司 一种云计算平台作业调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8767535B2 (en) * 2007-07-11 2014-07-01 Hewlett-Packard Development Company, L.P. Dynamic feedback control of resources in computing environments
CN103605567A (zh) * 2013-10-29 2014-02-26 河海大学 面向实时性需求变化的云计算任务调度方法
CN104735095A (zh) * 2013-12-18 2015-06-24 中国移动通信集团四川有限公司 一种云计算平台作业调度方法及装置
CN104657214A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于多队列和多优先级的大数据任务管理系统和方法

Also Published As

Publication number Publication date
CN105159782A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
CN105159782B (zh) 基于云主机为订单分配资源的方法和装置
CN107239336B (zh) 一种实现任务调度的方法及装置
CN112269641B (zh) 一种调度方法、装置、电子设备及存储介质
CN107688492B (zh) 资源的控制方法、装置和集群资源管理系统
CN107590002A (zh) 任务分配方法、装置、存储介质、设备及分布式任务系统
CN109788046B (zh) 一种基于改进蜂群算法的多策略边缘计算资源调度方法
CN107273211B (zh) 一种云计算环境下基于虚拟机的数据处理方法
CN110991808B (zh) 一种任务分配方法和装置
WO2013107012A1 (zh) 分布式计算任务处理系统和任务处理方法
CN106161485B (zh) 一种基础服务集群的资源调度方法、装置和系统
CN107682417B (zh) 一种数据节点的任务分配方法和装置
CN106330987A (zh) 动态负荷均衡方法
CN106257893A (zh) 存储服务器任务响应方法、客户端、服务器及系统
JP7174764B2 (ja) リソーススケジューリング方法、機器、システム、ならびにセンタサーバ
JP6519111B2 (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
CN110502321A (zh) 一种资源调度方法及系统
CN110914805A (zh) 用于分层任务调度的计算系统
Liu et al. Deadline guaranteed service for multi-tenant cloud storage
CN113535398B (zh) 资源分配调整方法、装置、电子设备和可读存储介质
CN113992586B (zh) 流量控制方法、装置、计算机设备和存储介质
JP6721800B2 (ja) 協調分散システム、協調分散管理装置、協調分散方法、及びプログラム
de Oliveira et al. Acosched: A scheduling algorithm in a federated cloud infrastructure for bioinformatics applications
TWI296387B (en) Scheduling method for remote object procedure call and system thereof
CN115168017B (zh) 一种任务调度云平台及其任务调度方法
JP2004046372A (ja) 分散処理システム、リソース割当方法およびプログラムならびにリソース割当プログラムが記録された記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant