论文部分内容阅读
计算机集群(简称集群)将多台工作站(或微型计算机)用互联网连接起来,统一调度,协调处理,以实现高效并行计算的分布式计算机系统[张效祥 et al.2005]。随着互联网技术的发展与普及,网络应用的用户并发访问量持续快速增长,集群技术也随之被广泛地用于支持网络应用的运行,用以满足网络应用的高吞吐量和高可用性等需求。目前,这类集群大多被设计为仅运行同一网络应用的多个实例。由于网络应用负载量变化频繁且变化幅度较大,集群往往不得不配备远高于应用常规需求的计算资源,这样不仅带来了成本和维护费用的增加,还使得集群的资源利用率通常偏低,甚至不足30%[Anarzejak et al.2002b]。为此,同时运行多个网络应用的实例的集群,即“共享集群”,正逐渐被企业所采纳。共享集群通过在多个网络应用间协调计算资源,实现请求的快速处理和资源的高效利用,因此,如何根据预测的应用资源需求,在运行时合理地为每个应用动态分配和回收资源,最大化地满足各应用的服务质量需求(如吞吐量等),便成为了共享集群的核心研究课题之一。
目前,应用服务器己成为网络应用最为普遍的运行支撑平台之一,用于处理80%左右的计算需求[M.Kaplan et al.2008],集群管理软件的功能也越来越多地作为一项公共服务被整合到应用服务器中。然而,目前应用服务器中共享集群资源分配技术正处于发展阶段,现有研究与实践仍存在不足,主要表现为:首先,由于资源分配规划问题的复杂性过高,规划方法的执行效率不高,且易伸缩性不足;其次,一个节点上一般需同时运行多个不同应用的实例,而现有应用服务器对在多个应用实例间分配资源的准确性和隔离性考虑不足;最后,共享集群中网络应用各式各样,其公共服务需求也不尽相同,使得应用服务器预先配置一个固定的公共服务集合的做法变得不再可行。
为了解决上述问题,本文在应用服务器中建立了一套共享集群资源分配技术框架,并通过扩展Java EE应用服务器实现了相应的原型系统,其主要工作和贡献包括:
(1)本文提出了一种基于分布协作的资源分配规划方法。方法设计了一种类似市场交易的节点协作模型:节点通过分散、自发的协作相互影响,并独自完成对自身资源使用的规划,当大多数节点稳定到一个局部规划时,共享集群也得到了整体的资源分配规划方案。该规划方案经理论证明,可以在有限的时间内收敛。进一步,实验表明本方法能够有效地避免集中式资源分配规划方法在易伸缩性、响应变化能力、可靠性方面存在的局限,并且能够为应用提供不同等级的资源使用保障。
(2)本文提出一个基于虚拟机技术的资源按需配置框架。该框架首先将操作系统层次的虚拟机技术集成到应用服务器中,随后实现了从资源分配规划方案到节点虚拟环境配置的解释,最后通过定义好的一套针对共享集群中虚拟环境的管理接口,调用虚拟机监控器为每个应用实例隔离出一个独立的运行环境,并动态地分配和回收资源,从而改进了应用服务器为应用运行环境配置资源的准确性,并保障了应用对资源使用的隔离性。
(3)本文提出了一个公共服务按需配置框架。该框架对应用服务器中的公共服务重新进行构件化,并梳理和建立公共服务构件之间的静态和动态依赖关系,使其可以被独立部署;在此基础上,框架通过对应用同公共服务构件之间,以及不同公共服务之间的依赖关系进行管理,使得在运行时刻应用服务器不仅能够支持对公共服务参数的配置,还能够支持对公共服务种类和实现版本的配置。
(4)通过对目前广泛使用的Java EE集群进行扩展,本文实现了一个原型系统,其中主要包括在Java EE应用服务器中实现了用于支持共享集群资源分配的功能模块,和改进Apache Http服务器中的负载分发器机制,以及开发相关的管理工具。原型系统的实现验证和确保了论文整套技术框架的可行性,并为应用服务器中的共享集群资源分配的后续研究提供了平台支持。