本文主要是介绍Elasticity in Cloud Computing: State of the Art and Research Challenges 阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 摘要
- 介绍
- 章节二:弹性
- 2.1 弹性定义和相关概念
- 2.2 弹性研究点分类
- 2.3 弹性性能评估
- 章节三 容器
- 未解决问题
摘要
- 回顾了经典和前沿的弹性解决方案
- 讲述了一个新型技术趋势:轻量级的容器虚拟化
- 讨论了弹性云计算的主要问题和研究挑战
- 对弹性计算的研究子方向做了一个分类
介绍
本文的主要贡献:
- 提出了弹性的精确定义并且强调了相关概念如伸缩性,效率,以及衡量弹性系统的方法
- 根据弹性机制的构造提供了一个扩展分类;如目的,模式,方法等等
- 讨论了容器技术和与弹性云的关联。本文是学术界第一个讨论容器弹性的文章
章节二:弹性
2.1 弹性定义和相关概念
解释了弹性的概念和与之相关的概念,讲述了经典的解决方案分类和新提出的扩展分类,以及在学术界中已经被使用于实验的平台
弹性定义: 一个系统通过添加和移除资源(例如 CPU核数,内存,虚拟机和容器实例)实时适应负载变化的能力,是云计算中的一个动态概念
能力:添加和移除资源
目的:实时适应负载变化
弹性的类型:
- 水平弹性:通过自动添加或移除和应用程序相关的计算资源实例来实时适应负载变化的能力
- 垂直弹性:通过自动添加或移除计算资源来实时适应负载变化的能力
相关定义:
- 伸缩性:通过添加或移除资源去满足增加或减少的负载,是与时间相互独立的静态概念,需要人为实现
- 有效性:如何有效的对资源进行添加和移除,当给定的工作量过程中消耗的资源越少,说明有效性越高。代表了应用程序中所提供资源的使用情况
- 资源供应和调度:通过对服务水平协议(SLAs)和供应商利润条件权衡设定一定延迟进行实例的返回
云计算中弹性的概念公式:
可知:
- 弹性是建立在可伸缩性之上
- 弹性可以看作可伸缩性的自动化,不过它的目标是最优化并且尽可能快的
状态:
指的注意的是弹性系统在扩大和减少资源的过程中可能导致当前分配的资源量偏离实际所需资源需求量,其中 S S S 代表的是所提供的资源, D D D 是应用程序所需的资源。因此会出现三种状态:
- 供应不足: S < D S<D S<D,这种情况下会导致性能退化,并且违反了用户和云服务提供者之间的服务水平协议
- 供应过度: S > D S>D S>D,虽然可以保证服务质量,但是导致了不必要的成本租用云资源
- 刚好满足: S = D S=D S=D,可以刚好满足工作负载并且保证服务质量(QoS)
如何衡量弹性:
-
可以通过资源供应和取消资源供应的延时进行衡量,除此之外还可以通过供应过度和供应不足的状态的延时总和去量化不同的弹性系统
-
可以计算由于进行弹性调整的反应时间来量化弹性,反应时间 = 触发弹性调整到适应的时间
2.2 弹性研究点分类
根据:配置,范围,目的,模式,方法,架构,提供者进行分类
2.2.1 配置:
表示的是云服务首次提供资源的方法,是通过用户自己选择还是已经固定好的
- 固定配置:提供一个固定容量的资源,这样的模式很难满足需求,因此经常供应过度或供应不足
- 可配置化:允许用户选择资源(如 cpu 的核数),用户可以通过以下预留方式预留资源
- 按需预留:资源马上预留,如果可用资源不足将拒绝请求
- 提前预留:客户发送初始请求并以固定的价格预留资源,以固定的价格预留资源,资源必须在一段特定的时间内可用
- Best effort reservation(不知道怎么翻译贴切):预留请求通过排队的方式进行处理
- 基于拍卖预留:特定的资源配置一旦价格低于客户的投标金额,就会动态的保留
2.2.2 范围:
弹性作用可以应用在内部结构或应用程序中,应用程序的弹性作用也叫弹性嵌入
内部结构: 弹性控制器检测系统并作出决策,内部结构基于虚拟化技术,如虚拟机和容器
弹性嵌入: 可以在应用程序可以在一层或多层中嵌入弹性控制器使得应用程序具有弹性
- 应用程序图:应用程序包含哪些组件和组件包含哪些实例的信息;组件分为动态和静态的,静态组件在在程序启动时启动,动态组件可以在运行过程中启动或停止。弹性控制器必须知道所有应用程序实例,组件和互连的信息并允许为应用程序执行弹性操作
- 代码嵌入:将弹性控制器嵌入到源代码中,应用程序本身执行弹性操作。该方法的好处是,减少了检测系统的使用。该方法的弹性控制器对应特定的一个应用
2.2.3 目的:
弹性有不同的目的,例如:改善性能,增加资源容量,节约能源,降低成本和确保供应
例如:
- 基础服务设施(IaaS):在提供服务质量的同时试图最小化资源实现最大化利润
- 平台服务设施(PaaS):在最小化成本的同时试图提升用户的体验质量并且最小化支付
弹性解决方案无法同时解决不同的目的,因此每一个解决方案通常对应一个角度。一个优化方式是去找到平衡矛盾目标的最佳方法
2.2.4 模式:
弹性是通过自动模式实现的,而伸缩可以通过人为的方式实现,但是人为的方式不能称为弹性
自动模式分为:
- 主动模式:通过预测技术预测未来所需的资源量
- 时间序列分析:时间序列指的是某一个指标在不同时间上的各个数值,被用来识别工作负载中的重复模式,来尝试预测未来的值。也就是对未来的资源和工作负载进行评估
- 预测未来值得方法:
- 移动平均值
- 自动回归
- 自动回归移动平均值
- Holt-winter 季节性方法
- 机器学习
- 识别重复模式的方法:
- 模式匹配
- 自相关
- 傅里叶变换
- 预测未来值得方法:
- 模型求解机制:通过概率模型检验或数学建模框架去学习系统的各样行为并预测未来的状态
- 马尔可夫决策行为
- 概率时间自动机
- 强化学习:决策者负责在每一个状态下做出决策使得最大化回报奖励。决策者前一个状态和回报的反馈进行学习
- 控制论:包括三种类型的控制器,开环控制器,反馈控制器,前反馈转发控制器
- 开环控制器:计算系统的输入
- 反馈控制器:监视系统的输出并纠正偏离预期目标的偏差
- 前反馈控制器:预测系统的行为并在出错之前做出反应
- 排队论:队列中考虑等待时间,到达率和服务时间的数学研究
- 时间序列分析:时间序列指的是某一个指标在不同时间上的各个数值,被用来识别工作负载中的重复模式,来尝试预测未来的值。也就是对未来的资源和工作负载进行评估
- 被动模式:弹性通过特定的阈值或规则触发,系统对负载作出反应触发对应的调整动作
- 静态阈值或规则触发:当超过阈值或满足条件是触发对应的弹性决策来添加或移除资源满足负载需求
- 动态阈值(自适应阈值):根据主机应用程序进行动态改变
2.2.5 方法:
分为水平伸缩或垂直伸缩
- 水平伸缩:是添加或移除实例的过程,可以通过管理程序实现
- 垂直伸缩:是修改一个实例中资源大小的过程;垂直弹性也可以称为细粒度资源配置,允许调整实例本身的资源大小以满足运行时的需求
- cpu 调整
- 内存调整:
- 指数移动平均值
- 内存膨胀
- 资源迁移:当主机资源不足是可以进行资源迁移
- 冷迁移: 即关闭虚拟机、数据迁移。需要迁移的只有系统盘数据、数据盘数据,而无需迁移内存数据,使用块迁移方式。
- 热迁移:又称动态迁移、在线迁移,是一种用户无感的迁移方式。虚拟机不需要关机,业务不被中断,但相对的是一种复杂的迁移方式。
2.2.6 架构:
弹性管理的解决方案架构可以是集中式或非集中式
- 集中式:只有一个弹性控制器
- 非集中式:有多个弹性控制器或应用管理程序,负责对不同的云平台的资源共给
2.2.7 供应者:
- 单一云:公有云或私有云
- 非单一云:混合云,联合云和云爆发
- 混合云:融合私有云和公有云
- 联合云:将不同服务提供商的云环境相互联结的云
- 云爆发:当私有云或数据中心计算能力不足时向另一个云动态请求计算资源
2.3 弹性性能评估
对弹性云系统通过实验进行性能评估具有重要意义,研究人员根据自己的需要使用不同的测试环境。
- 常见的实验平台:
- 模拟器:可以让开发者免费在可控环境下进行重复的测试系统性能
- CloudSim
- ContainerCloudSim
- GreenCloud
- OMNeT++
- iCanCloud
- SimGrid
- EMUSIM
- 自定义测试平台:在平台上有更多的控制权力,但是需要进行更多详细的配置
- OpenStack
- CloudStack
- OpenNebula
- Grid5000
- FutureGrid
- 真正的云服务提供商(公有云):在真正的云环境下进行测试有很大的缺点,无法控制外部因素可能对测试系统产生负面影响,因此云服务提供商提供内部结构,但是仍然需要监测器,自动缩放系统,应用程序基准和工作负载生成器。
- 模拟器:可以让开发者免费在可控环境下进行重复的测试系统性能
- 工作负载:在测试平台需要工作负载进行测试
- 工作负载生成器:
- Faban
- JMeter
- httperf
- 真实的工作负载:从真实的云平台获得并存储在跟踪文件中
- Google Cluster trace
- World cup
- Clark net
- 工作负载生成器:
- 应用程序基准:性能的衡量基准
- RUBBos
- RUBis
- TCPW
章节三 容器
本章节讨论容器技术,以及它的优缺点,和一些相关的概念
3.1 优缺点 :
随着对灵活性,伸缩性和资源利用率的追求,云服务商将容器引用到云计算中。容器技术更加轻量级并且资源利用率高于虚拟机技术,并且在同一个主机上的不同容器共享一个操作系统,并不需要新增操作系统。容器的使用可以减少使用管理程序,冗余操作系统内核,库和二进制文件。
优点:
- 相比虚拟机减少了启动和处理时间,存储开销
- 容器使用命名空间将每个进程分隔开来,在Linux操作系统中有 cgroups 资源隔离将资源隔离使用;命名空间和cgroups不会产生开销或性能损失。
- 容器解决了环境之间的可移植性和一致性问题
缺点:
- 由于容器和宿主主机公用内核,因此会产生安全问题,若容器中的应用程序导致内核崩溃,则整个系统都会奔溃
- 因为像Docker这样的新容器技术是最近开发的,因此缺少很多功能
3.3 容器编排和管理工具:
一些应用程序需要几十个容器运行在多个主机上来处理工作负载,处理主机和容器的复杂体系结构需要一套新的管理工具。
- Docker Swarm:是一个著名的Docker容器集群管理工具,使用 docker 的标准接口实现启动 docker,选择主机运行 docker
- Kubernetes:是谷歌制作的容器编排工具,它不仅可以管理单个容器,也可以管理槽,槽是一组多个容器能够被创建部署,调度并且销毁。在一个槽的容器共享同一个IP,通过NAT(Network Address Translation)可以实现槽和槽之间的通信
3.4:容器的弹性
未解决问题
- 协调性:资源应该无缝地从不同的云服务提供商或数据中心供应给用户,但是由于不同云之间的不兼容(没有标准的API),很难使用多个云提供资源。
- 资源粒度:垂直弹性对于根据需求提供相关的资源组合是非常重要的,而设定多大的资源粒度能够增加资源的使用率是需要探讨的问题
- 计费粒度:云提供商根据每个固定时间单位的资源消耗向客户收费,几乎所有的云服务提供商使用 1h 来作为最小的计费粒度。但如果只使用了 5 分钟依然会收取 1h 的费用。少数的云服务提供商较小的计费粒度能够使得用户支付大约实际资源的消耗
- 资源可用性:云服务提供商提供给用户的资源是有限制的,受到了云内部结构的容量限制。没有一个云服务提供商可以为用户提供无限的资源。不过对于一些大的云服务提供商对于经典的用户可以看作资源是不受限制的,例如 google,amazon
- 混合解决方案:主动和被动的方法有优点也有缺点。一个复杂的解决方案可以组合主动和被动方法,或垂直伸缩和水平伸缩
- 阈值的设定:选择一个合适的阈值是非常困难的,因为工作量和应用程序的行为会发生变化;固定的阈值会具有一定主观性,从而产生不确定性,因此需要一个自适应系统去解决不确定性
- 预测错误:预测技术在预测工作负载变化时,在一些情况下并不准确,错误的预测会导致供应过度或供应不足,因此会偏离预期的目标。因此具有有效的预测错误处理机制是必不可少的
- 评价方法:现在没有一个正式的评价技术和统一的测试平台去比较或评估不同的弹性方法或弹性系统
这篇关于Elasticity in Cloud Computing: State of the Art and Research Challenges 阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!