面向分布式平台的服务实例精细化调度方法及系统与流程

文档序号:21407673发布日期:2020-07-07 14:41阅读:194来源:国知局
面向分布式平台的服务实例精细化调度方法及系统与流程

本发明涉及一种面向分布式平台的服务实例精细化调度方法及系统,主要应用于涉及互联网技术领域,特别涉及分布式服务部署平台的资源管理和服务实例调度技术领域。



背景技术:

分布式服务部署平台是一种基于具体集群,按照服务拥有者提供的服务配置信息、可执行文件,将服务部署到集群上,并提供服务托管、服务监管等功能的平台。平台管理集群硬件设备和资源,将服务自动部署到最合适的节点上,大大降低服务部署的复杂度。

集群是分布式服务部署平台的载体。集群由具体的机器(也称为节点)组成,通常包括服务器、个人计算机、虚拟机等。机器其实就是资源的组合,因此资源是分布式服务部署平台的核心,是支撑服务运行的实体,可以表述为数量和能力,通常承载于具体硬件设备,包括中央处理器、随机存取存储器、本地磁盘存储、图形处理器和网络资源等等。

分布式平台对于资源的使用过程主要包括调度时和运行时。调度时是指需要把多实例的服务部署到集群的哪些节点上,决策输入就是集群中所有节点的资源描述。决策过程就是根据服务实例需要的资源数,淘汰不满足条件的节点,得到可调度的节点列表,然后再根据一定的算法计算出最优节点或节点列表。分布式服务部署平台重点关注调度时资源的表示和使用。

现有的分布式服务部署平台对于常用硬件资源类(如cpu&ram)支持比较好,对于偏图形计算、磁盘io高、网络通信量大的任务,现有平台支持不好。既有的资源表示方式,很难兼容所有资源类,更不用说要支撑资源的精细化调度。以gpu资源为例,常用的kubernetes调度系统,继承已有的资源表述方式,只能支撑到gpu设备粒度的调度,意味着服务对于gpu卡是独占的,不可以将单gpu用于多个服务实例。

服务实例调度算法考虑的资源类偏少,并且因为资源表示方式非常简单,不能支撑已有资源的更精细化的调度。



技术实现要素:

本发明的目的在于克服上述存在的问题,提供一种面向分布式平台的服务实例精细化调度方法及系统,实现资源类的更精细化调度。

本发明的目的是通过如下技术方案来完成的,

面向分布式平台的服务实例精细化调度方法,包括:

初始化资源信息,以获取资源类的最大值(此时可用值等于最大值);对于需要做多维描述的资源,采用降维编码的方式进行表示;

根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表;对于采用降维编码方式进行表示的资源,进行升维解码,以判断设备资源是否满足服务实例的要求;

根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点;

根据资源选择策略选取部署节点中的特定资源设备分配给服务实例,并更新可用资源数。

作为优选,所述降维编码:

对于某一类资源,如果一维资源数量为nf,对应的二维资源数量为{ns1,ns2,...,nsnf},假设b位二进制数可以表示二维资源数值的上限。二维资源数值为:ns1<<(0*b)|ns2<<(1*b)|...|nsnf<<((nf-1)*b)。资源降维编码的具体步骤,包括:

采集特定资源类的各资源设备的配额使用量;

降维编码得到各资源类的一维数值,即采用上述位运算表达式计算出资源类的一维数值;

同步各资源类的资源数值。

作为优选,所述升维解码:

对于二维描述的资源类,假设表示数值为k,一维资源数量为nf,同样b位二进制数表示二维资源数值的上限,对应nfi的二维资源数值为:(k>>((nfi-1)*b))&(2^b-1)。资源升维编码的具体步骤,包括:

获取所有节点所有资源类的一维配额使用量;

升维解码得到所有节点所有资源类的多维配额使用量(本发明中为二维配额使用量),即采用上述位运算表达式计算出nfi的二维资源数值;

遍历所有资源类,过滤不满足服务实例资源请求量的节点。

作为优选,所述根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表,具体为:

根据服务实例的资源请求量和各节点的资源全貌进行比较,将能够满足服务实例资源要求的节点划分到可调度节点列表。进一步,对于服务实例需要的所有资源类,都做如下判断:如果节点的可用资源数小于需要资源数,则节点不满足条件,不可被调度。所有资源类都通过检查,则被列为可调度节点。常见资源类包括cpu、内存、磁盘、带宽和gpu等,任何一类资源不能满足服务实例请求数,该节点都不能视为可调度节点。

