发明内容
本公开实施例至少提供一种资源分配方法及装置。
第一方面,本公开实施例提供了一种资源分配方法,包括:
接收资源分配请求;
获取资源管理器中存储的数据表的数据快照,其中,所述数据表中包括多个节点管理器对应的可分配的资源信息;
在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,对当前所述资源管理器中的数据表进行锁定;
基于锁定的数据表,确定是否执行所述资源分配结果,若是,则基于所述资源分配结果进行资源分配。
一种可能的实施方式中,所述基于锁定的数据表,确定是否执行所述资源分配结果,包括:
基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
基于所述锁定的数据表中多个节点管理器对应的可分配的资源信息、以及所述数据快照中对应的多个节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第一更新资源信息;
基于所述第一更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述基于锁定的数据表,确定是否执行所述资源分配结果,包括:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
在检测到所述锁定的数据表与所述数据快照中所述目标节点管理器对应的可分配的资源信息一致的情况下,执行所述资源分配结果。
一种可能的实施方式中,所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
基于所述锁定的数据表中所述目标节点管理器对应的可分配的资源信息、以及所述数据快照中对应的所述目标节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第二更新资源信息;
基于所述第二更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述资源分配约束条件包括第一约束条件集合和第二约束条件集合,第一约束条件为必须满足的条件,第二约束条件为选择性满足的条件;
所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
基于锁定的数据表、所述数据快照,确定产生更新的节点对应的节点管理器;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足所述第一约束条件集合中的任一第一约束条件时,不执行所述资源分配结果;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息满足所述第一约束条件集合中的第一约束条件,且所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足第二约束条件集合中的部分第二目标约束条件时,基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,当所述资源评分大于预设值时,执行所述资源分配结果。
一种可能的实施方式中,所述基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,包括:
将所述第二目标约束条件的个数与所述第二约束条件集合中第二约束条件的个数之间的比值,确定为所述锁定的数据表的资源评分;或者,
基于所述第二目标约束条件对应的预设权重、以及每个第二目标约束条件的初始评分值进行加权求和,得到所述锁定的数据表的资源评分。
一种可能的实施方式中,所述节点管理器用于管理集群,所述集群中包括多个节点;
所述基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果,包括:
从所述集群对应的多个节点中确定节点属性满足第一约束条件集合的节点集合;
从所述节点集合中抽取预设个数的目标节点;
基于第二约束条件集合中各个第二约束条件对应的分配方式,和数据快照中各个节点对应的可分配的资源信息,确定所述目标节点的资源分配量;
基于所述目标节点、以及所述预设个数的目标节点分别对应的资源分配量,生成所述资源分配结果。
第二方面,本公开实施例还提供一种资源分配装置,包括:
接收模块,用于接收资源分配请求;
获取模块,用于获取资源管理器中存储的数据表的数据快照,其中,所述数据表中包括多个节点管理器对应的可分配的资源信息;
确定模块,用于在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,对当前所述资源管理器中的数据表进行锁定;
分配模块,用于基于锁定的数据表,确定是否执行所述资源分配结果,若是,则基于所述资源分配结果进行资源分配。
一种可能的实施方式中,所述分配模块,在基于锁定的数据表,确定是否执行所述资源分配结果时,用于:
基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述分配模块,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
基于所述锁定的数据表中多个节点管理器对应的可分配的资源信息、以及所述数据快照中对应的多个节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第一更新资源信息;
基于所述第一更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述分配模块,在基于锁定的数据表,确定是否执行所述资源分配结果时,用于:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
在检测到所述锁定的数据表与所述数据快照中所述目标节点管理器对应的可分配的资源信息一致的情况下,执行所述资源分配结果。
一种可能的实施方式中,所述分配模块,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
基于所述锁定的数据表中所述目标节点管理器对应的可分配的资源信息、以及所述数据快照中对应的所述目标节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第二更新资源信息;
基于所述第二更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述资源分配约束条件包括第一约束条件集合和第二约束条件集合,第一约束条件为必须满足的条件,第二约束条件为选择性满足的条件;
所述分配模块,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
基于锁定的数据表、所述数据快照,确定产生更新的节点对应的节点管理器;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足所述第一约束条件集合中的任一第一约束条件时,不执行所述资源分配结果;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息满足所述第一约束条件集合中的第一约束条件,且所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足第二约束条件集合中的部分第二目标约束条件时,基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,当所述资源评分大于预设值时,执行所述资源分配结果。
一种可能的实施方式中,所述分配模块,在基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分时,用于:
将所述第二目标约束条件的个数与所述第二约束条件集合中第二约束条件的个数之间的比值,确定为所述锁定的数据表的资源评分;或者,
基于所述第二目标约束条件对应的预设权重、以及每个第二目标约束条件的初始评分值进行加权求和,得到所述锁定的数据表的资源评分。
一种可能的实施方式中,所述节点管理器用于管理集群,所述集群中包括多个节点;
所述确定模块,在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果时,用于:
从所述集群对应的多个节点中确定节点属性满足第一约束条件集合的节点集合;
从所述节点集合中抽取预设个数的目标节点;
基于第二约束条件集合中各个第二约束条件对应的分配方式,和数据快照中各个节点对应的可分配的资源信息,确定所述目标节点的资源分配量;
基于所述目标节点、以及所述预设个数的目标节点分别对应的资源分配量,生成所述资源分配结果。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的资源分配方法及装置,在接收到资源分配请求之后,可以根据资源管理器中的数据表的数据快照确定资源分配结果,在确定资源分配结果之后,再对数据表进行锁定,如此,在对数据表进行锁定之前,在确定资源分配结果的过程中,其他资源调度器仍旧可以对数据表进行更新,而且各个资源调度器计算资源分配结果的过程是可以并行执行的,从而可以节省资源分配过程中资源分配结果的计算时间,提高资源分配效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
相关技术中,在基于多个资源调度器进行资源调度时,各个资源调度器在计算资源分配结果时,是串行执行的,任一资源调度器在计算资源分配结果时,需要将数据表进行锁定,并在计算完资源分配结果之后,对数据表进行更新,这种方法计算速度较慢,资源分配的效率较低。
基于上述研究,本公开提供了一种本公开实施例提供的资源分配方法及装置,在接收到资源分配请求之后,可以根据资源管理器中的数据表的数据快照确定资源分配结果,在确定资源分配结果之后,再对数据表进行锁定,如此,在对数据表进行锁定之前,在确定资源分配结果的过程中,其他资源调度器仍旧可以对数据表进行更新,而且各个资源调度器计算资源分配结果的过程是可以并行执行的,从而可以节省资源分配过程中资源分配结果的计算时间,提高资源分配效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种资源分配方法进行详细介绍,本公开实施例所提供的资源分配方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如可以包括服务器。
参见图1所示,为本公开实施例提供的一种资源分配方法的流程图,所述方法包括步骤101~步骤104,其中:
步骤101、接收资源分配请求。
步骤102、获取资源管理器中存储的数据表的数据快照,其中,所述数据表中包括多个节点管理器对应的可分配的资源信息。
其中,数据快照可以数据资源某一时刻中的数据备份,在本公开实施例中,所述获取资源管理器中存储的数据表的数据快照,可以是在接收到资源分配请求后,获取的最新的数据表的数据备份。
这里,资源调度器在获取数据表的数据快照时,数据表可以是非锁定状态,也可以是锁定状态。在一种可能的实施方式中,当数据表是非锁定状态时,可以直接获取数据表的数据快照,在另一种可能的实施方式中,当数据表是锁定状态时,可以等待其他资源调度器在释放锁之后,再获取数据表的数据快照。
具体实施中,每个节点管理器管理一个集群,集群中包括多个节点,每个节点对应一台机器,每个节点管理器将当前管理的节点对应的可分配的资源信息发送给资源管理器,资源管理器将每个节点管理器将当前管理的节点对应的可分配的资源信息存储仅数据表中。
其中,所述可分配的资源信息,可以包括中央处理器(central processing unit,CPU)的使用率,内存的大小等。
步骤103、在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,对当前所述资源管理器中的数据表进行锁定。
这里,在当前的资源调度器对当前资源管理器中的数据表进行锁定之前,其他资源调度器可以对数据表进行更新,若当前的资源调度器在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,可以将对数据表的锁定请求添加至等待队列,当当前资源调度器对应的锁定请求位于等待队列的队首,且其他资源调度器释放数据表的锁之后,当前资源调度器对当前所述资源管理器中的数据表进行锁定。
在当前资源调度器对应的锁定请求添加至等待队列之后,等待队列中可能存在有其他资源调度器对应的锁定请求,且存在有其他资源调度器对应的锁定请求在当前资源调度器对应的锁定请求之前,因此,可以等待其他资源调度器对应的锁定请求执行完之后,再执行当前资源调度器对应的锁定请求,且每执行一个资源调度器对应的锁定请求,可以将该锁定请求从等待队列中删除。
步骤104、基于锁定的数据表,确定是否执行所述资源分配结果,若是,则基于所述资源分配结果进行资源分配。
在一种可能的实施方式中,在基于锁定的数据表,确定是否执行所述资源分配结果时,可以是确定锁定的数据表中,多个节点管理器对应的可分配的资源信息是否满足资源分配请求中携带的全部资源分配约束条件,若是,则确定锁定的数据表中多个节点管理器对应的可分配的资源信息满足资源分配约束条件,并执行资源分配结果。
在另一种可能的实施方式中,在基于锁定的数据表,确定是否执行所述资源分配结果时,还可以基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
具体的,在确定是否执行资源分配结果时,本公开一示例中,可以先基于锁定的数据表中多个节点管理器对应的可分配的资源信息、以及所述数据快照中对应的多个节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第一更新资源信息;然后基于所述第一更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
由于资源分配结果是基于数据快照确定的,因此数据快照中对应的可分配的资源信息能够满足资源分配请求中携带的资源分配约束条件,而在基于数据快照和锁定的数据表,确定产生更新的第一更新资源信息之后,可以直接确定第一更新资源信息是否满足资源分配约束条件,则可以直接确定是否执行资源分配结果。
示例性的,若资源分配结果包括为100个节点分别分配对应的资源量,若直接基于锁定的数据表,确定锁定的数据表是否满足资源分配约束条件时,则需要逐个确定每个节点是否满足资源分配约束条件,需执行100次操作,而若基于锁定的数据表和更新资源信息,检测到只有10个节点的可分配的资源信息产生变化,则可以只检测这10个节点是否满足资源分配约束条件即可,仅需执行10次操作即可,因此,提高了确定是否指向资源分配结果的效率。
进一步的,为提高处理效率,本公开另外一示例中,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,还可以先确定与资源分配结果相关联的目标节点对应的目标节点管理器,然后基于锁定的数据表中目标节点管理器对应的可分配的资源信息、以及数据快照中对应的目标节点管理器对应的可分配的资源信息,确定锁定的数据表中产生更新的第二更新资源信息,然后基于第二更新资源信息、以及资源分配请求携带的资源分配约束条件,确定是否执行资源分配结果。
在另外一种可能的实施方式中,在基于锁定的数据表,确定是否执行资源分配结果时,可以先确定与资源分配结果相关联的目标节点对应的目标节点管理器,然后在检测到锁定的数据表中与数据快照中目标节点管理器对应的可分配的资源信息一致的情况下,执行资源分配结果;或者,直接检测锁定的数据表与数据快照中节点管理器对应的可分配资源的是否一致,若一致,则说明在当前调度器计算资源分配结果的过程中,并无其他调度器对数据表进行修改,则可以直接执行资源分配结果。
在另一种可能的实施方式中,在基于锁定的数据表,确定是否执行所述资源分配结果时,还可以直接确定与资源分配结果相关联的目标节点对应的目标节点管理器,然后确定锁定的数据表中,目标节点管理器对应的可分配的资源信息是否满足资源分配请求携带的资源分配约束条件,若满足,则执行资源分配结果。
其中,上述资源分配请求中携带的资源分配约束条件可以包括第一约束条件集合和第二约束条件集合,其中,第一约束条件为必须满足的条件,第二约束条件为选择性满足的条件。
示例性的,第一约束条件可以包括但不限于以下至少一项:节点对应负载低于预定负载,节点对应内存大于预定内存;第二约束条件可以包括上述第二约束条件可以包括但不限于以下至少一项:节点分配平均,跳过高负载节点。
这里,节点平均分配是指经过本次资源分配之后,各个节点已使用的资源一致。例如,当前资源分配请求中请求的资源量为V,总节点个数为N,当前所有节点总共已使用资源的资源量为U,则每个节点对应的资源使用量S为(V+U)/N,针对任一节点,若该节点已使用的资源量为Un,则可以为该节点分配S-Un的资源量。
跳过高负载节点是指跳过节点负载超过负载阈值的节点,具体的,设不超过负载阈值的节点数为N1,超过负载阈值的节点数为N2,在进行资源分配时,先为不超过负载阈值的N1个第一节点分配资源,当第一节点的负载也超过负载阈值之后,再平均为第一节点和超过负载阈值的节点进行资源的平均分配。
在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,可以先基于锁定的数据表、所述数据快照,确定产生更新的节点对应的节点管理器;当产生更新的节点对应的节点管理器对应的可分配的资源信息不满足所述第一约束条件集合中的任一第一约束条件时,则不执行所述资源分配结果。
这里,产生更新的节点对应的节点管理器可以是与上述第一更新资源信息对应的节点管理器(即可以是所有产生更新的节点对应的节点管理器),也可以是上述第二更新资源信息对应的节点管理器(即可以是与资源分配结果对应的目标节点的目标节点管理器)。
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息满足所述第一约束条件集合中的第一约束条件,且所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足第二约束条件集合中的部分第二目标约束条件时,基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,当所述资源评分大于预设值时,执行所述资源分配结果。
其中,在基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分时,可以通过以下方法中的任意一种方法:
方法一、将所述第二目标约束条件的个数与所述第二约束条件集合中第二约束条件的个数之间的比值,确定为所述锁定的数据表的资源评分。
方法二、基于所述第二目标约束条件对应的预设权重、以及每个第二目标约束条件的初始评分值进行加权求和,得到所述锁定的数据表的资源评分。
在一种实施方式中,在基于资源分配结果进行资源分配之后,还可以基于资源分配结果对锁定的数据表进行更新,并在更新完成之后释放数据表的锁,在释放数据表的锁之后,其他资源调度器可以再对数据表进行锁定,并进行更新。
上述方法中,在基于数据表的数据快照,确定资源分配请求对应的资源分配结果时,可以参照如图2所示的方法,包括以下几个步骤:
步骤201、从所述集群对应的多个节点中确定节点属性满足第一约束条件集合的节点集合。
这里,所述节点属性可以是机器的内存属性,例如可以是机器的负载、剩余内存的大小等。
步骤202、从所述节点集合中抽取预设个数的目标节点。
这里,满足第一约束条件的节点可能有多个,而在进行数据分配时,为保证数据的集中,可以从节点集合中抽取预设个数的目标节点,并为抽取出的目标节点分配资源。在从节点和中抽取目标节点时,可以是随机抽取的。
步骤203、基于第二约束条件集合中各个第二约束条件对应的分配方式,和数据快照中各个节点对应的可分配的资源信息,确定所述目标节点的资源分配量。
当第二约束条件有多个时,可以先确定在每个第二约束条件下各个目标节点对应的中间资源分配量,针对每一个目标节点,基于该目标节点对应的在各个第二约束条件下的中间资源分配量,以及各个第二约束条件对应的预设权重,确定该目标节点的资源分配量。
具体的,针对每一个目标节点,可以将该目标节点对应的在各个第二约束条件下的中间资源分配量,按照各个第二约束条件对应的预设权重进行加权求和,并将求和结果作为该目标节点的资源分配量。
示例性的,第一个第二约束条件对应的上述目标节点的资源分配量是第一资源分配量,第一个第二约束条件对应的权重可以是0.2;第二个第二约束条件对应的上述目标节点的资源分配量是第二资源分配量,第二个第二约束条件对应的权重可以是0.5;第三个第二约束条件对应的上述目标节点的资源分配量是第三资源分配量,第三个第二约束条件对应的权重可以是0.3;进而可以得到,上述目标节点的资源分配量可以是第一资源分配量与0.2的乘积结果加上第二资源分配量与0.5的乘积结果再加上第三资源分配量与0.3的乘积结果。
步骤204、基于所述目标节点、以及所述预设个数的目标节点分别对应的资源分配量,生成所述资源分配结果。
下面,结合示例对上述节点的筛选过程展开介绍。参照图3所示,电子设备301从集群对应的多个节点302中确定属性满足第一约束条件集合的节点集合303。
其中,上述多个节点302包括:第一节点、第二节点、第三节点、第四节点和第五节点。可选的,上述第一节点对应的节点属性的可以表征是内存80,负载50,上述第二节点对应的节点属性的可以表征是内存100,负载50,上述第三节点对应的节点属性的可以表征是内存70,负载90,上述第四节点对应的节点属性的可以表征是内存120,负载40,上述第五节点对应的节点属性的可以表征是内存170,负载21。
上述第一约束条件集合可以包括:节点对应负载低于45负载,节点对应内存大于100,则上述节点集合303包括:第二节点、第四节点和第五节点。然后,从上述节点集合303中抽取预设个数的节点作为目标节点304。其中,上述抽取的目标节点304包括:第二节点和第五节点。进而,基于第二约束条件集合中各个第二约束条件对应的分配方式,确定上述抽取的目标节点304的资源分配量306。其中,上述抽取的目标节点304的资源分配量306包括第二节点的资源分配量和第五节点的资源分配量。作为示例,上述第二节点的资源分配量可以是40,第五节点的资源分配量为50。
可选的,上述第二约束条件集合可以包括但不限于以下至少一项:节点分配平均,跳过高负载节点。响应于与抽取的目标节点相对应的总资源分配量305不小于预定阈值的资源量,将与上述与抽取的目标节点相对应的总资源分配量305进行进一步分配。作为示例,上述预定阈值的资源量可以是90。可选的,还可以将与抽取的目标节点相对应的总资源分配量305分配给终端设备307。
本公开实施例提供的资源分配方法,在接收到资源分配请求之后,可以根据资源管理器中的数据表的数据快照确定资源分配结果,在确定资源分配结果之后,再对数据表进行锁定,如此,在对数据表进行锁定之前,在确定资源分配结果的过程中,其他资源调度器仍旧可以对数据表进行更新,而且各个资源调度器计算资源分配结果的过程是可以并行执行的,从而可以节省资源分配过程中资源分配结果的计算时间,提高资源分配效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与资源分配方法对应的资源分配装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述资源分配方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种资源分配装置的架构示意图,所述装置包括:接收模块401、获取模块402、确定模块403、以及分配模块404;其中,
接收模块401,用于接收资源分配请求;
获取模块402,用于获取资源管理器中存储的数据表的数据快照,其中,所述数据表中包括多个节点管理器对应的可分配的资源信息;
确定模块403,用于在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,对当前所述资源管理器中的数据表进行锁定;
分配模块404,用于基于锁定的数据表,确定是否执行所述资源分配结果,若是,则基于所述资源分配结果进行资源分配。
一种可能的实施方式中,所述分配模块404,在基于锁定的数据表,确定是否执行所述资源分配结果时,用于:
基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述分配模块404,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
基于所述锁定的数据表中多个节点管理器对应的可分配的资源信息、以及所述数据快照中对应的多个节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第一更新资源信息;
基于所述第一更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述分配模块,在基于锁定的数据表,确定是否执行所述资源分配结果时,用于:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
在检测到所述锁定的数据表与所述数据快照中所述目标节点管理器对应的可分配的资源信息一致的情况下,执行所述资源分配结果。
一种可能的实施方式中,所述分配模块404,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
基于所述锁定的数据表中所述目标节点管理器对应的可分配的资源信息、以及所述数据快照中对应的所述目标节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第二更新资源信息;
基于所述第二更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,所述资源分配约束条件包括第一约束条件集合和第二约束条件集合,第一约束条件为必须满足的条件,第二约束条件为选择性满足的条件;
所述分配模块404,在基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果时,用于:
基于锁定的数据表、所述数据快照,确定产生更新的节点对应的节点管理器;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足所述第一约束条件集合中的任一第一约束条件时,不执行所述资源分配结果;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息满足所述第一约束条件集合中的第一约束条件,且所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足第二约束条件集合中的部分第二目标约束条件时,基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,当所述资源评分大于预设值时,执行所述资源分配结果。
一种可能的实施方式中,所述分配模块404,在基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分时,用于:
将所述第二目标约束条件的个数与所述第二约束条件集合中第二约束条件的个数之间的比值,确定为所述锁定的数据表的资源评分;或者,
基于所述第二目标约束条件对应的预设权重、以及每个第二目标约束条件的初始评分值进行加权求和,得到所述锁定的数据表的资源评分。
一种可能的实施方式中,所述节点管理器用于管理集群,所述集群中包括多个节点;
所述确定模块403,在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果时,用于:
从所述集群对应的多个节点中确定节点属性满足第一约束条件集合的节点集合;
从所述节点集合中抽取预设个数的目标节点;
基于第二约束条件集合中各个第二约束条件对应的分配方式,和数据快照中各个节点对应的可分配的资源信息,确定所述目标节点的资源分配量;
基于所述目标节点、以及所述预设个数的目标节点分别对应的资源分配量,生成所述资源分配结果。
本公开实施例提供的资源分配装置,在接收到资源分配请求之后,可以根据资源管理器中的数据表的数据快照确定资源分配结果,在确定资源分配结果之后,再对数据表进行锁定,如此,在对数据表进行锁定之前,在确定资源分配结果的过程中,其他资源调度器仍旧可以对数据表进行更新,而且各个资源调度器计算资源分配结果的过程是可以并行执行的,从而可以节省资源分配过程中资源分配结果的计算时间,提高资源分配效率。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图5所示,为本公开实施例提供的计算机设备500的结构示意图,包括处理器501、存储器502、和总线503。其中,存储器502用于存储执行指令,包括内存5021和外部存储器5022;这里的内存5021也称内存储器,用于暂时存放处理器501中的运算数据,以及与硬盘等外部存储器5022交换的数据,处理器501通过内存5021与外部存储器5022进行数据交换,当计算机设备500运行时,处理器501与存储器502之间通过总线503通信,使得处理器501在执行以下指令:
接收资源分配请求;
获取资源管理器中存储的数据表的数据快照,其中,所述数据表中包括多个节点管理器对应的可分配的资源信息;
在基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果之后,对当前所述资源管理器中的数据表进行锁定;
基于锁定的数据表,若是,则基于所述资源分配结果进行资源分配。
一种可能的实施方式中,处理器501执行的指令中,所述基于锁定的数据表、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
当所述锁定的数据表中多个节点管理器对应的可分配的资源信息满足所述资源分配约束条件时,执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述基于锁定的数据表,确定是否执行所述资源分配结果,包括:
基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
基于所述锁定的数据表中多个节点管理器对应的可分配的资源信息、以及所述数据快照中对应的多个节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第一更新资源信息;
基于所述第一更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述基于锁定的数据表,确定是否执行所述资源分配结果,包括:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
在检测到所述锁定的数据表与所述数据快照中所述目标节点管理器对应的可分配的资源信息一致的情况下,执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
确定与所述资源分配结果相关联的目标节点对应的目标节点管理器;
基于所述锁定的数据表中所述目标节点管理器对应的可分配的资源信息、以及所述数据快照中对应的所述目标节点管理器对应的可分配的资源信息,确定所述锁定的数据表中产生更新的第二更新资源信息;
基于所述第二更新资源信息、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述资源分配约束条件包括第一约束条件集合和第二约束条件集合,第一约束条件为必须满足的条件,第二约束条件为选择性满足的条件;
所述基于锁定的数据表、所述数据快照、以及所述资源分配请求携带的资源分配约束条件,确定是否执行所述资源分配结果,包括:
基于锁定的数据表、所述数据快照,确定产生更新的节点对应的节点管理器;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足所述第一约束条件集合中的任一第一约束条件时,不执行所述资源分配结果;
当所述产生更新的节点对应的节点管理器对应的可分配的资源信息满足所述第一约束条件集合中的第一约束条件,且所述产生更新的节点对应的节点管理器对应的可分配的资源信息不满足第二约束条件集合中的部分第二目标约束条件时,基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,当所述资源评分大于预设值时,执行所述资源分配结果。
一种可能的实施方式中,处理器501执行的指令中,所述基于所述产生更新的节点对应的节点管理器对应的可分配的资源信息以及所述第二目标约束条件,确定所述锁定的数据表的资源评分,包括:
将所述第二目标约束条件的个数与所述第二约束条件集合中第二约束条件的个数之间的比值,确定为所述锁定的数据表的资源评分;或者,
基于所述第二目标约束条件对应的预设权重、以及每个第二目标约束条件的初始评分值进行加权求和,得到所述锁定的数据表的资源评分。
一种可能的实施方式中,处理器501执行的指令中,所述节点管理器用于管理集群,所述集群中包括多个节点;
所述基于所述数据表的数据快照,确定所述资源分配请求对应的资源分配结果,包括:
从所述集群对应的多个节点中确定节点属性满足第一约束条件集合的节点集合;
从所述节点集合中抽取预设个数的目标节点;
基于第二约束条件集合中各个第二约束条件对应的分配方式,和数据快照中各个节点对应的可分配的资源信息,确定所述目标节点的资源分配量;
基于所述目标节点、以及所述预设个数的目标节点分别对应的资源分配量,生成所述资源分配结果。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的资源分配方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的资源分配方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的资源分配方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。