本申请属于数据处理技术领域,尤其涉及一种资源分配方法和服务设备。
背景技术:
随着数据处理技术的发展,利用分布式系统进行作业处理的数据处理方式逐渐开始普及。基于分布式系统,现有的资源分配方法大多是由作业管理器根据目标作业执行时所涉及的作业规模向资源调度器发送资源使用申请以申请满足作业执行的资源需求量的物理资源;资源调度器根据资源使用申请,从未分配的资源中搜寻满足上述资源需求量的静态资源,并将该静态资源提供给作业管理器;再由作业管理器将用于执行目标作业的作业节点发送至上述静态资源所在的机器上以完成相应的作业。
然而,上述资源分配方式,为了保证目标作业能够稳定地执行,往往会根据目标作业的规模设置一个相对较大的资源量作为资源需求量。然而,对于目标作业而言,在实际执行的时候,并不需要那么大的资源量,这些资源就会产生浪费。
针对现有的资源分配方式所存在的资源浪费的问题,目前尚未提出有效的解决方案。
技术实现要素:
本申请目的在于提供一种资源分配方法和服务设备,以解决现有的资源浪费的问题。
本申请提供一种资源分配方法和服务设备是这样实现的:
一种资源分配方法,包括:
获取资源池中已分配资源的资源使用数据;
根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
将所述余量资源分配给待分配资源的目标作业。
一种服务设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
获取资源池中已分配资源的资源使用数据;
根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
将所述余量资源分配给待分配资源的目标作业。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下步骤:
获取资源池中已分配资源的资源使用数据;
根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
将所述余量资源分配给待分配资源的目标作业。
本申请提供的资源分配方法和系统,确定已分配的资源中的余量资源,并将余量资源分配给待分配资源的目标作业,即,对已分配资源中的余量数据进行二次分配,从而可以解决现有方法中存在的资源利用率低的技术问题,达到了充分利用资源,提升作业处理效率的技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的资源分配系统的架构示意图;
图2是本申请提供的资源分配系统的另一架构示意图;
图3是本申请提供的用户请求作业处理的示意图;
图4是本申请提供的资源分配时序图;
图5是本申请提供的资源分配方法的方法流程图;
图6是本申请提供的服务设备的架构图;
图7是本申请提供的资源分配装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
考虑到现有的资源分配方法在为目标作业分配运行资源时,确定目标作业所需的资源量的峰值,然后从未分配的资源中寻找可以达到确定出的峰值资源量的资源分配给目标作业。然而,在实际的作业处理过程中,目标作业对资源的使用量通常不会一直维持在资源量峰值,大多数的时间段内目标作业执行时所消耗的资源往往是小于上述资源量峰值的。
例如,目标作业可能只在执行过程中的中间一个极小的时间段内消耗的资源量会达到事先分配给该目标作业的总的资源量,而在其他时间段运行目标作业所真实利用到的资源量可能远低于上述资源量峰值。这时,这些没有被利用的余量资源(即分配给目标作业的总的资源与运行目标作业实际使用资源之间差值)会处于闲置状态,这些余量资源在这个时间段内是闲置的,也就造成了资源的浪费。
进一步的,因为系统中的资源量是有限的,在作业较多的时候,如果资源已经被分配完,那么其它的作业只能进入等待分配的状态,即使有些目标作业被分配的资源量中存在余量资源,也无法将这些余量资源分配给处于等待状态的作业。
基于此,在本例中,考虑到如果可以将已分配资源中的余量资源分配给待分配资源的作业,那么可以从一定程度上缓解作业较多时系统的处理负担。具体的,可以根据已分配资源的作业中资源的使用情况,确定余量资源,将这些余量资源分配给系统处于排队等待状态的作业,以实现对处于排队等待状态的作业的处理。
如图1所示,本申请实施例提供了一种资源分配系统。其中,该资源分配系统可以包括:资源分配服务器101和多个物理资源102(机器)。其中,资源分配服务器101用于对多个物理资源进行分配,即,将多个物理资源分配给请求资源的目标作业。
在一个实施方式中,上述物理资源所提供的资源具体可以包括以下资源中的一种或多种:作业执行时所需要的磁盘资源、网络资源、cpu资源、gpu资源等。上述物理资源可以是一个服务器或者服务器集群,也可以是云处理器、云存储器等等。需要说明的是,上述所列举的多种类型的资源只是为了更好地说明本申请实施方式。具体实施时,也可以根据具体情况和作业要求引入除上述所列举的资源以外的其他类型的资源作为上述物理资源所提供的资源。对此,本申请不作限定。物理资源可以是处理目标作业所需要的处理资源、存储资源等。
上述的资源分配服务器101可以是单一的服务器或者处理器,也可以是服务器集群,在实际实现的时候,资源分配服务器101的具体实现方式,可以根据实际需要选择,本申请对此不作限定。
进一步的,考虑到如果需要将已分配资源中的余量资源分配给处于资源等待状态的作业以实现对等待状态的作业进行处理,那就需要知道余量资源的资源量。为了可以确定已分配资源中的余量资源的资源量,可以在物理资源上设置用于对资源使用情况进行监测的机器节点,通过设置的机器节点可以实时采集物理资源的资源使用数据,机器节点可以将确定出的资源余量实时上传至资源分配服务器,从而使得资源分配服务器可以对余量资源进行再分配。
值得注意的是,在物理资源上设置机器节点来检测资源使用情况仅是一种示例性描述,在实际实现的时候,可以采用其它的确定资源使用情况的方式,例如,可以设置一个集中的检测器,用于对所有的物理资源的使用情况进行监测,也可以是设置一个机器节点,对与该机器节点所在的物理资源存在关联关系的一个或多个物理资源的资源使用情况进行监测,又或者是可以根据每个目标作业的执行情况,计算得到分配给该作业的资源量的使用情况。具体的确定资源使用情况的方式可以根据实际的使用场景和使用情况确定,本申请对此不作限定。
进一步的,考虑到余量资源是资源量相对较少的资源,如果采用基于作业所需量从余量资源中查找满足资源量的物理资源的方式进行资源分配,如果作业所需量较大,那存在很大的可能该作业匹配不到合理的余量资源,这样再进行下一个作业的匹配,匹配效率比较低。为此,考虑到可以采用用余量资源去匹配作业的方式,将第一个匹配该余量资源可以处理的作业作为为该余量资源再分配的作业。例如,余量资源的资源量为15,可以调取排队队列的作业列表,可以逐次对该作业列表中各个作业所需资源量进行匹配,例如,作业列表中作业1所需资源量为20,20>15因此,不满足,则进行下一个作业的判断,作业2所需资源量为13,13<15,满足,因此,可以将该余量资源分配给作业2,以实现对作业2的处理。
然而,如果将确定出的余量资源分配给了排队队列中的作业(假设为作业a),而此时原作业(即,已分配非余量资源的作业,假设为作业m)的资源量需求增加,那么就需要将分配给作业a的资源再换分至作业m,也就相当于需要暂停或者停止对作业a的处理。
为此,在本例中提出了一种资源分配服务器上,如图2所示,可以包括:资源调度器和作业管理器,上述作业管理器可以与资源调度器耦合。其中,作业管理器具体可以与多个作业节点通信,上述作业节点可以用于执行具体的作业任务。
在具体实现时,可以如图3所示,用户可以向资源分配服务器发出作业请求,资源分配服务器中的作业管理器可以根据作业请求确定出对应的目标作业,并分析执行目标作业所要使用的资源需求量,进而生成包含有资源需求量的资源使用申请。作业管理器将上述资源使用申请发送至资源调度器,以便资源调度器能够从多个物理资源中分配出相应的资源执行目标作业。资源调度器与多个物理资源中的各个物理资源的机器节点耦合。其中,在每一个物理资源上分别设置有一个机器节点,该机器节点用于实时监测并记录对应物理资源中的资源使用数据。其中,上述资源使用数据具体可以包括:物理资源中未分配的资源的情况、物理资源中已分配的资源的使用情况等。
具体的,上述物理资源中已分配的资源的使用情况又可以包括已分配的资源当前的使用率、已分配的资源当前的资源剩余量、已分配的资源预设时间段内的资源使用率等等。资源调度器可以通过机器节点获得各个物理资源的当前资源使用数据。其中,资源调度器在获取当前资源使用数据时,可以与机器节点进行实时通信,从而可以实时获取当前资源使用数据。当然,为了减少数据处理压力,也可以按照预设时间间隔(例如2分钟)接收机器节点发送的物理资源的当前资源使用数据。
资源调度器在接收到上述当前资源使用数据后,可以根据上述当前资源使用数据先检索各个物理资源,确定各个物理资源中是否存在符合目标作业的资源需求量的未分配资源,即第一资源(也可称normal资源)。其中,上述符合目标作业的资源需求量可以理解为资源量大于等于目标作业的资源需求量。例如,目标作业a的资源需求量是5个g的cpu,资源调度器可以根据当前资源使用数据对多个物理资源进行检索,发现物理资源2中还有6个g的cpu未分配,这时资源调度器可以将物理资源2中6个g中的5个g的cpu作为第一资源,分配给目标作业a使用。
在确定物理资源中存在上述第一资源的情况下,资源调度器可以将包含有第一资源信息的资源使用列表分别发送至作业管理器和第一资源所在的物理资源的机器节点。其中,第一资源信息可以包括第一资源的位置信息,用以指示该第一资源是哪一个物理资源中的哪一个未分配的资源。这样作业管理器可以根据资源使用列表将用于执行目标作业的作业节点发送至第一资源所在的物理资源上。第一资源所在的物理资源的机器节点可以根据上述资源使用列表允许作业节点临时使用该物理资源中的第一资源以执行目标作业。需要说明的是,上述第一资源可以理解为是一种可靠性等级较高的资源。一旦将该资源分配给了某个目标作业,该目标作业利用第一资源会受到系统的保护,即在该目标作业完成之前,都不会收回用于该目标作业的第一资源。
在确定物理资源中不存在上述第一资源的情况下,资源调度器可以根据当前资源使用数据继续对各个物理资源中的已分配的资源进行检索,检索已分配的资源中是否存在当前没有被利用,且资源量满足目标作业的资源需求量的余量资源,即第二资源(也可称为超卖资源)。例如,目标作业b资源需求量是2个g的cpu,资源调度器可以根据当前资源使用数据先对多个物理资源的未分配的资源进行检索,在确定未分配的资源中不存在大于等于2个g的cpu的情况下(即不存在第一资源),可以继续根据当前资源使用数据再对各个物理资源中的已分配的资源进项检索,发现物理资源2中存在一个已分配的资源(之前已经被分配出去用于处理目标作业a),所分配的总的资源量为5个g的cpu,但当前只利用了3个g的cpu,即该已分配的资源中存在包括2个g的cpu的余量资源,当前处于空闲状态,没有被利用。这时为了提高资源利用率,也为了避免由于暂时没有可用的未分配资源导致目标作业b只能排队等待可用资源而无法继续执行,可以将物理资源2中的已分配的资源中当前没有被利用的2个g的cpu作为第二资源,临时分配给目标作业b使用。这样,虽然当前没有符合目标作业b的资源需求量的未分配的资源,但是可以从之前已分配的资源中临时调用当前没有被利用的部分余量资源分配给其他作业临时使用。
需要说明的是,相对于第一资源,第二资源具体可以理解是从已分配给其他作业使用的第一资源中临时借用的当前没有被使用的余量资源。此外,第二资源的可靠性等级要低于第一资源。具体的,当原来分配有第一资源的目标作业在某一阶段需要利用之前作为第二资源分配给其他目标作业的余量资源时,系统会优先保证原来分配有第一资源的目标作业的执行,即会停止后来分配使用第二资源的目标作业,并将第二资源归还给原来分配有第一资源的目标作业使用,以保证至少分配有第一资源的目标作业能够顺利执行。例如,在没有符合资源需求量的未分配的资源的情况想,将原来分配给目标作业a的第一资源中当前没有被使用的部分余量资源作为第二资源,历史分配给目标作业b,这样目标作业a和目标作业b都能够顺利执行。在执行一段时间后,资源调度器根据更新后的当前资源使用数据发现目标作业a当前需要使用之前被临时分配出去的资源,这时为了保证原来分配有第一资源的目标作业a的顺利执行,资源调度器可以停止目标作业b,释放并归还之前从目标作业a的第一资源中临时借用的那部分余量资源,即目标作业b使用的第二资源,这样目标作业a依然可以稳定地执行下去而不会因为缺少资源导致作业停止。
由此可见,第二资源的可靠性等级是低于第一资源的可靠性等级,当第一资源的使用和第二资源的使用发生冲突时(例如,在利用从第一资源借取的第二资源执行目标作业过程中,原分配有第一资源的目标作业要使用被临时借取出去的第二资源),系统会优先保护分配有第一资源的目标作业的执行,而停止分配有第二资源的目标作业的执行,回收第二资源。这样分配有第二资源的目标作业在执行的过程中有较高的风险会因为与第一资源使用的冲突而被停止。因此,为了减少分配有第二资源的目标作业在执行过程中被停止,在从已分配的第一资源中检索并确定第二资源时,可选择在预设时间段内与第一资源使用产生冲突的风险小于阈值参数的资源作为第二资源。具体的,例如,可以根据当前资源使用数据和历史资源使用数据(即之前获得的当前资源使用数据),从预设时间段内目标作业使用的资源量已经出现过资源量峰值的目标作业的第一资源中检索并确定是否存在满足资源需求量的当前未被利用的资源作为第二资源。
需要说明的是,一个目标作业在执行的过程中,所使用的资源量不会一直处于资源量峰值,通常作业所使用的资源量会在经历过资源量峰值后,再经历相对较长的一个时间段才会出现第二次的资源量峰值。因此,从预设时间段内目标作业使用的资源量已经出现过资源量峰值的目标作业的第一资源中确定出的第二资源在未来的一个时间段内与第一资源的使用出现冲突的概率相对会更小,这样分配有第二资源的目标作业有更多的概率被执行完成。当然,也可以根据历史的资源使用数据建立资源使用情况的预测模型,根据资源使用情况的预测模型预测出未来一个时间段内资源使用率较低的已分配资源作为目标资源,再从上述目标资源中检索并确定出满足资源需求量的余量资源作为第二资源。当然,需要说明的是,上述用于降低以分配的第二资源被临时回收的风险的方式只是为了更好地说明本申请实施方式,具体实施时,可以根据待处理的作业情况选择合适的方式确定第二资源。
在本实施方式中,考虑到将物理资源中已分配的资源中未被利用的资源作为第二资源暂时分配出去使用起来,这种处理方式本身也会增加物理资源的运行负担。一旦物理资源所承受的运行负担过高,超过某一限值可能会导致物理资源整体的宕机或重启,这样势必会对作业的整体运行构成风险。为了避免上述物理资源负担过高产生的风险,资源调度器可以通过设置在物理资源上的机器节点获取当前资源使用数据,并根据当前资源使用数据确定物理资源的当前运行状态参数,并将物理资源的当前运行状态参数与物理资源的阈值状态参数进行比较,确定当前运行状态参数是否大于阈值状态参数。在确定当前运行状态参数大于阈值状态参数的情况下,可以判定当前的物理资源存在宕机或重启的风险,为了保护作业整体运行的稳定,可以优先收回已经分配出去,可靠性等级较低的第二资源,停止分配有的第二资源的目标作业的执行,以保证物理资源的整体稳定。
进一步,又考虑到分配有第二资源的目标作业执行时与第一资源的使用发生冲突,为了保护第一资源的使用,会回收第二资源,导致分配有第二资源的目标作业终止。这时,目标作业的执行又回到了零,又得重新登待新的资源,重新开始执行。实际上,上述目标作业在被停止之前已经利用第二资源执行了一段时间,已经得到了一些中间结果,在回收第二资源,停止目标作业时可以记录目标作业利用第二资源在停止之前得到的中间结果,以便目标作业后续得到新的资源时,作业节点可以以上述中间结果作为作业执行的起点,执行后续的目标作业,从而可以避免浪费基于之前的第二资源所得的中间数据,提高资源利用率和处理效率。
虽然,通过上述方式可以在很大程度上减少分配出去的第二资源在作业执行完毕之前被收回的风险,但是还是无法完全保证利用第二资源能够顺利完整地执行完相应的目标作业。考虑到第一资源的可靠等级高于第二资源,利用第一资源是可以保证目标作业能够完整的执行完毕的。因此,具体实施时,在分配了第二资源,作业节点开始利用第二资源运行对应的目标作业之后,且在该目标作业执行完毕之前:资源调器可以继续获取更新后的当前资源使用数据,并根据上述更新后的当前资源使用数据,检索各个物理资源中否存在满足目标作业的资源需求量的未分配的资源,即第一资源。在检索到第一资源的情况下,再将新检索到的第一资源分配给已分配有第二资源的目标作业。
如图4所示,在将新检索到的第一资源分配给已分配有第二资源的目标作业时,可以分情况处理。具体的,可以先确定新检索到的第一资源与已分配出去的第二资源是否未于同一个物理资源。在确定新检索到的第一资源和第二资源位于同一物理资源的情况下,可以直接将新检索到的第一资源归还给原来分配给其他目标作业的资源,并将该目标作业正使用的第二资源的标签修改为第一资源。这样可以保证目标作业能够稳定地执行完毕,而不会中断。在确定新检索到的第一资源和第二资源位于不同的物理资源的情况下,则可以保持原有的利用已分配的第二资源的目标作业的执行链路,并利用新检索到的第一资源开启相同的目标作业的执行链路。具体的,资源调度器可以将包含有新检索到的第一资源的资源使用列表发送至作业管理器和新检索到的第一资源所在的物理资源的机器节点。这样作业管理器可以根据资源使用列表将用于执行相同目标作业的作业节点发送至新检索到的第一资源上;机器节点可以根据资源使用列表允许作业节点调用所在物理资源上的第一资源执行目标作业。按照上述方式相当于在两个不同的物理资源上分别执行同一个目标作业。
其中,利用新检索到的一资源执行目标作业是可靠等级较高,一定能顺利执行完毕的。这样可以避免单独利用第二资源可能出现的目标作业不能被顺利地执行完毕的问题。具体实施时,可以保持利用第二资源的作业节点继续目标作业的执行。这时,资源调度器可以分别获取目标作业在第一资源上的执行信息、目标作业在第二资源上的执行信息,以确定目标作业在第一资源上的执行进度和目标作业在第二资源上的执行进度。进而资源调度器可以根据目标作业在第一资源上的执行信息、目标作业在第二资源上的执行信息,确定目标作业是否已经在第一资源和第二资源中的一个资源上已经执行完成;在确定目标作业已经在第一资源和第二资源中的一个资源上已经执行完成的情况下,资源调度器可以停止目标作业在另一个资源上的执行,并释放第一资源,将第二资源返还回去。例如,资源调度器根据目标作业在第一资源上的执行信息、目标作业在第二资源上的执行信息,确定目标作业已经在第一资源上执行完成,这时资源调度器可以停止目标作业在第二资源上的执行,释放第一资源并归还所借取的第二资源。
进一步的,考虑到在对多个待执行的目标作业进行处理时,通常会根据目标作业的优先级,优先给优先级较高的目标作业分配资源。其中,上述优先级可以根据目标作业的重要性程度确定。这样在对多个目标作业进行资源分配时可能会出现以下情形:对于优先级较高的目标作业所对应的作业的重要性程度较高,应该优先保证该作业能够顺利执行完成。因此,即使当前没有可用的未分配的资源(即第一资源)提供给优先级较高的目标作业,后续一旦出现符合要求的第一资源会优先分配给优先级较高的目标作业,即上述这类优先级较高的目标作业具有较高的概率获得稳定性等级更高的第一资源。在这种情况下,如果在当前没有可用的分配的资源时,优先为优先级较高的这类目标作业寻找并分配第二资源,很有可能在利用第二资源执行完成该目标作业之前,该目标作业已经获得了稳定性较高的第一资源,这时之前分配给该目标作业的第二资源在一定程度上是一种资源浪费。因此,考虑到在对多个目标作业进行资源分配的具体特点,为了避免资源浪费,可以优先对优先级相对较低的一类目标作业进行第二资源的确定和分配。
具体的,在待执行的作业包括多个目标作业的情况下,资源调度器可以根据与各个针对目标作业的资源使用申请,确定各个目标资源的优先级;进而在没有可用的未分配的资源的情况下,可以根据目标作业的优先级从低到高的顺序,依次给各个目标作业确定并分配相应的第二资源。这样可以避免先给优先级较高的目标作业分配了第二资源后,该目标作业又获得了第一资源导致的资源浪费。
图5是本申请提供的资源分配方法的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
如图5所示,该一种资源分配方法,可以包括如下步骤:
步骤501:获取资源池中已分配资源的资源使用数据;
步骤502:根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
步骤503:将所述余量资源分配给待分配资源的目标作业。
具体的,在上述步骤503中,将所述余量资源分配给待分配资源的目标作业,具体可以包括:将所述余量资源分配给资源需求量小于等于所述余量资源的资源量的待分配资源的目标作业。
考虑到在实际进行资源分配的时候,可以在未分配资源足够的情况下,先通过未分配资源进行资源分配,而不需要通过余量资源进行分配。在实现的时候,在根据所述已分配资源的资源使用数据,从所述已分配的资源中确定出余量资源前,可以获取未分配资源的资源使用数据;根据所述未分配资源的资源使用数据,确定未分配的资源中是否存在符合要求的未分配的资源,其中,所述符合要求的未分配资源的资源量大于等于所述待分配资源的目标作业的资源需求量的未分配的资源;在未分配的资源中存在所述符合要求的未分配的资源的情况下,将所述符合要求的未分配的资源分配给所述目标作业。
为了实现对资源使用情况的有效整合,可以设置用于对资源进行统计的机器节点,该机器节点可以设置在物理资源上,从而可以对资源使用情况进行整合。即,获取已分配资源的资源使用数据,可以是通过预设在物理资源上的机器节点获取所述已分配资源的资源使用数据。
因为再分配的是已分配资源的余量资源,分配这些余量资源存在原作业处理时候资源不够用的情况,因此,可以在未分配资源可以满足目标作业要求的情况下,将未分配资源再分配给目标作业,然后,再将余量资源归还至原作业。即,在将所述余量资源分配给待分配资源的目标作业后,可以检测待分配的资源中是否存在符合要求的未分配的资源;在所述待分配的资源中存在所述符合要求的未分配的资源的情况下,将所述符合要求的未分配的资源发送给所述目标作业。进一步的,可以确定符合要求的未分配的资源和分配给所述目标作业的余量资源是否位于同一物理资源;在符合要求的未分配的资源和分配给所述目标作业的余量资源位于同一物理资源的情况下,将所述符合要求的未分配的资源归还给所述余量资源所属的已分配的资源所对应的作业。在所述符合要求的未分配的资源和分配给所述目标作业的余量资源不位于同一物理资源的情况下,将所述符合要求的未分配的资源归分配给所述目标作业,以执行所述目标作业。
在将符合要求的未分配的资源分配给目标作业,以执行所述目标作业之后,可以分别获取目标作业在余量资源上的执行信息、目标作为在符合要求的未分配的资源上的执行信息;根据目标作业在余量资源上的执行信息、目标作业在符合要求的未分配的资源上的执行信息,确定目标作业是否在余量资源和符合要求的未分配的资源中的至少一个执行完成,在确定目标作业在余量资源和符合要求的未分配的资源中的至少一个执行完成的情况下,停止所述目标作业在所述余量资源和所述符合要求的未分配的资源上的执行。即,如果资源是充足的可以同时为目标作业分配余量资源和正常的未分配资源,然后两个同时执行,在有一方执行完成之后,就将两份资源都释放,从而缩短目标作业的执行时间。
进一步的,考虑到因为是对资源的二次分配,但是这种分配如果影响到最开始被分配的任务的正常运行,显然是不合理的,为了避免影响到对原本被分配资源的任务的有序运行,在实际实现的时候,在将所述余量资源分配给待分配资源的目标作业后,可以获取所述余量资源所属的已分配资源的资源使用数据;根据所述余量资源所属的已分配资源的资源使用数据,确定所述余量资源所述的已分配的资源的运行状态表征参数;在所述运行状态表征参数大于阈值状态参数的情况下,收回所述余量资源。
在一个实施方式中,将所述余量资源分配给资源需求量小于等于所述余量资源的资源量的待分配资源的目标作业,可以包括:在所述资源需求量小于等于所述余量资源的资源量的待分配资源的目标作业包括多个目标作业的情况下,将所述余量资源分配给所述多个目标作业中优先级最低的目标作业。即,选择优先级低的分配,从而避免分配优先级高的导致资源运行过程中的障碍。
在实际实现的过程中,如果作业节点在以超卖形式运行过程中收到了normal资源(即,常规资源),那么可以按照如下方式进行处理:
1)如果normal资源和超卖资源在同一台机器(即,在同一机器节点)上,那么作业管理器可以通知机器节点将作业节点从超卖形式转为normal形式;
2)如果normal资源和超卖资源不在同一台机器上,那么作业管理器可以根据normal资源启动作业节点的副本,相当于有2个相同的作业节点实例同时运行,最终以先执行完的作业节点实例作为实际完成的作业节点,同时杀掉另一个正在执行的作业节点。
机器节点是监控机器物理资源真实利用率的实际执行者,当资源使用率较低时,机器节点允许超卖作业节点的执行。如果资源利用率处于高水位时,机器节点为了保证normal作业节点的执行得到保障,会拒绝启动超卖作业节点、甚至会主动杀掉正在执行的超卖作业节点。
具体的,将所述余量资源分配给待分配资源的目标作业之后,可以实时检测已分配余量资源的机器节点的运行参数;根据所述运行参数,确定已分配余量资源的机器节点是否超出预设的负荷阈值;在确定超出预设的负荷阈值的情况下,收回已分配的余量资源。
其中,机器节点对资源的监控可以是多维度的,例如,可以包括但不限于:磁盘io、网络传输、机器load、cpu使用率、内存使用率等等,如果有某一维度处于高水位,那么机器的运行环境就是不稳定的。对于每一个维度,可以设置两个值,一个是预警值,一个是危险值。如果某一维度达到预警值,那么可以设置该机器节点拒绝启动新的超卖作业节点,如果达到危险值,那么机器节点主动杀掉部分超卖作业节点,直到资源使用低于危险值。
机器节点在监控自身资源使用情况的同时,机器节点可以将每一个维度的资源使用情况(实际使用和预警值)定期发送给资源管理器,这样资源管理器就可以据此选择真实物理资源利用率低的机器启动超卖作业节点,这样可以最大程度地保证超卖作业节点运行的稳定性。
对于作业节点的选择,在实现的时候,考虑到作业节点拥有不同的优先级,其中,优先级可以是根据业务的重要程度区分的,优先级越高,那么表明资源调度器越应该优先为其分配normal资源。当集群资源紧张时,会有若干不同优先级的作业节点处于排队等待资源的状态。在本例中,采用优先为低优先级的作业分配超卖资源的方式,这主要是因为对于单个作业节点而言,当集群紧张时资源调度器无法准确给出何时会为其分配资源,但是从整体而言,集群资源一定会流向优先级高的作业节点,即,作业节点的优先级越高,分配到资源的概率越大。假设选择排队队列中的高优先级作业节点进行资源超卖,那么在超卖执行过程中,分配到normal资源的概率就越大。如果normal资源和超卖资源在同一台机器是最理想的,这样集群物理资源利用率的提升是价值是最大的,否则,就会在normal资源所在机器上启动一个相同的作业节点,这样无论是超卖节点还是normal节点先跑完,另外一个节点总是“白跑”,这样虽然集群资源利用率是得到了提升,但是从作业节点角度看过去是“浪费”的。因此,可以优先选择低优先级的作业节点进行超卖,那么它分配到normal资源的概率就低,出现上述“浪费”的概率就越低,如果低优先级作业节点以超卖方式跑成功了这是最理想的,如果跑的过程中被机器节点杀掉了,那么所需时间也不会比等到normal资源再运行慢。
具体的,将所述余量资源分配给待分配资源的目标作业,可以包括:确定作业池中是否存在资源需求量小于等于所述余量资源的资源量的作业;在所述作业池中存在多个资源需求量小于等于所述余量资源的资源量的作业的情况下,将所述余量资源分配给所述作业池中优先级最低的作业。
对于超卖机器节点的选择,因机器节点会向资源管理器汇报机器在各个维度的真实物理资源使用情况和预警值,这样资源管理器可以统计每一维度的健康分=预警值-资源使用情况,如果某一维度的健康分小于等于0,则表明这台机器不能分配超卖作业节点,否则对所有维度的健康分进行求和,作为这台机器的健康分。对所有可以进行分配超卖资源的机器按照机器的健康分从高到低排序,选出topn的机器,为这些机器分配超卖资源。在实现的时候,机器的健康分可以是控制为每秒更新一次的。
具体的,在进行资源超卖调度的时候,可以按照以下方式确定最合适的机器分配超卖资源,例如,可以获取所述资源池中多个机器节点多个维度的运行参数;根据所述多个机器节点多个维度的运行参数,对所述多个机器节点进行可分配度排序;将所述可分配度最高的预设数量个机器节点已分配资源中的余量资源,作为确定的余量资源分配给待分配资源的目标作业。其中,上述多个维度可以包括但不限于以下至少之一:磁盘io、下载负荷、cpu利用率、内存使用率。
在实际实现的嘶吼,可以分配超卖资源的topn机器,选择排队队列中优先级从低到高的作业节点分配超卖资源,对于每台机器,每秒只分配1个超卖作业节点,通过这种方式可以有效控制单个机器节点的超卖资源分配的节奏,避免一次性分配过多超卖作业节点导致超卖作业节点执行过程中被杀的情况。
在本申请实施例中,本申请实施例提供的资源分配系统和资源分配方法通过根据所获取的当前资源使用数据,在不存在可用的未分配的资源(即第一资源)的情况下,从当前已分配的资源中搜索并确定符合资源需求量的余量资源作为第二资源;并将上述当前没有被使用的第二资源临时再分配出去以执行目标作业,从而解决了现有方法中存在的资源利用率低的技术问题,达到能充分利用已有资源,提高整体的作业处理效率的技术效果;又通过在为目标作业分配第二资源之后,根据更新后的当前资源使用数据为目标作业检索并确定可靠性等级更高的第一资源,保证了作业处理整体的稳定性;还通过选择优先级相对较低的目标作业优先分配第二资源,减少了资源浪费,进一步提高了资源利用率;此外,还优先选择风险等级较低的第二资源进行分配,减少了分配有第二资源的目标作业在执行中途被停止的风险,提高了分配有第二资源的目标作业执行的稳定性。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在服务设备上为例,图6是本发明实施例的一种资源分配方法的服务设备的硬件结构框图。如图6所示,服务设备10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务设备10还可包括比图6中所示更多或者更少的组件,或者具有与图5所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的资源分配方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的资源分配方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
在软件层面,上述的资源分配装置可以如图7所示,包括:
获取模块701,用于获取资源池中已分配资源的资源使用数据;
确定模块702,用于根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
分配模块703,用于将所述余量资源分配给待分配资源的目标作业。
在一个实施方式中,确定模块702具体可以获取所述资源池中多个机器节点多个维度的运行参数;根据所述多个机器节点多个维度的运行参数,对所述多个机器节点进行可分配度排序;将所述可分配度最高的预设数量个机器节点已分配资源中的余量资源,作为确定的余量资源分配给待分配资源的目标作业。
在一个实施方式中,上述多个维度可以包括但不限于以下至少之一:磁盘io、下载负荷、cpu利用率、内存使用率。
在一个实施方式中,上述分配模块703具体可以确定作业池中是否存在资源需求量小于等于所述余量资源的资源量的作业;在所述作业池中存在多个资源需求量小于等于所述余量资源的资源量的作业的情况下,将所述余量资源分配给所述作业池中优先级最低的作业。
在一个实施方式中,上述装置还可以在将所述余量资源分配给待分配资源的目标作业之后,实时检测已分配余量资源的机器节点的运行参数;根据所述运行参数,确定已分配余量资源的机器节点是否超出预设的负荷阈值;在确定超出预设的负荷阈值的情况下,收回已分配的余量资源。
在一个实施方式中,上述装置还可以在将所述余量资源分配给待分配资源的目标作业之后,确定所述资源池中是否存在可分配的常规资源;在确定存在可分配的常规资源的情况下,将所述常规资源分配给所述目标作业。
在一个实施方式中,上述装置还可以在确定存在常规资源的情况下,将所述常规资源分配给所述目标作业之后,确定所述常规资源和所述余量资源是否位于同一机器节点;在确定位于同一机器节点的情况下,将所述余量资源转换为常规资源;在确定不位于同一机器节点的情况下,通过所述余量资源和所述常规资源并行运行所述目标作业。
在上例中,确定已分配的资源中的余量资源,并将余量资源分配给待分配资源的目标作业,即,对已分配资源中的余量数据进行二次分配,从而可以解决现有方法中存在的资源利用率低的技术问题,达到了充分利用资源,提升作业处理效率的技术效果。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
1.一种资源分配方法,其特征在于,包括:
获取资源池中已分配资源的资源使用数据;
根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
将所述余量资源分配给待分配资源的目标作业。
2.根据权利要求1所述的方法,其特征在于,根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源,包括:
获取所述资源池中多个机器节点多个维度的运行参数;
根据所述多个机器节点多个维度的运行参数,对所述多个机器节点进行可分配度排序;
将所述可分配度最高的预设数量个机器节点已分配资源中的余量资源,作为确定的余量资源分配给待分配资源的目标作业。
3.根据权利要求2所述的方法,其特征在于,所述多个维度包括:磁盘io、下载负荷、cpu利用率、内存使用率。
4.根据权利要求1所述的方法,其特征在于,将所述余量资源分配给待分配资源的目标作业,包括:
确定作业池中是否存在资源需求量小于等于所述余量资源的资源量的作业;
在所述作业池中存在多个资源需求量小于等于所述余量资源的资源量的作业的情况下,将所述余量资源分配给所述作业池中优先级最低的作业。
5.根据权利要求1所述的方法,其特征在于,在将所述余量资源分配给待分配资源的目标作业之后,所述方法还包括:
实时检测已分配余量资源的机器节点的运行参数;
根据所述运行参数,确定已分配余量资源的机器节点是否超出预设的负荷阈值;
在确定超出预设的负荷阈值的情况下,收回已分配的余量资源。
6.根据权利要求1所述的方法,其特征在于,在将所述余量资源分配给待分配资源的目标作业之后,所述方法还包括:
确定所述资源池中是否存在可分配的常规资源;
在确定存在可分配的常规资源的情况下,将所述常规资源分配给所述目标作业。
7.根据权利要求6所述的方法,其特征在于,在确定存在常规资源的情况下,将所述常规资源分配给所述目标作业,之后,所述方法还包括:
确定所述常规资源和所述余量资源是否位于同一机器节点;
在确定位于同一机器节点的情况下,将所述余量资源转换为常规资源;
在确定不位于同一机器节点的情况下,通过所述余量资源和所述常规资源并行运行所述目标作业。
8.一种服务设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
获取资源池中已分配资源的资源使用数据;
根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源;
将所述余量资源分配给待分配资源的目标作业。
9.根据权利要求8所述的设备,其特征在于,所述处理器根据所述已分配资源的资源使用数据,从所述已分配资源中确定出余量资源,包括:
获取所述资源池中多个机器节点多个维度的运行参数;
根据所述多个机器节点多个维度的运行参数,对所述多个机器节点进行可分配度排序;
将所述可分配度最高的预设数量个机器节点已分配资源中的余量资源,作为确定的余量资源分配给待分配资源的目标作业。
10.根据权利要求9所述的设备,其特征在于,所述多个维度包括:磁盘io、下载负荷、cpu利用率、内存使用率。
11.根据权利要求8所述的设备,其特征在于,所述处理器将所述余量资源分配给待分配资源的目标作业,包括:
确定作业池中是否存在资源需求量小于等于所述余量资源的资源量的作业;
在所述作业池中存在多个资源需求量小于等于所述余量资源的资源量的作业的情况下,将所述余量资源分配给所述作业池中优先级最低的作业。
12.根据权利要求8所述的设备,其特征在于,所述处理器在将所述余量资源分配给待分配资源的目标作业之后,还:
实时检测已分配余量资源的机器节点的运行参数;
根据所述运行参数,确定已分配余量资源的机器节点是否超出预设的负荷阈值;
在确定超出预设的负荷阈值的情况下,收回已分配的余量资源。
13.根据权利要求8所述的设备,其特征在于,所述处理器在将所述余量资源分配给待分配资源的目标作业之后,还:
确定所述资源池中是否存在可分配的常规资源;
在确定存在可分配的常规资源的情况下,将所述常规资源分配给所述目标作业。
14.根据权利要求13所述的设备,其特征在于,所述处理器在确定存在常规资源的情况下,将所述常规资源分配给所述目标作业,之后,还:
确定所述常规资源和所述余量资源是否位于同一机器节点;
在确定位于同一机器节点的情况下,将所述余量资源转换为常规资源;
在确定不位于同一机器节点的情况下,通过所述余量资源和所述常规资源并行运行所述目标作业。
15.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至7中任一项所述方法的步骤。
技术总结