作为优选,根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点(节点优选算法),具体为:

获取每种资源类资源请求量的平均值,选取其中请求量平均值最小的节点作为服务实例的部署节点;

或者,获取每种资源类资源请求量与平均值的方差,选取方差最小的节点作为服务实例的部署节点。

优选算法对于应用类型的依赖度比较高,通常应用都不需要关注所有的资源类,有的重cpu,有的重gpu,有的重ram,有的重磁盘等。本发明不理解具体服务差异,采用的节点优选算法包括资源最少请求算法和资源最均衡算法。资源最少请求算法,得到每种资源类资源请求量的平均值,最少的即为最优的。资源最均衡算法,得到每种资源类资源请求量与平均值的方差,方差最小的即为最优的。进一步,对于采用降维编码方式进行表示的资源,进行升维解码,计算出资源类的节点当前资源请求量和节点平均资源请求量,以支撑资源最少和资源最均衡算法的计算。

作为优选,根据资源选择策略选取部署节点中的特定资源设备分配给服务实例,具体为:

得到部署节点后,请求相应节点的部署执行模块部署服务实例;

部署执行模块根据服务实例,向资源管理模块请求具体的资源设备;

资源管理模块根据资源选择策略在资源类中选取特定资源设备绑定给服务实例。

作为优选,资源选择策略具体为:

选取同类资源设备中资源配额使用最少的设备,或者选取同类资源设备中资源配额使用最多、并且能够满足服务实例资源请求数量的设备。最少使用的好处是保证各资源设备间的负载是均衡的,而最多使用的优势在保证更大资源请求量的服务上线时,有足够的资源可以使用。

一种面向分布式平台的服务实例精细化调度系统,包括:资源管理模块、任务调度模块和部署执行模块,其中,

资源管理模块,一方面初始化资源信息,对于需要做多维描述的资源,采用降维编码的方式进行表示,并将获取的资源总量和可用量同步至任务调度模块;另一方面,在接收到部署执行模块发送的请求后,根据资源选择策略在资源类中选取特定资源设备绑定给服务实例;

任务调度模块,根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表;根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点;请求相应节点的部署执行模块部署服务实例;

对于采用降维编码方式进行表示的资源,进行升维解码,以判断设备资源是否满足服务实例的要求;

部署执行模块,根据服务实例,向资源管理模块请求具体的资源设备。

作为优选,所述降维编码:

对于某一类资源,如果一维资源数量为nf,对应的二维资源数量为{ns1,ns2,...,nsnf},假设b位二进制数可以表示二维资源数值的上限。二维资源数值为:ns1<<(0*b)|ns2<<(1*b)|...|nsnf<<((nf-1)*b)。资源降维编码的具体步骤,包括:

采集特定资源类的各资源设备的配额使用量;

降维编码得到各资源类的一维数值,即采用上述位运算表达式计算出资源类的一维数值;

同步各资源类的资源数值。

作为优选,所述升维解码:

对于二维描述的资源类,假设表示数值为k,一维资源数量为nf,同样b位二进制数表示二维资源数值的上限,对应nfi的二维资源数值为:(k>>((nfi-1)*b))&(2^b-1)。资源升维编码的具体步骤,包括:

获取所有节点所有资源类的一维配额使用量;

升维解码得到所有节点所有资源类的多维配额使用量(本发明中为二维配额使用量),即采用上述位运算表达式计算出nfi的二维资源数值;

遍历所有资源类,过滤不满足服务实例资源请求量的节点。

作为优选,所述根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表,具体为:

根据服务实例的资源请求量和各节点的资源全貌进行比较,将能够满足服务实例资源要求的节点划分到可调度节点列表。进一步,对于服务实例需要的所有资源类,都做如下判断:如果节点的可用资源数小于需要资源数,则节点不满足条件,不可被调度。所有资源类都通过检查,则被列为可调度节点。常见资源类包括cpu、内存、磁盘、带宽和gpu等,任何一类资源不能满足服务实例请求数,该节点都不能视为可调度节点。

作为优选,根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点(节点优选算法),具体为:

获取每种资源类资源请求量的平均值,选取其中请求量平均值最小的节点作为服务实例的部署节点;

