论文部分内容阅读
互联网正在以惊人的速度快速发展,Web应用渗透到了人们生活的方方面面,深刻地影响着人们的衣食住行,无数的互联网公司通过Web服务获得了巨大的成功。云计算以其灵活的资源分配和按需计费的方式吸引着越来越多的Web应用开发者将Web应用迁移到云平台,省去了购买和维护硬件的巨大成本,将节省的人力物力放到Web应用的核心竞争力上。随着Web应用的发展演变,Web应用在当代又出现了新的特征和亟待解决的问题。Web应用的负载在时间维度上明显不均衡,例如每年的“双十一”购物活动,电商应用的负载会急剧增加,为了满足负载的需求必须为应用增加更多的资源,当前的云平台往往不能自动地实现资源伸缩。Web应用的开发技术在当下也是日新月异,越来越多的Web应用需要各种各样定制化的技术服务支持,传统的PaaS平台往往只能提供语言和数据库层面的支持,不能满足Web应用定制化的服务,而IaaS平台采用虚拟机的方式解决该问题又略显笨重,也造成了一定资源的浪费,使用虚拟机构建弹性云平台不能及时响应负载变化。现代Web应用的另一个特征是更新迭代快,应用开发者希望能够方便测试、发布和快速热升级。针对上述问题,本文设计并实现了一个基于Docker技术的具有资源弹性伸缩的云平台DoCloud。DoCloud使用Docker容器取代传统的虚拟机作为资源扩展的基本单元,构建了一个混合弹性控制器,采用ARIMA模型主动进行负载预测和资源利用率被动触发相结合的方式作为资源弹性调整的决策机制,使Web应用能够快速地自动地应对负载变化,当负载变大时增加容器数量,负载变小时减少容器数量。同时DoCloud还利用Docker的特征,集成了Docker Registry存放应用镜像,帮助开发者实现Web应用的快速发布和进行热升级操作。最后本文通过Tsung负载测试工具做了多个实验验证了DoCloud云平台的功能性和应对负载变化弹性调整容器数量的有效性,而且单个容器的资源利用率能够稳定在较高的水平。实验结果表明DoCloud具有良好的自适应性,一定程度上解决Web应用现在遇到的问题。同时本文对使用Docker构建云平台具有很好的参考价值。