论文部分内容阅读
对计算资源实现按需使用是软件应用保障性能并提高资源利用率的一种主要手段。所谓按需,是指当计算资源不足而导致应用性能不能达到要求时,应用可以占有并使用额外的资源以保障其性能;而当资源过剩时,又可释放掉多余的资源,从而减少浪费、节约成本。随着Internet的飞速发展,软件应用所处的环境变得越来越开放。一方面,开放的环境使得软件应用时刻面临着动态多变的用户访问请求。另一方面,开放性打破了软件为硬件的能力而量身定做的固定性。因而,可以看到,开放性进一步加剧了资源供需不匹配的矛盾。在网络环境中,需要促使软件应用按需使用资源,才能实现其高效运行。 软件应用运行的实质就是计算逻辑运行在计算资源之上。在网络环境中,计算资源被分散在多个网络节点,因而,应用对资源的按需使用要以其模块在网络节点上灵活可变的部署执行作为保障。当资源不足时,可以将部分应用模块转移到新获取的网络节点上执行,从而通过占有额外的资源来保障应用性能;而当资源过剩或网络条件不佳导致获取额外资源的难度增大时,又可将它们移回,从而实现对资源的节省并确保应用正常运行。本文将以上这种应用部署到网络节点的拓扑结构随资源需要而进行的动态调整称为按需部署。 当按需使用资源成为网络环境中软件应用的必然要求时,如何实现应用的按需部署就成了一个亟待研究的问题,面临着以下两个基本挑战:(1)如何产生可按需部署的应用模块。对资源的按需使用要求应用的任一部分在必要时都可相对于其他部分而在本地或远程部署执行。应用模块间的本地或远程调用应随部署的变化而改变;(2)如何制定部署方案并实现对部署的动态调整,从而保障应用性能并提高资源利用率。 为了解决上述问题,本文建立了一套网络环境中应用按需部署的技术框架,其主要特色和贡献包括: (1)提出了一种支持软件应用中计算逻辑按需远程执行的程序结构及自动程序重构方法。该结构打破了应用模块间本地或远程交互方式的固定性,使得任一应用类可在必要时可被分离至远程执行以占有节点资源,或被回收到本地执行以节省资源。部署执行的变化对应用的其他部分保持透明。同时,给出了一组以该结构为目标的程序重构步骤来自动完成可按需部署的应用模块的产生工作。 (2)提出一种按需匹配资源供需的部署方案生成方法。重构后应用的模块粒度可以通过改变它们之间本地或远程交互方式而进行调节。在极端情况下,每个应用类可以看成是一个模块,而整个应用也可以看成是一个模块。因此,该方法通过程序分析得出应用模块间交互的紧密程度,从而将关系紧密的模块视作一个复合模块,继而形成一幅模块的聚合分解层次图,对应了应用中不同组成部分对计算资源的消耗量。在生成部署方案时,根据当前节点资源配置,首先选择该图某一层中各个模块都能满足资源约束的这些模块来作为部署实施的对象,接着计算出不同的部署方案中哪个方案最能满足应用高效运行的要求,并按照该方案完成部署,从而有效解决了现有部署方案生成方法在资源供给与需求不匹配时难以产生优质方案的问题。 (3)提出一种基于网络节点软硬件栈资源可调特性的嵌套式的部署调整方法。环境条件的变化可能导致现有资源不能支撑应用高效运行,因而需要对应用的部署进行调整。然而,直接改变部署的拓扑结构会带来高昂的运行时开销。为此,该方法利用应用在部署后其组成模块一般运行在中间件等软件平台,而整个软件栈又越来越多地在虚拟机上运行的现状,给出了一个“内-中-外”三层嵌套式的部署调整环路:通过基于中间件服务等级调节的资源消费调整内环、虚拟机资源拥有量调整中环以及部署拓扑结构调整外环的嵌套式循环来保障应用性能并实现对资源的高效利用。 (4)设计并实现了一个支持Java应用进行按需部署的支撑系统SM@Rted。系统包含应用重构器、部署方案生成器以及嵌套式调整器等核心模块。SM@Rted可对Java应用的字节码进行重构,因而不但能支持新构造的应用,也适用于遗产应用。SM@Rted可作为一个单独的框架使用,也能被集成到各种主流开发平台或商业软件中,以帮助开发者或用户更快更好地完成应用部署工作。通过SM@Rted,应用中的计算逻辑可自动且透明地实现按需远程执行来完成对计算资源的按需使用,从而保障了应用高效运行。 本文以Java应用的两种极限情况:GoGame为代表的Android单机应用和RUBiS为代表的EJB分布式应用作为研究实例贯穿全文,并通过这些实例展示了相关主要方法的有效性。