或者,获取每种资源类资源请求量与平均值的方差,选取方差最小的节点作为服务实例的部署节点。

优选算法对于应用类型的依赖度比较高,通常应用都不需要关注所有的资源类,有的重cpu,有的重gpu,有的重ram,有的重磁盘等。本发明不理解具体服务差异,采用的节点优选算法包括资源最少请求算法和资源最均衡算法。资源最少请求算法,得到每种资源类资源请求量的平均值,最少的即为最优的。资源最均衡算法,得到每种资源类资源请求量与平均值的方差,方差最小的即为最优的。进一步,对于采用降维编码方式进行表示的资源,进行升维解码,计算出资源类的节点当前资源请求量和节点平均资源请求量,以支撑资源最少和资源最均衡算法的计算。

作为优选,资源选择策略具体为:

选取同类资源设备中资源配额使用最少的设备,或者选取同类资源设备中资源配额使用最多、并且能够满足服务实例资源请求数量的设备。最少使用的好处是保证各资源设备间的负载是均衡的,而最多使用的优势在保证更大资源请求量的服务上线时,有足够的资源可以使用。

本发明与现有技术相比有如下优点和效果:

1、本发明引入资源的多维描述方式,并通过降维编码的方式将资源的多维描述方式通过一个数值来表示,支撑更精细化的调度策略,可以让平台对于资源的使用更为合理,资源使用率更充分。

2、采用本发明,分布式服务调度平台可使用更多资源类作为调度决策,提升平台对于更多服务类型的支持度。

附图说明

图1是本发明降维编码方法流程图。

图2是本发明升维解码方法流程图。

图3是本发明调度系统模块交互图。

图4是本发明调度方法流程图。

具体实施方式

下面将结合附图对本发明做详细的介绍。

资源通常可以分为硬件资源和软件资源,典型的硬件资源包括cpu/ram/gpu/磁盘/网卡等,软件资源包括队列、ip池等。本发明把具有同类特征的资源称做一个资源类。gpu就是一个资源类。

对于资源类的描述,可以简单到一个数值,比如n块gpu卡,描述的是集群中一个节点拥有的gpu类资源的数量是n;也可以是更加具体的,比如n块gpu卡,每块上拥有的显存数为{20g,20g,…,20g},描述了集群中一个节点拥有n块gpu卡,以及对应的显存数值。对于前一种资源描述方式,对应的表示方式只需要一个数值就能满足,这种方式可以称为资源的一维描述方式;对于后一种,需要一个二维数组或map才能描述,可称之为资源的二维描述方式。(当然,如果需要更多的信息来描述资源以支撑调度时执行,可以采用更多维的资源描述方式)。资源的二维描述方式,引入了资源的更详细的信息,可以支撑调度时更精细化的调度决策。

常用分布式服务部署平台对于资源的表示方式通常是固定的,拥有通用的资源描述结构,并且通常来说都是一维的表示方式。对于资源的二维描述方式,需要一种降维表示的方法,即将资源的二维描述方式通过一个数值来表示,支撑实现到具体平台。

降维编码:

对于某一类资源,如果一维资源数量为nf,对应的二维资源数量为{ns1,ns2,...,nsnf},假设b位二进制数可以表示二维资源数值的上限。二维资源数值为:ns1<<(0*b)|ns2<<(1*b)|...|nsnf<<((nf-1)*b)。如图1所示,资源降维编码的具体步骤,包括:

采集特定资源类的各资源设备的配额使用量;

降维编码得到各资源类的一维数值,即采用上述位运算表达式计算出资源类的一维数值;

同步各资源类的资源数值。

升维解码:

对于二维描述的资源类,假设表示数值为k,一维资源数量为nf,同样b位二进制数表示二维资源数值的上限,对应nfi的二维资源数值为:(k>>((nfi-1)*b))&(2^b-1)。如图2所示,资源升维编码的具体步骤,包括:

获取所有节点所有资源类的一维配额使用量;

升维解码得到所有节点所有资源类的二维配额使用量,即采用上述位运算表达式计算出nfi的二维资源数值;

遍历所有资源类,过滤不满足服务实例资源请求量的节点。

一种面向分布式平台的服务实例精细化调度方法,分布式服务部署平台要把服务实例部署到集群,

首先,初始化资源信息,以获取资源类的最大值(此时可用值等于最大值);对于需要做多维描述的资源,采用降维编码的方式进行表示;

