论文部分内容阅读
云计算的出现,为大型互联网应用提供新的交付模型,以其超大规模、高可扩展性、按需服务等特点为下一代应用开发带来新的愿景。云中资源“无限性”以及pay-per-use的定价模式,使得应用能够借助云计算弹性特征应对负载变化,达到传统应用无法获得的弹性。云计算弹性是指在负载高峰期时申请更多资源以满足性能要求,负载降低时合并空闲资源以降低整体资源开销的能力,这是云计算主要特征之一。云中大型应用因规模和复杂度增加,一般采用多层设计架构,而大部分应用是数据驱动的,数据层面的弹性扩展对整个系统扩展至关重要。云计算环境数据存储重点考虑可扩展性,这相对于传统关系型数据库有诸多不同,由于数据存储固有的有状态性,通常独占服务器,数据的管理要考虑到分布式事务特性、负载均衡的自适应性以及灵活的副本一致性策略等问题,这使得数据层面的弹性控制难度增大。当前,以多租户为主要特征的SaaS应用是最常见的云服务,被越来越多的厂商所认可,其两大主要特征就是:单实例多租户和系统能够弹性适应多租户需求。多租户的特征使得云中数据存储系统的弹性控制更加复杂,面临诸多挑战:1)数据弹性控制要在保证多租户的数据共享存储和满足不同租户数据的性能要求下进行。云提供商一般为了减少整体资源的开销,租户的数据会共享存储在分布式节点上。不同租户对于数据访问的性能要求是不同的,具体体现在SLA中,本文关注数据访问时间相关的指标。在进行数据弹性控制时要保证以上两个条件,这增加了弹性控制的难度。2)为了实现多租户存储系统的弹性控制,我们需要能够提出控制策略,决定哪些数据要进行移动,往哪里去移动。大型应用的负载波动大,自适应的负载均衡要求能够在负载高峰时scale-out,负载低峰时scale-down。这通过数据移动(比如,partitioned或coalesced)实现,但是频繁的移动有可能为已经过载的系统带来新的性能问题。3)要有一种负载预测机制使得数据扩展策略能够提前制定。云中资源供应要经历启动延迟,这就要求必须尽早应对负载变化做出控制策略。监测和控制服务水平协议(SLA)中的性能指标容易受环境噪声影响,不易准确测量,而且不同租户不同SLA中性能要求相对于相同性能要求的问题更加复杂。针对上述问题,我们提出一种基于MPC控制思想实现的AdaptScala系统,该系统能够监测不同租户数据访问的负载情况,并基于一次指数平滑方法进行负载预测;结合不同租户SLA中对数据访问响应时间的性能要求,构建多租户数据存储的性能模型用于判定每个服务器能否满足不同租户对数据访问的性能要求;最后给出一种数据弹性控制策略生成算法,用于计算最终的数据存储调整策略,其目标是对系统整体性能影响较小,并且使整体资源开销最小。本文采用Berkeley DB作为云中key/value类型的数据存储引擎,使用开源软件构建实现AdaptScala系统,模拟多租户的数据访问并采集性能数据构建多租户数据存储模型,进行多次测试验证该系统能够满足提出的弹性控制目标。