虚拟机(Visual Machine)的云平台的自动伸缩扩容(auto-scaling)技术

    云计算平台中允许客户依据应用的负载进行云计算资源的弹性动态伸缩(理想的情况是实现一个用多少付费多少的模型,最大限度地降低用户的运营成本)

    在进行讨论之前,先对几个名词进行定义

       1)客户:使用云服务的人,在云上部署他的应用

       2)用户: 使用部署在云上的应用的人

   

Auto-scaling的基础

    云计算的一个关键特点是弹性伸缩,但它是一把双刃剑,因为它允许应用依据负载动态地申请和释放资源,但是确定一个合适的资源量并不容器,那么需要一个系统自动地依据负载来调整资源量(尽可能得减少人工的干预)。

    资源的伸缩主要有两种:

1)垂直伸缩:简单的说就是伸缩的时候以虚拟机为单位,直接增加或减少虚拟机的数量

2)水平伸缩:对虚拟机的内部的资源(如CPU、存储等)进行伸缩

    但大多数操作系统在水平扩容时都需要重新启动虚拟机,因此很多云服务商都只提供垂直伸缩。

    那怎么样来判断一个一个auto-scaling系统是否合格呢:

1)在客户(应用的部署者)和终端用户之间的Service Level Agreement (SLA),比如说满足一定的响应时间

2)在云服务提供商和客户之间的SLA,比如说满足云平台的一定的资源利用率

    Auto-scaling的实现主要面临几个问题:

1)Under-provisioning:即应用没有获得足够的资源来应对用户的请求,不能满足SLA,需要增加更多的资源

2)Over-provisioning:即应用在满足SLA后还有过多的资源,客户付出了不必要的成本