其次,根据服务实例需要的资源数,利用节点筛选算法来筛选节点,得到可调度节点列表;只有所有资源类满足服务实例需要的节点,才能加入到可调度节点列表;

然后,根据一定的节点优选算法,从可调度节点列表中优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点;

最后,部署执行模块拿到部署具体服务实例的任务后,要根据一定的策略(资源选择策略)选择资源类合适的资源设备,绑定到服务实例。

节点筛选算法:对于服务实例需要的所有资源类,都做如下判断:如果节点的可用资源数小于需要资源数,则节点不满足条件,不可被调度。所有资源类都通过检查,则被列为可调度节点。常见资源类包括cpu、内存、磁盘、带宽和gpu等,任何一类资源不能满足服务实例请求数,该节点都不能视为可调度节点。对于采用降维编码方式进行表示的资源,节点筛选算法中要对可用资源进行升维解码,判断是否有足够的资源设备满足条件。

节点优选算法:优选算法对于应用类型的依赖度比较高,通常应用都不需要关注所有的资源类,有的重cpu,有的重gpu,有的重ram,有的重磁盘等。本发明不理解具体服务差异,采用的节点优选算法包括资源最少请求算法和资源最均衡算法。资源最少请求算法,得到每种资源类资源请求量的平均值,最少的即为最优的。资源最均衡算法,得到每种资源类资源请求量与平均值的方差,方差最小的即为最优的。对于采用降维编码方式进行表示的资源,节点优选算法要对可用资源进行升维解码,计算出资源类的节点当前资源请求量和节点平均资源请求量,以支撑资源最少和资源最均衡算法的计算。

对于部署执行模块,拿到需要部署的服务实例后,需要给服务实例绑定具体的资源设备。本发明采用两种办法选取特定资源设备:一是最少使用,同类资源设备中资源配额使用最少的设备即为分配设备;二是最多使用,同类资源设备中资源配额使用最多并且能够满足请求数量的设备即为分配设备。最少使用的好处是保证各资源设备间的负载是均衡的,而最多使用的优势在保证更大资源请求量的服务上线时,有足够的资源可以使用。

如图3所示,一种面向分布式平台的服务实例精细化调度系统,包括:资源管理模块、任务调度模块和部署执行模块,其中,

资源管理模块,一方面初始化资源信息,对于需要做多维描述的资源,采用降维编码的方式进行表示,并将获取的资源总量和可用量同步至任务调度模块;另一方面,在接收到部署执行模块发送的请求后,根据资源选择策略在资源类中选取特定资源设备绑定给服务实例;

任务调度模块,根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表;根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点;请求相应节点的部署执行模块部署服务实例;

对于采用降维编码方式进行表示的资源,进行升维解码,以判断设备资源是否满足服务实例的要求;

部署执行模块,根据服务实例,向资源管理模块请求具体的资源设备。

作为优选,所述资源降维编码的具体步骤,包括:

采集特定资源类的各资源设备的配额使用量;

降维编码得到各资源类的一维数值;

同步各资源类的资源数值。

降维编码得到各资源类的一维数值,具体为:

采用位运算表达式ns1<<(0*b)|ns2<<(1*b)|...|nsnf<<((nf-1)*b)计算出资源类的一维数值,式中nf为资源类的一维资源数量,对应的二维资源数量为{ns1,ns2,...,nsnf},b为能够表示二维资源数值上限的二进制数。

作为优选,所述资源升维编码的具体步骤,包括:

获取所有节点所有资源类的一维配额使用量;

升维解码得到所有节点所有资源类的多维配额使用量(本发明为二维配额使用量);

遍历所有资源类,过滤不满足服务实例资源请求量的节点。

升维解码得到所有节点所有资源类的二维配额使用量,具体为:

采用位运算表达式(k>>((nfi-1)*b))&(2^b-1)计算出nfi的二维资源数值,式中,k为降维编码后得到的一维数值,nf为资源类的一维资源数量,b为能够表示二维资源数值上限的二进制数。

作为优选,所述根据服务实例需要的资源,筛选出所有资源类满足服务实例需要的节点,加入可调度节点列表,具体为:

