CN116775238A - 资源调度方法及装置、电子设备及存储介质 - Google Patents
资源调度方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116775238A CN116775238A CN202211459402.9A CN202211459402A CN116775238A CN 116775238 A CN116775238 A CN 116775238A CN 202211459402 A CN202211459402 A CN 202211459402A CN 116775238 A CN116775238 A CN 116775238A
- Authority
- CN
- China
- Prior art keywords
- resource scheduling
- application
- target
- resource
- target application
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000008859 change Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 description 5
- 238000013468 resource allocation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种资源调度方法及装置、电子设备及存储介质,其中,所述资源调度方法,包括:获取来自目标应用的资源调度请求;确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;根据所述资源调度策略为所述目标应用调度目标资源。如此,为不同应用灵活选择不同的资源调度策略,例如基于特定的优先级为目标应用分配资源,从而提高资源调度的灵活性以及目标应用运行的流畅性。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种资源调度方法及装置、电子设备及存储介质。
背景技术
目前的容器化技术方案中,容器资源集群(Kubernetes,k8s)通过其默认调度器实现自动化的资源调度服务。该默认调度器基于资源公平调度,监听指定域为空的数据结构(plain old data structure,pod)对象,发送绑定指令调度pod到工作节点上。
但由于各类大数据产品所需要处理的数据量动态变化,导致所需要的资源可能存在动态变化,如此,集群中的各个应用关系不再是全部同等的,不同应用的资源需求并非一致,则导致默认调度器的资源调度方式过于固定单一,无法应对多变的资源需求场景。
发明内容
有鉴于此,本发明提供一种资源调度方法及装置、电子设备及存储介质。
本发明的技术方案是这样实现的:
第一方面,本发明提供一种资源调度方法,所述方法包括:
获取来自目标应用的资源调度请求;
确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
根据所述资源调度策略为所述目标应用调度目标资源。
在一个实施例中,所述确定与所述资源调度请求匹配的资源调度策略,包括:
确定所述资源调度请求指示的目标应用的应用类型;
基于所述应用类型匹配的资源调度算法确定资源调度策略。
在一个实施例中,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,确定所述应用类型匹配的资源调度算法为第一类算法;
基于所述第一类算法确定所述目标应用在所述目标时段的资源调度优先级,和/或确定除所述目标应用外的其他应用在所述目标时段的资源调度优先级。
在一个实施例中,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示所述目标应用与关联应用协同运行,确定所述应用类型匹配的资源调度算法为第二类算法;
基于所述第二类算法确定所述目标应用与所述关联应用的资源调度策略。
在一个实施例中,所述目标应用与所述关联应用的资源调度策略,包括:
在预设时间窗内接收到目标应用与所述关联应用的资源调度请求时,为所述目标应用与所述关联应用调度目标资源。
在一个实施例中,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示所述目标应用的待处理数据量存在变化,确定所述应用类型匹配的资源调度算法为第三类算法;
基于所述第三类算法确定根据目标资源在预设队列中所占百分比为所述目标应用调度目标资源。
在一个实施例中,所述根据所述资源调度策略为所述目标应用调度目标资源,包括:
基于所述资源调度请求以及容器资源集群k8s,生成预设队列;
根据所述资源调度策略,将预设队列中的目标资源对应的数据结构pod与目标应用在所述k8s中对应的工作节点绑定。
在一个实施例中,所述方法还包括:
通过应用程序协调服务Zookeeper访问k8s中的主运行节点;
若所述主运行节点处于启动状态,则将当前调度器设置为副调度器;
在检测到所述主运行节点由启动状态切换至离线状态时,将所述当前调度器设置为主调度器。
在一个实施例中,所述方法还包括:
若所述主运行节点处于离线状态,则通过当前调度器获取主调度器权限;
若获取主调度器权限成功,则将所述当前调度器设置为主调度器。
第二方面,本发明提供一种资源调度装置,所述装置包括:
获取单元,用于获取来自目标应用的资源调度请求;
确定单元,用于确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
调度单元,用于根据所述资源调度策略为所述目标应用调度目标资源。
在一个实施例中,所述确定单元,具体用于:
确定所述资源调度请求指示的目标应用的应用类型;
基于所述应用类型匹配的资源调度算法确定资源调度策略。
在一个实施例中,所述确定单元,具体用于:
若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,确定所述应用类型匹配的资源调度算法为第一类算法;
基于所述第一类算法确定所述目标应用在所述目标时段的资源调度优先级,和/或确定除所述目标应用外的其他应用在所述目标时段的资源调度优先级。
在一个实施例中,所述确定单元,具体用于:
若所述应用类型指示所述目标应用与关联应用协同运行,确定所述应用类型匹配的资源调度算法为第二类算法;
基于所述第二类算法确定所述目标应用与所述关联应用的资源调度策略。
在一个实施例中,所述目标应用与所述关联应用的资源调度策略,包括:
在预设时间窗内接收到目标应用与所述关联应用的资源调度请求时,为所述目标应用与所述关联应用调度目标资源。
在一个实施例中,所述确定单元,具体用于:
若所述应用类型指示所述目标应用的待处理数据量存在变化,确定所述应用类型匹配的资源调度算法为第三类算法;
基于所述第三类算法确定根据目标资源在预设队列中所占百分比为所述目标应用调度目标资源。
在一个实施例中,所述调度单元,具体用于:
基于所述资源调度请求以及容器资源集群k8s,生成预设队列;
根据所述资源调度策略,将预设队列中的目标资源对应的数据结构pod与目标应用在所述k8s中对应的工作节点绑定。
在一个实施例中,所述调度单元,还用于:
通过应用程序协调服务Zookeeper访问k8s中的主运行节点;
若所述主运行节点处于启动状态,则将当前调度器设置为副调度器;
在检测到所述主运行节点由启动状态切换至离线状态时,将所述当前调度器设置为主调度器。
在一个实施例中,所述调度单元,还用于:
若所述主运行节点处于离线状态,则通过当前调度器获取主调度器权限;
若获取主调度器权限成功,则将所述当前调度器设置为主调度器。
第三方面,本发明提供一种电子设备,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
处理器运行所述计算机程序时,执行前述一个或多个技术方案所述方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令;计算机可执行指令被处理器执行后,能够实现前述一个或多个技术方案所述方法。
本发明提供的资源调度方法,包括:获取来自目标应用的资源调度请求;确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;根据所述资源调度策略为所述目标应用调度目标资源。如此,通过为不同应用灵活选择不同的资源调度策略,例如基于特定的优先级为目标应用分配资源,针对不同类型的目标应用可以动态选用更加适宜的资源分配方式,从而提高资源调度的灵活性以及目标应用运行的流畅性。
附图说明
图1为本发明实施例提供的资源调度方法的流程示意图;
图2为本发明实施例提供的资源调度系统的示意图;
图3为本发明实施例提供的资源调度方法的流程示意图;
图4为本发明实施例提供的资源调度方法的流程示意图;
图5为本发明实施例提供的资源调度方法的流程示意图;
图6为本发明实施例提供的资源调度方法的流程示意图;
图7为本发明实施例提供的资源调度装置的结构示意图;
图8为本发明实施例提供的调度器切换的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
如图1所示,本发明实施例提供一种资源调度方法,所述方法包括:
S110:获取来自目标应用的资源调度请求;
S120:确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
S130:根据所述资源调度策略为所述目标应用调度目标资源。
在本公开实施例中,资源调度方法可以应用于资源调度系统中,例如直接部署在k8s上的调度器等。目标应用可以为待运行的应用,需要请求调度资源以支持应用运行。目标资源可以为属于资源集群k8s的目标容器资源等。
在一个实施例中,如图2所示,资源调度系统可以包括资源调度器和调度算法核心,资源调度器与调度算法核心可以通过封装的调度接口连接。其中,资源调度器用于获取资源调度请求以及将资源调度请求通过调度接口发送至调度算法核心,调度算法核心封装调度算法,调度算法用于确定资源调度策略,因而调度算法核心可用于执行步骤S120,并通过资源调度器执行步骤S130对目标应用分配调度目标资源。
如此,通过调用调度接口来对于容器资源进行分配,则只需要配置实现该调度接口即可扩充调度算法,从而进一步提高实现定制化功能的效率。
在一个实施例中,与资源调度请求匹配的资源调度策略,可以指示为目标应用调度目标资源的方式,例如资源调度策略中可包含资源调度优先级,则可以指示在多个应用中为目标应用调度目标资源的优先级顺序。
在一个实施例中,资源调度策略还可以指示为目标应用调度的资源量或调度时刻等参数。
在一个实施例中,与资源调度请求匹配的资源调度策略,可以为与目标应用的应用类型匹配的资源调度策略,和/或,也可以为与目标应用对应的业务类型或者当前待处理的业务类型匹配的资源调度策略等。
在一个实施例中,确定资源调度策略,可以通过调度算法核心中的调度算法确定。例如,调度算法核心中可以包含内置调度算法以及应用定制算法,其中,内置调度算法可用于为不需定制的应用类型确定资源调度策略,例如包含先入先出(First in First out,FIFO)算法或公平(Fair)算法等通用算法。应用定制算法可用于为需要定制的应用类型确定资源调度策略,例如包含用于确定资源调度优先级的算法等。
在一个实施例中,资源调度方法至少可以应用于以下场景中:1、通过用户部署数据结构pod,运行k8s对应的资源调度器从而接管k8s的集群资源;2、通过用户提交pod的应用配置,指定调度器以及目标资源,从而目标应用使用特定策略在集群中运行。
在一个实施例中,资源调度系统也为容器化部署,例如使用“kubectl”命令部署,可快速启停。应用配置提交也可以在配置中加入调度器名称、目标资源和资源调度策略中的至少之一,从而提高资源调度便捷性。
如此,通过为不同应用灵活选择不同的资源调度策略,例如基于特定的优先级为目标应用分配资源,针对不同类型的目标应用可以动态选用更加适宜的资源分配方式,从而提高资源调度的灵活性以及目标应用运行的流畅性。
在一些实施例中,如图3所示,步骤S120可包括:
S131:确定所述资源调度请求指示的目标应用的应用类型;
S132:基于所述应用类型匹配的资源调度算法确定资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级。
在本公开实施例中,应用类型可以为目标应用的类型,也可以为目标应用对应的业务类型、目标应用当前待处理业务的业务类型或者目标应用待调度的目标资源类型等。
在一个实施例中,应用类型匹配的资源调度算法,可以为与目标应用的类型,也可以为目标应用对应的业务类型、目标应用当前待处理业务的业务类型或者目标应用待调度的目标资源类型等匹配的资源调度算法。
在一个实施例中,基于应用类型匹配的资源调度算法确定资源调度策略,可以包括基于应用类型匹配的内置调度算法或者应用定制算法确定资源调度策略。例如,应用类型指示目标应用需要定制资源调度策略时,基于应用类型匹配的应用定制算法确定资源调度策略;应用类型指示目标应用不需要定制资源调度策略时,基于应用类型匹配的内置调度算法确定资源调度策略。
在一些实施例中,如图4所示,步骤S132可包括:
S1321:若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,确定所述应用类型匹配的资源调度算法为第一类算法;
S1322:基于所述第一类算法确定所述目标应用在所述目标时段的资源调度优先级,和/或确定除所述目标应用外的其他应用在所述目标时段的资源调度优先级。
在本公开实施例中,第一类算法可以为时间分段算法,用于针对一个或多个目标时段内的目标应用进行资源调度。示例性地,一些大数据流处理应用,例如flink、storm或jstorm等应用在某一些时段上会有流量峰值,则需要保证其应用在该时段的资源调用优先级。因此,基于第一类算法确定的目标应用在目标时段的资源调度优先级,可以指示在目标时段时,预设队列中的所有其他的应用请求都将被降至最低的优先级,以保证目标应用的数据处理速度。
在一个实施例中,步骤S1321可包括:若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,或者指示目标应用在目标时段内待处理数据量达到上限值,或者指示目标应用在目标时段内待处理数据量的变化量和/或变化率达到预设值,则确定所述应用类型匹配的资源调度算法为第一类算法。
在一个实施例中,基于第一类算法确定的目标应用在目标时段的资源调度优先级,可以为目标应用在目标时段的资源调度优先级为最高级,或者为排序在预设优先级顺序区域内,例如优先级为1级至3级中的一个等。
在一个实施例中,基于第一类算法确定的除目标应用外的其他应用在目标时段的资源调度优先级,可以为其他应用在目标时段的资源调度优先级为最低,或者均低于目标应用在目标时段的资源调度优先级等。
在一个实施例中,所述方法还可包括:基于第一类算法确定目标应用在除目标时段外的其他时段的资源调度优先级,和/或确定除目标应用外的其他应用在其他时段的资源调度优先级。
例如,基于第一类算法确定目标应用在目标时段的关联时段的资源调度优先级为最低。其中,关联时段可以为目标应用的待处理数据量最低,或者待处理数据量低于预设阈值,或者指示目标应用在目标时段内待处理数据量的变化量和/或变化率低于预设值等,则将应用优先级调低以满足其他应用需求。
如此,对于在特定时段具有特定资源调度需求的目标应用,可以基于应用类型和第一类算法确定特定的资源调度策略以及资源调度优先级,从而在特定时段可以优先为目标应用提供资源调度,进一步优化目标应用运行效率。
在一些实施例中,如图5所示,步骤S132可包括:
S1323:若所述应用类型指示所述目标应用与关联应用协同运行,确定所述应用类型匹配的资源调度算法为第二类算法;
S1324:基于所述第二类算法确定所述目标应用与所述关联应用的资源调度策略。
在本公开实施例中,关联应用可以为与目标应用具备预设关联关系的应用,例如预设关联关系指示目标应用与关联应用协同运行以提供服务,目标应用或关联应用单独运行均无法提供服务。
在一个实施例中,第二类算法可以为组队分配算法,基于第二类算法确定的目标应用与关联应用的资源调度策略,可以指示在接收到来自目标应用和关联应用的资源调度请求时,为目标应用和关联应用调度目标资源。
在一个实施例中,所述目标应用与所述关联应用的资源调度策略,可包括:在接收到目标应用与关联应用的针对预设业务类型的资源调度请求时,为目标应用与关联应用调度目标资源。
其中,预设业务类型可以为目标应用与关联应用协同运行处理的业务类型。
在一个实施例中,所述目标应用与所述关联应用的资源调度策略,可包括:在预设时间窗内接收到目标应用与关联应用的资源调度请求时,为目标应用与关联应用调度目标资源。
其中,预设时间窗可以为固定值,或者也可以根据目标应用和/或关联应用设定,例如根据目标应用和关联应用待处理的业务类型设置,或者也可以根据历史资源调度情况确定,例如根据目标应用的历史资源调度响应时长确定预设时间窗等。
在一个实施例中,为目标应用与关联应用调度目标资源,可以为将目标应用与关联应用的资源调度优先级设置为目标优先级,并基于资源调度优先级调度目标资源。例如,目标优先级可以为最高优先级等。
如此,对于需要协同运行才能提供正常服务的多个应用,可以基于第二类算法提高协同运行的资源调度效率,减少对单个应用发出请求并调度资源后由于关联应用未调度资源导致业务依然无法正常运行,从而提高业务和应用的运行成功率。
在一些实施例中,如图6所示,步骤S132可包括:
S1325:若所述应用类型指示所述目标应用的待处理数据量存在变化,确定所述应用类型匹配的资源调度算法为第三类算法;
S1326:基于所述第三类算法确定根据目标资源在预设队列中所占百分比为所述目标应用调度目标资源。
在本公开实施例中,目标应用的待处理数据量存在一定变化时,无法确定调度器应使用的中央处理器(central processing unit,CPU)与内存等。待处理数据量存在变化,可以为待处理数据量在预设时长内的变化量或变化率达到预设条件,或者待处理数据量的变化频率达到预设条件等。例如变化量或变化率高于第一上限值,或者数据量在预设时长内的变化次数或变化频率高于第二预设值等。
在一个实施例中,预设队列可以为基于接收到的资源调度请求排列生成的预设队列,例如指向针对资源调度请求的待调度资源的预设资源队列等。预设队列可以指示来自多个应用的资源调度请求被接收到的顺序等。
在一个实施例中,第三类算法可以为资源比例算法,用于基于资源队列以及目标资源所占比例进行资源调度。根据目标资源在预设队列中所占百分比为目标应用调度目标资源,可以为在为目标资源扩容时,根据目标资源在预设队列中所占百分比扩展所述预设队列的资源,为目标应用调度目标资源。
例如,根据目标资源即特定容器所占使用队列资源的百分比部署,在需要扩容时只需要增加队列资源,特定容器所占用的资源也会跟着增加,特定容器所能处理的数据量也能满足需求。
如此,可以基于目标资源在队列中所占的比例进行部署,在需要扩容时只需扩展队列资源即可,无需对目标资源进行细粒度的扩容,提高向目标应用分配目标资源的效率。
在一些实施例中,步骤S130可包括:
基于所述资源调度请求以及容器资源集群k8s,生成预设队列;
根据所述资源调度策略,将预设队列中的目标资源对应的数据结构pod与目标应用在所述k8s中对应的工作节点绑定。
在本公开实施例中,预设队列可以为根据资源调度请求将k8s划分成的资源队列。资源调度器可用于将根据资源调度策略确定的待调度的目标资源与目标应用绑定,例如将目标资源对应的pod与目标应用对应的工作节点绑定。
在一些实施例中,所述方法还包括:
通过应用程序协调服务Zookeeper访问k8s中的主运行节点;
若所述主运行节点处于启动状态,则将当前调度器设置为副调度器;
在检测到所述主运行节点由启动状态切换至离线状态时,将所述当前调度器设置为主调度器。
在本公开实施例中,k8s中的主运行节点处于启动状态时,表明该主运行节点对应的调度器为主调度器,则当前调度器可设置为副调度器。其中,当前调度器可以为当前资源调度系统中的资源调度器。
在一个实施例中,所述方法还可包括:若主运行节点处于离线状态,或者未检测到主运行节点,则尝试创建主调度器,例如尝试将当前调度器设置为主调度器。若创建主调度器失败,则将当前调度器设置为副调度器。
在一个实施例中,所述方法还包括:若所述主运行节点处于离线状态,或者未检测到主运行节点,则通过当前调度器获取主调度器权限;若获取主调度器权限成功,则将所述当前调度器设置为主调度器。
在一个实施例中,当启动状态的主运行节点切换至离线状态,表明对应的主调度器下线,则可以将当前调度器切换为主调度器。若切换失败,则维持原状态不变,即当前调度器维持副调度器状态。
如此,在k8s容器的基础上提供另一层高可用机制,通过主运行节点信息对当前调度器进行设置,灵活切换主调度器和副调度器的状态,可在节点故障时迅速减少命令响应时间,从而提高系统的稳定性。
如图7所示,本发明实施例提供一种资源调度装置,所述装置包括:
获取单元10,用于获取来自目标应用的资源调度请求;
确定单元20,用于确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
调度单元30,用于根据所述资源调度策略为所述目标应用调度目标资源。
在一个实施例中,所述确定单元20,具体用于:
确定所述资源调度请求指示的目标应用的应用类型;
基于所述应用类型匹配的资源调度算法确定资源调度策略。
在一个实施例中,所述确定单元20,具体用于:
若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,确定所述应用类型匹配的资源调度算法为第一类算法;
基于所述第一类算法确定所述目标应用在所述目标时段的资源调度优先级,和/或确定除所述目标应用外的其他应用在所述目标时段的资源调度优先级。
在一个实施例中,所述确定单元20,具体用于:
若所述应用类型指示所述目标应用与关联应用协同运行,确定所述应用类型匹配的资源调度算法为第二类算法;
基于所述第二类算法确定所述目标应用与所述关联应用的资源调度策略。
在一个实施例中,所述目标应用与所述关联应用的资源调度策略,包括:
在预设时间窗内接收到目标应用与所述关联应用的资源调度请求时,为所述目标应用与所述关联应用调度目标资源。
在一个实施例中,所述确定单元20,具体用于:
若所述应用类型指示所述目标应用的待处理数据量存在变化,确定所述应用类型匹配的资源调度算法为第三类算法;
基于所述第三类算法确定根据目标资源在预设队列中所占百分比为所述目标应用调度目标资源。
在一个实施例中,所述调度单元30,具体用于:
基于所述资源调度请求以及容器资源集群k8s,生成预设队列;
根据所述资源调度策略,将预设队列中的目标资源对应的数据结构pod与目标应用在所述k8s中对应的工作节点绑定。
在一个实施例中,所述调度单元30,还用于:
通过应用程序协调服务Zookeeper访问k8s中的主运行节点;
若所述主运行节点处于启动状态,则将当前调度器设置为副调度器;
在检测到所述主运行节点由启动状态切换至离线状态时,将所述当前调度器设置为主调度器。
在一个实施例中,所述调度单元30,还用于:
若所述主运行节点处于离线状态,则通过当前调度器获取主调度器权限;
若获取主调度器权限成功,则将所述当前调度器设置为主调度器。
以下结合上述任一实施例提供一个具体示例:
本发明实施例提供了一种应用于资源调度系统的资源调度方法,其中,资源调度系统主要包括两个部分,一个部分为调度算法核心,主要负责决定每个应用请求的最佳位置,并将响应发送到资源管理平台,另一个部分为资源调度器,它负责转换容器系统资源,并通过调度器接口将资源请求发送至调度算法核心。
(1)调度算法核心
调度算法核心封装了所有的调度算法,从k8s容器下收集资源,并负责处理资源调度请求。调度算法核心决定每个请求的最佳位置,然后将响应分配发送到资源管理平台。为了后期的扩展,调度程序核心与底层平台无关,所有通信可通过调度程序接口进行。
调度算法运行一个单独的常规服务来查看请求和可用资源,并进行资源分配。调度算法核心可通过封装的接口来实现各种算法策略。
调度算法核心主要包含以下算法:
a.内置调度算法
包含先入先出(FIFO)、公平(Fair)等通用算法,如果应用无其他需求,通常只需选择先入先出即可。
b.应用定制算法
①、时间分段算法
示例性地,在云应用中,有一些大数据流处理应用例如flink、storm、jstorm等,在某一些时间段上会有流量峰值,需要保证其应用在该时间段的优先级。应用该算法后,在特定时间段时,当前队列中的所有其他的应用请求都将被降至最低的优先级以保证关键应用的数据处理速度。而在处理数据流量谷值时例如在夜间,则将应用优先级调低以满足其他应用需求。
②、组队分配算法
示例性地,一些应用之间具备相互依赖关系,例如Storm集群与Zookeeper集群,如果只有一个应用获取资源运行则无法正确向外部提供服务。因此需要将特定的两个应用进行组队分配,即只有当同时满足组队的应用的资源请求时,才对于组内的所有应用进行资源分配。
③、资源比例算法
示例性地,涉及到数据处理的服务,例如消息队列等,由于处理数据规模可能会随着时间而增加,在启动时调度器无法确定需要使用的中央处理器(central processingunit,CPU)与内存。此时使用到该算法,只需要判断特定容器所占使用队列资源的百分比即可部署,在需要扩容时只需要增加队列资源,容器所占用的资源也会跟着增加,其所能处理的数据量也能满足需求。
(2)资源调度器
资源调度器负责与Kubernetes交互,它负责转换Kubernetes集群资源,并通过调度程序接口将资源请求发送到调度程序核心。当调度器收到请求时,它负责将pod绑定到特定节点。资源调度器和调度算法核心之间的所有通信都是通过调度程序接口进行的。
如图8所示,调度器部分通过Zookeeper集群实现了高可用性集群(HighAvailable,HA)功能。
调度器通过Zookeeper获取主运行节点信息,如果主运行节点已经启动,则自动成为副调度器,如果主运行节点未启动,则尝试获取主调度器权限,成功获取则成为主调度器。当调度器成为副调度器后,则监控主调度器是否离线,如果离线的话则尝试转为主调度器,保证集群服务正常。
如此,在Kubernetes容器的基础上提供另一层高可用,Zookeeper集群可部署在容器外,可在节点故障时迅速减少命令响应时间,从而提高系统的稳定性。
本发明实施例还提供一种电子设备,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,处理器运行所述计算机程序时,执行前述一个或多个技术方案所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被处理器执行后,能够实现前述一个或多个技术方案所述方法。
本实施例提供的计算机存储介质可为非瞬间存储介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
在一些情况下,上述任一两个技术特征不冲突的情况下,可以组合成新的方法技术方案。
在一些情况下,上述任一两个技术特征不冲突的情况下,可以组合成新的设备技术方案。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种资源调度方法,其特征在于,所述方法包括:
获取来自目标应用的资源调度请求;
确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
根据所述资源调度策略为所述目标应用调度目标资源。
2.根据权利要求1所述的方法,其特征在于,所述确定与所述资源调度请求匹配的资源调度策略,包括:
确定所述资源调度请求指示的目标应用的应用类型;
基于所述应用类型匹配的资源调度算法确定资源调度策略。
3.根据权利要求2所述的方法,其特征在于,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示目标应用在目标时段内待处理数据量高于预设阈值,确定所述应用类型匹配的资源调度算法为第一类算法;
基于所述第一类算法确定所述目标应用在所述目标时段的资源调度优先级,和/或确定除所述目标应用外的其他应用在所述目标时段的资源调度优先级。
4.根据权利要求2所述的方法,其特征在于,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示所述目标应用与关联应用协同运行,确定所述应用类型匹配的资源调度算法为第二类算法;
基于所述第二类算法确定所述目标应用与所述关联应用的资源调度策略。
5.根据权利要求4所述的方法,其特征在于,所述目标应用与所述关联应用的资源调度策略,包括:
在预设时间窗内接收到目标应用与所述关联应用的资源调度请求时,为所述目标应用与所述关联应用调度目标资源。
6.根据权利要求2所述的方法,其特征在于,所述基于所述应用类型匹配的资源调度算法确定资源调度策略,包括:
若所述应用类型指示所述目标应用的待处理数据量存在变化,确定所述应用类型匹配的资源调度算法为第三类算法;
基于所述第三类算法确定根据目标资源在预设队列中所占百分比为所述目标应用调度目标资源。
7.根据权利要求1所述的方法,其特征在于,所述根据所述资源调度策略为所述目标应用调度目标资源,包括:
基于所述资源调度请求以及容器资源集群k8s,生成预设队列;
根据所述资源调度策略,将预设队列中的目标资源对应的数据结构pod与目标应用在所述k8s中对应的工作节点绑定。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过应用程序协调服务Zookeeper访问k8s中的主运行节点;
若所述主运行节点处于启动状态,则将当前调度器设置为副调度器;
在检测到所述主运行节点由启动状态切换至离线状态时,将所述当前调度器设置为主调度器。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述主运行节点处于离线状态,则通过当前调度器获取主调度器权限;
若获取主调度器权限成功,则将所述当前调度器设置为主调度器。
10.一种资源调度装置,其特征在于,所述装置包括:
获取单元,用于获取来自目标应用的资源调度请求;
确定单元,用于确定与所述资源调度请求匹配的资源调度策略;所述资源调度策略,至少指示所述目标应用对应的资源调度优先级;
调度单元,用于根据所述资源调度策略为所述目标应用调度目标资源。
11.一种电子设备,其特征在于,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器运行所述计算机程序时,执行权利要求1至9任一项所述资源调度方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令;所述计算机可执行指令被处理器执行后,能够实现如权利要求1至9任一项所述资源调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211459402.9A CN116775238A (zh) | 2022-11-17 | 2022-11-17 | 资源调度方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211459402.9A CN116775238A (zh) | 2022-11-17 | 2022-11-17 | 资源调度方法及装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775238A true CN116775238A (zh) | 2023-09-19 |
Family
ID=87984801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211459402.9A Pending CN116775238A (zh) | 2022-11-17 | 2022-11-17 | 资源调度方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775238A (zh) |
-
2022
- 2022-11-17 CN CN202211459402.9A patent/CN116775238A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3461087B1 (en) | Network-slice resource management method and apparatus | |
CN110647394B (zh) | 一种资源分配方法、装置及设备 | |
WO2017000673A1 (zh) | 一种共享缓存分配方法、装置及计算机存储介质 | |
CN112269641B (zh) | 一种调度方法、装置、电子设备及存储介质 | |
CN102714610B (zh) | 非阻塞准入控制 | |
CN112214288B (zh) | 基于Kubernetes集群的Pod调度方法、装置、设备和介质 | |
CN110912722B (zh) | 业务资源管理方法、装置、网络设备和可读存储介质 | |
CN113672391B (zh) | 一种基于Kubernetes的并行计算任务调度方法与系统 | |
US11601876B2 (en) | Method for controlling the admission of slices into a virtualized telecommunication network and the congestion likely to be generated between services instantiated on said slices | |
CN114385370B (zh) | 内存分配方法、系统、设备及介质 | |
WO2019076472A1 (en) | MANAGEMENT OF A VIRTUAL NETWORK FUNCTION | |
CN113886069A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN113672335A (zh) | 容器调度方法、装置、电子装置和存储介质 | |
CN117519953B (zh) | 一种面向服务器无感知计算的分离式内存管理方法 | |
CN111124593B (zh) | 信息处理方法及装置、网元及存储介质 | |
CN112527490A (zh) | 节点资源管控方法、装置、电子设备及存储介质 | |
CN117608760A (zh) | 应用于Kubernetes的云上应用混合部署方法 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN110677838A (zh) | 一种业务分配方法及装置 | |
Wu et al. | ABP scheduler: Speeding up service spread in docker swarm | |
CN117499490A (zh) | 基于多集群的网络调度方法及装置 | |
CN112751685B (zh) | 网络切片用户面容量配置方法、装置和系统 | |
CN109522113B (zh) | 一种内存管理方法及装置 | |
CN116775238A (zh) | 资源调度方法及装置、电子设备及存储介质 | |
CN116136799A (zh) | 算力调度管理侧设备及方法、算力提供侧设备及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |