机器学习同时对容器应用程序进行垂直和水平调度的方法与流程

文档序号:35346053发布日期:2023-09-07 19:45阅读:33来源:国知局
机器学习同时对容器应用程序进行垂直和水平调度的方法与流程

本发明属于计算机软件,特别是涉及机器学习同时对容器应用程序进行垂直和水平调度的方法。


背景技术:

1、随着计算机容器应用程序的出现,越来越多的企业开始使用抽象软件容器来管理云计算资源上的应用程序,如很多企业开始使用目前容器化技术最常用的实现方式,即docker来部署企业的项目和程序。针对容器化部署的应用程序,为了处理这些程序工作负载波动的情况,市面上一些企业也推出了容易的调度方式,这些调度方式一般是基于阈值以及在容器的水平方向上进行调整调度的方式,比如判定系统资源不足时可以自动关闭掉一些容器或在程序使用量达到峰值时主动开启新的容器,已经能够满足一部分用户的需求。但针对更复杂的情况,这种基于阈值的简单调度方式开始有些捉襟见肘。

2、容器技术的快速普及要求对容器化应用程序采取有效的部署和管理策略,本技术方案提出了两个容器调度的方向:在水平方向上允许增加或减少容器应用程序的实例,在垂直方向上允许增加或减少分配给每个应用程序实例的计算资源。现有的大部分同类产品大多数只考虑了水平方向上的容器的调度,针对容器应用程序实例的数量进行调度和管理,缺乏更细粒度的响应小的工作负载的变化。

3、而且,目前市面上的容器调度方法几乎都是使用基于阈值的调度方式,依赖基于包括cpu利用率在内的负载指标的最佳阈值策略,比如现有市面上最常见的kubernetes、docker swarm、amazon ecs,大部分使用的就是基于某些负载指标的最佳阈值策略,这些方法需要针对不同的情况和使用场景正确的设置合适的阈值参数,并且需要有经验的工程师来进行设置阈值参数这项繁琐的任务。而单单依靠设置阈值参数,无法适应复杂多变的使用场景,无法完全体现出容器调度的优势。


技术实现思路

1、本发明提供了机器学习同时对容器应用程序进行垂直和水平调度的方法,机器学习技术,通过水平和垂直弹性,在运行时适应基于容器的应用程序的部署,与驱动弹性的基于阈值的方法,该方法能够自定义自适应策略,而不需要手动调整各种配置;并且允许同时通过水平和垂直扩展轻松地调整应用程序部署,水平弹性允许增加(向外扩展)和减少(向内扩展)应用程序实例的数量即容器的数量,垂直弹性允许增加(按比例放大)和减少(按比例缩小)分配给每个应用程序实例的计算资源,相较于现有的大多数只考虑一种弹性的容器应用调度方法,可以过细粒度的垂直扩展更快地响应小的工作负载变化,也可以通过水平调整更快地响应突然出现的工作负载峰值,同时拥有将两个弹性维度结合起来用于基于容器的应用程序的优点;综上,解决了背景技术中的问题。

2、为解决上述技术问题,本发明是通过以下技术方案实现的:

3、本发明的机器学习同时对容器应用程序进行垂直和水平调度的方法,采用由容器应用程序、监视组件、分析组件、计划组件和执行组件构成的通用应用程序模型实现,机器学习是一种深度强化学习的算法,强化学习是指一组试错方法的集合,通过被控系统和环境之间的一系列交互,将机器学习模型中作出决策的人工智能系统成为智能体,智能体为学习作出良好的决策;

4、所述容器应用程序为执行特定任务的黑盒实体,并行地创建和执行有多个容器应用程序实例,每个容器应用程序实例自主工作并处理传入请求的一个子集;所述容器应用程序公开了对软件容器响应时间的要求,响应时间不超过目标响应时间rmax;

5、所述智能体以离散时间步长与容器应用程序交互,在每个时间步骤中代理观察容器应用程序状态并执行一个操作,一个时间步骤后,所述容器应用程序转换到一个新的状态,为了评估转换后状态付出的代价和下一步的状态转移,通过智能体评估q函数进行评估,q函数由q(s,a)组成,表示在状态s中执行动作a后的预期长期成本,状态s是在某个离散时间步长的状态;q函数用于采取扩展决策给定系统状态s以及智能体执行动作a,使q(s,a)最小化;通过观察实际发生的成本,q(s,a)随时间更新从而改进扩展策略;