根据服务实例的资源请求量和各节点的资源全貌进行比较,将能够满足服务实例资源要求的节点划分到可调度节点列表。进一步,对于服务实例需要的所有资源类,都做如下判断:如果节点的可用资源数小于需要资源数,则节点不满足条件,不可被调度。所有资源类都通过检查,则被列为可调度节点。常见资源类包括cpu、内存、磁盘、带宽和gpu等,任何一类资源不能满足服务实例请求数,该节点都不能视为可调度节点。

作为优选,根据可调度节点列表优选节点,得到服务实例与节点的映射关系,作为服务实例的部署节点(节点优选算法),具体为:

获取每种资源类资源请求量的平均值,选取其中请求量平均值最小的节点作为服务实例的部署节点;

或者,获取每种资源类资源请求量与平均值的方差,选取方差最小的节点作为服务实例的部署节点。

优选算法对于应用类型的依赖度比较高,通常应用都不需要关注所有的资源类,有的重cpu,有的重gpu,有的重ram,有的重磁盘等。本发明不理解具体服务差异,采用的节点优选算法包括资源最少请求算法和资源最均衡算法。资源最少请求算法,得到每种资源类资源请求量的平均值,最少的即为最优的。资源最均衡算法,得到每种资源类资源请求量与平均值的方差,方差最小的即为最优的。进一步,对于采用降维编码方式进行表示的资源,进行升维解码,计算出资源类的节点当前资源请求量和节点平均资源请求量,以支撑资源最少和资源最均衡算法的计算。

作为优选,资源选择策略具体为:

选取同类资源设备中资源配额使用最少的设备,或者选取同类资源设备中资源配额使用最多、并且能够满足服务实例资源请求数量的设备。最少使用的好处是保证各资源设备间的负载是均衡的,而最多使用的优势在保证更大资源请求量的服务上线时,有足够的资源可以使用。

服务实例的精细化调度方法主要可应用于分布式服务部署平台的调度时,其依托资源的降维表示方式。对应的执行步骤包括以下几个部分:

1.资源管理模块采集到具体资源类信息后,对于需要做二维描述的资源,采用降维编码的方法表示资源;并将当前节点经过降维编码后的资源总量和可用量定时同步给任务调度模块;

2.任务调度模块收到服务实例部署任务后,根据服务实例对资源的需求以及节点当前的资源现状,采用前述节点筛选算法筛选可调度节点;

3.任务调度模块得到可调度节点列表,采用节点优选算法,优选出合适部署的节点或节点列表;

4.得到部署节点后,请求相应节点的部署执行模块部署服务实例;

5.部署执行模块根据服务实例,向资源管理模块请求具体的资源设备;

6.资源管理模块根据前述资源选择策略,选取特定资源设备绑定给服务实例,并更新可用资源数。

实施例1

如图4所示,本实施例采用资源降维表示方式和服务实例的精细化调度方法,基于gpu资源类来实现,包括如下具体步骤:

1.资源管理模块初始化资源信息,并且在部署实例变更后更新节点资源到任务调度模块。对于资源的二维信息,需要采用降维编码的方法表示。一个节点可以安插多块gpu设备,每个gpu设备包含一定数量的显存,显存就是gpu资源类中的二维信息,通过前述降维编码的方式得到节点的gpu资源类数值。初始化阶段,主要是获取资源类的最大值,此时可用值等于最大值。

2.任务调度模块收到服务实例部署请求时,根据服务实例的资源请求量和节点的资源全貌做比较,能满足服务实例资源要求的节点划分到可调度节点列表。对于做了二维描述的资源,需要升维解码资源数值,来判断具体的设备资源是否满足服务实例的要求。只有足够的gpu资源设备满足服务实例要求,才能将设备绑定给服务实例使用,因此对应节点才能算是可调度节点。

3.任务调度模块在可调度节点列表中优选节点(采用前述节点优选算法),得到服务实例与节点的映射关系,即特定服务实例部署到的具体节点。

4.得到部署节点后,请求相应节点的部署执行模块部署服务实例。

5.部署执行模块拿到服务实例部署任务后,向资源管理模块请求具体的资源设备。

6.资源管理模块采用前述资源选择策略在资源类中优选资源设备,选择合适的资源设备绑定给服务实例。为保持gpu资源设备的使用均衡性,可将显存使用量最少的gpu资源设备绑定给服务实例。资源管理模块更新节点的可用资源,并同步到任务调度模块,以支撑后续任务的调度决策。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1