3)Oscillation:当伸缩的动作执行的过快时,可能会出现资源波动的现象(刚刚扩容又缩容)。可以伸缩后添加一个懒惰时间(此时不进行任何伸缩扩容)来避免波动

     Auto-scalin系统一般包含四个部分:

               1)Monitoring:监控系统主要是获得系统和应用的状态信息

                         硬件信息: CPU利用率,存储利用率,网络接口

                         操作系统进程:缺页,CPU调度

                         负载均衡: 请求访问队伍的长度,当前对话的进程数量,拒绝请求的数量

               2)Analysis: 分析监控系统的信息估计未来的资源使用情况和需求

           reactive:使用从监控系统获得的最后的系统值进行判断。不做任何预测,仅仅当检测到系统负载变化时才会做出响应。难以应对突发的负载

                proactive:着重通过预测未来的需求来完成对资源的分配

               3)Planning: 制定一个合适的资源伸缩计划

               4)Execution:执行

 

 Auto-scaling技术

        1  static threshold-based rule

    云服务提供商大多仅仅使用基于阈值的规则提供 reactive的自动伸缩 。这种方法是预先设定一个阈值,当系统状态到达这个阈值时,就会触发自动伸缩的功能。

    这种auto-scaling方法因其比较简单,这对于客户来说很有吸引力。但是它也有缺点:第一是为应用设定一个阈值需要对应用负载的趋势有一个很深的认识,第二在面对突发的负载时,这种方法的时效性比较低,反应比较慢

    基于阈值的规则一般会设定最少两个规则,一个用来扩容,一个用来缩容,例如:

    例子中x是系统状态的值,thrU是设置的上阈值,thrL是设置的下阈值,durU的时间是在遇到这种情况是多少秒内会触发,S是每次扩容的值,inU是这伸缩执行后多少时间内不进行任何伸缩(用于防止波动)

    举一个简单例子是,当平均的CPU资源利用率超过70%的时间持续超过5分钟时,扩充两个虚拟机,并且在接下来的10分钟内不做任何伸缩

 

        2  control theory

    控制变量u(例如 虚拟机的数量)目标系统的输入,受控变量y(如CPU负载)是目标系统的输出。    

    控制器通过调整控制变量u来保持受控变量y接近期望的值或者预先设定 的yref。为了实现这个目的,就要构建输入与输出之间的模型,它决定了输入如何影响输出的值。

             

    常见的控制器有以下几种:

       1)Fixed gain controllers(固定增益控制器):这类控制器比较简单,在确定参数后,参数在控制器运行时间内不变

       2)Adaptive controllers(自适应控制器):能够依据条件的变化在线自动调整参数,适用于缓慢变化的负载环境,不适用与突变的环境

                      3)Model predictive controllers (模型预测控制器):基于模型和当前的输出预测系统未来的行为

               控制论的效率取决于控制器的种类和目标系统的动态变化,构建一个可靠的映射输入和输出变量的模型并不容易

 

        3  reinforcement  learning

    加强学习的方法无需任何先验的知识,就能够为每一个应用状态设计一个最优的伸缩策略。它着重学习机构(例如,auto-scaler)和它的环境(例如应用)之间的直接交互

               其中α是学习率(learning rate),γ 是贴现因子(discount factor)

    加强学习的方法主要有几个缺点:

      1)初始的性能很差并且需要很长的训练时间

        比较好的解决方法是在前期先用其他的代替方法来控制auto-scaling的系统,同时加强学习的模型也进行训练,待训练好时再使用加强学习 模型控制系统

                     2)需要很大的状态空间,在最简单的形式中,查找表用于为每一个可能的状态动作对存储一个单独的值,这些状态是成指数级增长的,所以当查找表很大时,每一次访问都可能需要很长的时间

        用查找表来表示Q函数并不高效,可以使用其他非线性的函数(如 neural networks, CMACs (Cerebellar Model Articulation Controllers), regression trees, support vector machines)

      3)最佳模型的适应性比较差,加强学习方法能够很好地解决相对缓和的变化,但是对于突发的负载变化表现并不好,因为它需要寻找新的最佳策略

 

        4  queuing theory

      排队论可以用来估计系统的性能指标(例如队伍的长度、请求的平均等待时间),可以分为简单的队列模型和复杂的队列网络

      排队论的基础机构如上图所示,请求到达系统后将入队,直到它们执行完才出队。

      在一个标准的auto-scaling系统中,一个队伍可由A/B/C/K/N/D(如:例如: M/M/1/ ∞/ ∞/FIFO )来表示,其中K,N,D是可选的

        A:Inter-arrival time distribution(到达时间间隔分布)

        B: Service time distribution. (服务时间分布)

            常见的A和B的值有:M,D,G

                                                  M:表示Markovian(马尔可夫链),它指的是一个泊松分布的过程,它的特征是一个参数单位λ (表示每个时间单位到达的请求),因此到达时间或者服务时间将服从指数分布

                                                  D:表示为一个固定的值

                                                  G:对应于具有已知参数的一般分布

          C:Number of servers.(服务器数量)

                  K:System capacity or queue length(系统能力或队伍长度):即系统最多能服务的用户数量

                            N: Calling population (要求服务的总体)  

             D: Service discipline or priority order(服务纪律或优先次序): 先来先服务……

        队列模型通常被用在一些固定的系统结构中,因为任何系统结构或者参数需求的变化都需要重新构建模型。此外队列模型是一个分析工具,它还需要另外的一个组件来完成auto-scale。

                    总的来说排队论在设计一个通用的auto-scaling系统时可能并不是一个最好的选择。

 

        5  timeseries analysis

    时间序列是在一个固定的时间间隔(如每分钟)采集系统的性能指标(如平均CPU负载)。它得到的结果X包含一组w(时间序列的长度)个观察值

时间序列方法可以基于最新的q(滑动窗口值,q<=w)预测未来的时间序列的值。时间序列分析技术尝试识别时间序列所遵循的模式,然后使用这种模式来推断未来的价值。

时间序列模式可以用四种特性来描述:趋势(trend),季节性(seasonality),周期性(cyclical),随机性(randomness)。系统性能指标总体的趋势(上升或者下降)的变化会在一个时间序列上重复出现(例如,日、周、月或季节)。趋势主要表明系统性能指标的总体变化,季节性和周期性分别决定在一个特定的时间点上短期和长期的峰值。

 

     

 参考文章:A Review of Auto-scaling Techniques for Elastic Applications in Cloud Environments