6、将i时的容器应用程序状态定义为si=(ki,ui,ci),其中,ki是容器的数量即容器应用程序实例,ui是cpu利用率,u′表示下一时刻或下一状态的cpu利用率,ci是授予每个容器的cpu份额,设定ui∈{0,u,...,lu},ci∈{0,c,...,lc},其中u和c是合适的量子,还设定容器的范围为{1,2,...,kmax},其中kmax是允许的容器应用程序的最大个数;

7、针对与每个状态s∈s,有一组可行的适应行动a(s)∈a,其中a是所有行动的集合,由此提出两个动作模型5-action模型和9-action模型;

8、所述5-action模型由a={-r,-1,0.1,r}组成,其中表示垂直扩展即+r增加cpu份额,-r删除cpu份额,表示水平扩展,包括+1向外扩展以及-1向内扩展;a=0是不做决策;9-action模型为一个时间粒度下,智能体同时在水平和垂直方面做出决策,该9-action模型由a={-1,0,1,}×{-r,0,r}组成;在水平方向上允许增加或减少容器应用程序的实例,在垂直方向上允许增加或减少分配给每个应用程序实例的计算资源;

9、对于每个三元组(s,a,s′)关联了一个即时成本函数c(s,a,s),该成本函数捕获容器应用程序状态从s转换到s时执行操作动作a的成本,其中,s′是指在s状态下执行动作a后进入到下一个离散时间的状态;所述即时成本函数c(s,a,s′)如下:

10、

11、其中:cadp为调整成本,是调度容器进行调整所付出的代价;cperf为性能损失,是调整后程序可能超过响应时间限制rmax所付出的代价;cres为运行容器应用程序的资源开销,成本与容器应用程序实例的数量和分配的cpu份额成正比;verticl-scaling是一个向量,表示每个容器的cpu和内存的使用率;为指示函数,wadp、wperf、wres为权重因子,是不同代价的非负权重,并且wadp+wperf+wres=1;r(k,u,c)是状态s=(k,u,c)下的程序响应时间;此外,将动作a分解为容器添加/删除的数量a1和cpu份额增加/减少的数量a2;机器学习模型通过深度强化学习的方式,最小化预期的长期成本,通过观察实际发生的成本,q(s,a)随时间更新,从而改进扩展策略,进行针对容器的动态调度。

12、进一步地,所述软件容器采用软件容器docker,用以对容器应用程序的部署和执行进行管理。

13、进一步地,所述监视组件负责监听机器的整体状态,包括cpu使用情况、每个容器的cpu使用份额、内存使用情况、容器数量和每个容器应用程序的响应实现,相当于获取机器的状态,将该状态输入至分析组件中。

14、进一步地,所述分析组件和计划组件使用的是已经训练好的深度强化学习框架,通过深度学习框架决策出最合适的下一步动作,并将动作发送至执行组件,对整个机器或系统执行该动作。

15、进一步地,所述动作包括增加或删除容器数量,调整容器使用的计算机资源。

16、进一步地,所述执行组件在执行时考虑是在水平方向上执行即调整容器的数量,还是在垂直方向上执行即调整分配给容器使用的cpu份额。

17、本发明相对于现有技术包括有以下有益效果:

18、(1)通过机器学习技术,为容器服务提供调度技术,使得容器能够根据深度强化学习模型进行自适应的水平和垂直弹性调整,即在水平方向上允许增加或减少容器应用程序的实例,在垂直方向上允许增加或减少分配给每个应用程序实例的计算资源;考虑了垂直方面弹性(工作负载变化)也考虑了水平方面的弹性(容器数量变化),以及使用了机器学习技术来调整我们的策略,适应复杂的情况;不需要手动调整各种配置,更快地响应小的工作负载变化,也可以通过水平调整更快地响应突然出现的工作负载峰值,并且能够找出容器调度的最佳策略,优化容器数量和资源使用;

19、(2)相较于市面上的其它产品,本技术方案使用机器学习的方式自动化、自适应对容器调度策略进行调整,通过我们训练好的强化模型对下一步进行决策,选出最优的策略,而不是像其它产品一般使用的设置阈值的方式;本方案不需要人工配置各种调整的阈值,适应更加负责的网络生产环境;同时本技术方案考虑水平和垂直两个方向上的容器弹性调整,具有能够将两个弹性维度结合起来优化调度基于容器的应用程序的优点。

20、当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

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