摘要:
随着 Internet 平台的快速发展与广泛应用,越来越多的企业和组织依赖网络应用向他们的客户和合作伙伴提供关键性的服务。然而,现有调研报告指出,在开放、动态、多变的网络环境中,网络应用的负载通常具有较大幅度的波动。为了应对负载量峰值,传统仅能支持单个网络应用运行的集群往往需要配备远高于应用平均需求的计算资源,结果导致大部分集群资源在多数时段处于闲置状态(利用率通常不足30%)。而且由于网络应用的用户群体比较开放,通常情况下,很难在运行初期预测出网络应用负载量峰值,这也使得确定集群资源配置变得更加困难。更进一步而言,随着企业信息化的推进,企业内的网络应用数量也在不断增加,如果为每个网络应用都配备一个集群,将大大增加企业内部机器的数量(据Intel公司统计,在过去十年间全球范围内的计算机的数量增加了150 倍),从而导致成本、维护等多方面的问题。
近些年来,随着新的计算泛型,例如网格计算、云计算,的广泛出现,越来越多的企业开始通过租用第三方计算资源来运行自己的网路应用程序,对外提供服务,从而在降低运营成本的同时,获得更好的伸缩性和可用性。通常,第三方会维护一个大规模的集群以便同时运行来自不同企业的大量网络应用,这类集群被称之为共享集群。基于不同网络应用的负载量往往相互独立这一事实(例如,某个网络应用正处于负载量高峰时,另一个网络应用的负载量可能正处于平均值之下),共享集群根据网络应用在不同时刻的资源需求,动态地对其分配和回收资源,从而在满足网络应用性能、可用性、易伸缩性等多方面需求的同时,提高集群计算资源的利用率。在共享集群中,一个应用可以同时运行在多个节点上,而在同一个节点上也可以同时运行多个不同的应用。对于这类的共享集群,资源管理主要包括两个主要问题:一个是应用放置,即决定在哪些结点上运行每个网络应用;另一个是负载分配,即决定给每个结点上的每个应用分配多少负载。
由于应用负载量的动态变化和共享集群的较大规模,依靠人工在网络应用间分配资源的代价是非常昂贵的,甚至是不可行的。因此,这就需要共享集群中的资源管理能够根据网络应用负载量的变化进行自适应。然而,共享集群规模和其中网络应用数量的不断增加也为自适应地资源管理提出了一些列挑战。首先,资源管理方法对应用负载变化的响应速度需要足够地快;其次,资源管理方法需要具有较好的可伸缩性以支持大量的结点和应用;最后,资源管理方法需要在出现资源竞争的时候,首先满足具有较高优先级应用的需求。针对这一问题,区别于以往集中式的资源分配方法,文本借鉴人类市场中的协同模式,提出了一种新的分散式资源管理方法。该方法将共享集群建模成一个市场,其中应用请求份额作为商品,结点作为商人,并将应用请求赋予不同的价值,支持应用的不同优先级;每个结点通过拍卖和竞拍的方式出售和购买应用请求的份额,以增加其所有持有的应用请求价值之和;从而,结点的所有交易使得整个集群收敛到一个全局较好的资源分配状态。实验表明本文方法在有效地管理共享集群资源的同时,能够较快地响应应用请求变化,提供较好的易伸缩性和支持应用的不同优先级。