转载于:https://www.cnblogs.com/yuxiaoba/p/9274717.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 3D学习笔记之一 界面介绍

因为学校的课程&#xff0c;本学期对Unity 3D有学习的要求&#xff0c;在博客中记录下自己的Unity学习之路&#xff08;内容摘录自书本和视频&#xff0c;书本为Unity 4.x从入门到精通&#xff09;一、Unity界面介绍首先进入Unity3D&#xff0c;在菜单栏&#xff0c;File中new …

Coding and Paper Letter(一)

2019独角兽企业重金招聘Python工程师标准>>> 最近发现需要在快速阅读背景下&#xff0c;对快餐式资源做整理与收集。以Coding&#xff08;以Github&#xff09;和Paper&#xff08;自己看到的一些论文&#xff0c;论文一般主要看题目和摘要做些简单小结&#xff09;…

MacBook刷机勘错篇

前一段时间突然发现自己的MacBook已经好久没有刷过系统了&#xff0c;10.9用着还好&#xff0c;但bootcamp装的win8.1越来越卡&#xff0c;越用越慢。想要重做一下双系统&#xff0c;后来就演变成了两个系统一起更新&#xff0c;再后来就演变成了一个惨案。因为自己一直也没有使…

Mac OS X 10.10更新及体验

前一阵子&#xff0c;更新了Mac OS 10.10 Yosemite&#xff0c;总体用起来感觉还是很不错的&#xff0c;是很值得升级&#xff0c;相对于10.9 Mavericks优化了不少东西。我之前写的使用教程有一些也就不适用了&#xff1b;比如更换Dashboard中的背景&#xff0c;10.10中Dashboa…

Mac OS X必备APP推荐之一

本篇博文要推荐一下装机必备的APP&#xff0c;因为电脑的使用需求因人而异&#xff0c;这里我根据我的见解和长时间的使用经验推荐一些我认为大家基本都用得到的APP&#xff0c;太过专业性质的我就不推荐了&#xff0c;当然我的推荐肯定会有疏漏和偏差的地方&#xff0c;还请熟…

2018-2019-2 20175235 实验四《Android开发基础》实验报告

实验目的 一、Android Studio的安装测试 二、Activity测试 三、UI测试 四、布局测试 五、事件处理测试 一.Android Stuidio的安装测试&#xff1a; 参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章&#xff1a; 参考http://www.cnblogs.com…

Mac OS X必备APP推荐之二

本篇接着上一篇APP推荐的博文&#xff0c;继续为大家推荐Mac下好用的APP。 一、首先推荐一款DaisyDisk&#xff0c;磁盘分析、清理工具。前面第一篇APP推荐中&#xff0c;我们推荐过APP和系统垃圾清理工具——Cleanmymac&#xff0c;这两个APP侧重有所不同。Cleanmymac主要清理…

Mac OSX使用VMware Fusion安装windows虚拟机教程

安装虚拟机之前&#xff0c;先要有两步准备工作。第一&#xff0c;安装并激活VMware Fusion&#xff0c;如果大家还没有下载VMware Fusion请参照上一篇博文&#xff0c;APP推荐之二&#xff0c;下载VMware Fusion并激活。第二&#xff0c;下载你想要安装的系统镜像。因为已经装…

java简介和开发环境搭建

因为本人的Java一直以来水平都不怎么样&#xff0c;大一的时候只考了60分。所以在临近毕业的时候&#xff0c;我选择了重修Java&#xff0c;这些天正在慢慢的回顾Java&#xff0c;会到博客里面记录一些Java的知识&#xff0c;不为有多少人来看&#xff0c;只希望自己有所收获。…

第六章 函数和宏定义实验(2)

C程序设计实验报告 实验项目&#xff1a; 1、利用复化梯形公式计算定积分 2、计算Ackerman函数 3、编写计算x的y次幂的递归函数getpower(int x,int y)&#xff0c;并在主程序中实现输入输出 4、编写计算学生年龄的递归函数 5、编写递归函数实现Ackman函数 姓名&#xff1a;王锦…

将控件保存为图片

原文:将控件保存为图片将控件保存为图片 周银辉 这里分别提供win form 和 wpf 两种方式 对于.net 2.0 我们可以简单地利用 BitBlt 函数来实现&#xff0c;非常简单&#xff0c;代码如下&#xff1a; publicstaticclassControlToImageConverter { privateconstInt32 S…

Linux基础命令---get获取ftp文件

get 使用lftp登录ftp服务器之后&#xff0c;可以使用get指令从服务器获取文件。 1、语法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 2、选项列表 选项 说明 -o 指定输出文件的名字&#xff0c;不指定则使用原来的名字 -c 如果失败&#xff0c;持续获取 -E 获取…

Unity3D学习笔记之二资源导入以及工程管理

本次教程&#xff0c;我们来建立自己的一个工程并导入模型&#xff0c;对模型进行处理。特别说明&#xff1a;这系列教程参考自人人素材翻译组出品的翻译教程《Unity游戏引擎的基础入门视频教程》&#xff0c;本博客中采用的模型和方法均来源于此。这是我浏览过好多教程后觉得讲…

关于cocos creator换装功能的实践与思考

2019独角兽企业重金招聘Python工程师标准>>> 最近在做一个基于cocos creator的微信小游戏&#xff0c;其中一个主要的功能是给角色进行换装。先来说下开发环境&#xff1a; cocos creator1.9.3spine 在官方的文档中只有设置皮肤的接口&#xff0c;实际上是存在可以部…

抖店一件代发实操,干货满满!

我是电商珠珠 没有货源的新手&#xff0c;在店铺刚开始的时候可以搞无货源模式&#xff0c;也就是一件代发&#xff0c;去搬运别人店铺的商品到自己店铺&#xff0c;再去利用信息差去赚取差价。 很多人不知道具体要怎么做&#xff0c;今天我就来给大家讲一讲。 一、入驻 入…

Unity3D学习笔记之三Prefab组件的使用

本次教程&#xff0c;我们来创建一个简单的Prefab组件。教程参考自人人素材翻译组出品的翻译教程《Unity游戏引擎的基础入门视频教程》。说到Prefab&#xff0c;中文翻译为预设体&#xff0c;在Unity官方的书本《Unity4.X从入门到精通》中的解释是&#xff1a;可以理解为是一个…

tomcat闪退解决方案

在这几天&#xff0c;遇到一个Tomcat启动闪退的问题&#xff0c;通过查阅各种资料&#xff0c;算是完美解决。在此分享给朋友们。 首先&#xff0c;确定你的问题在哪里 1.查询错误&#xff1a;winR 输入cmd&#xff0c;进入一般处理程序。通过cd 找到你Tomcat的bin文件夹&#…

NFS4文件锁机制探秘

2019独角兽企业重金招聘Python工程师标准>>> 简介 NFS4实现“租赁锁”。每个锁拥有一样的“租赁期”。客户端的读写操作将刷新“租赁期”。租赁期到期后&#xff0c;锁将被服务器释放。NFS4通过下述“模型”实现对锁的管理&#xff1a; 1) 清晰地划分客户端和服务器…

Stay Hungry Stay Foolish——网络学习平台分享

从1月24号回家也有一阵子了&#xff0c;今天已经是31号&#xff0c;这一个周的中心思想就是一个字&#xff0c;玩。 学生一但远离学校&#xff0c;就会碰到许多学习的阻力&#xff0c;有来自外界的&#xff0c;家里有活要干&#xff0c;有亲戚要访&#xff0c;有同学邀约&…

Unity3D学习笔记之四完善Prefab并添加First Person Controller

好久没学东西并用博客记录了&#xff0c;这个年过的很懒散&#xff0c;慢慢临近开学了&#xff0c;也要提前适应一下&#xff0c;写写东西&#xff0c;这样开学才能更好的进入状态呀&#xff5e;&#xff5e;本次笔记中&#xff0c;我们将来雕琢一个更加完善的Prefab&#xff0…