论文部分内容阅读
随着网络的发展和分布式应用的不断增长,为了支持大量在线客户的请求并提供不间断的高质量可靠服务,服务器冗余技术得到广泛应用,该技术通过高速网络将多个工作站连接起来,形成互为备份的服务器机群以应对客户请求的高峰时段。对于严格的商业或军事应用环境,还需要软硬件系统提供透明的、自适应的可用性支持,保证系统的正常运行。负载平衡技术正是在这一背景下应运而生,并成为分布计算领域的研究热点之一。在分布式系统中,负载平衡机制可以在网络、操作系统、中问件和应用本身四个层次来提供。基于应用的负载平衡完全由应用程序本身来执行,需要在应用的业务逻辑之外增加代码开发和应用维护的复杂度。基于网络或操作系统的负载平衡则通常无需客户方关心系统采用了何种负载平衡算法和策略,一般也不会支持客户方对负载平衡方法的扩展。因此,本文主要研究基于中间件的负载平衡技术,不但能够为客户方和服务器方提供尽量透明的负载平衡服务,同时支持用户针对不同的应用进行的动态扩展,从而能够满足不同的负载平衡需求,提高系统的可扩展性和自适应性。本文在分析已有负载平衡中间件成果和不足的基础上,针对分布式应用拓扑结构和应用规模的发展,以性能、可用性、可扩展性为目标,对分布异构环境下基于中间件的负载度量与负载监测、负载平衡算法、过载控制和自主的副本管理技术展开了深入的研究,并在此基础之上开发了一个自适应、透明和可扩展的负载平衡服务,主要工作包括:1.在负载度量和负载监测方面。本文对已有的负载度量机制进行了比较与分析,并在此基础上提出了一种构件化的负载度量定义方法。使用户能够从应用需求出发,开发自己的负载度量方法。同时,当多种不同类型副本存在于同一主机时,传统的对象粒度负载监测机制可能带来冗余监测问题。针对这一问题,本文提出了一种多粒度的负载监控方法MGLMA,通过agent技术将负载度量相似的服务副本组织成虚拟组,由agent完成实际的监测工作,从而可消除冗余的负载监测,实现灵活的负载监控粒度调节。实验结果表明,在多副本并存的情况下,该方法能够有效减小系统的额外开销,并提高系统的可扩展性。2.在负载平衡算法方面。本文对已有的负载平衡算法进行了系统的分类描述,并在此基础上提出了一种构件化的算法结构,使用户能够进行负载平衡算法的扩展和动态可重配置。本文还在现有的轮转算法和加权轮转算法的基础上,针对分布异构环境的特点提出了一种触发式的轮转算法TRR,该算法吸取加权轮转算法感知后端资源的优点,但并不周期性地向负载平衡器报告负载情况以及计算权值,只在某些特定的情况下触发与负载平衡器的联系。实验结果表明,该算法与加权轮转算法相比具有较低的网络通讯开销,与普通轮转算法相比降低了面对异种负载时发生过载的可能性。此外,针对多副本在同一结点上并存的情况,提出了基于位置的最小负载算法LLL。实验结果表明,该算法相对普通的最小负载算法具有更小的网络通讯开销和算法计算开销。在这些研究的基础上,本文还对自适应算法和非自适应算法的性能进行了较详细的性能比较与分析,实验表明自适应负载平衡算法和非自适应负载平衡算法在同种负载条件下具有类似的吞吐量和响应时间。而在异种负载或重载的条件下,自适应负载平衡算法的性能要好于非自适应负载平衡算法。3.在过载管理与负载重平衡方面。本文针对传统的负载反馈中阻尼因子不能根据负载的波动进行动态调整的问题,提出了基于机器学习的过载控制机制MLOCA,实现了动态的阻尼系数调控。实验表明,该方法能够平滑负载峰值的影响,提高过载控制的有效性。其次,本文针对传统的静态副本管理机制存在的资源利用率低、热点服务失效率高等问题,提出了一种动态自主的副本管理机制ARMA。该机制使系统能够根据负载的变化动态自主地控制服务副本的创建与删除,并且能够通过对不同服务间副本数目的控制来实现资源的平衡分配,从而提高了系统的整体吞吐率和效率。实验结果表明,无论在无优先级条件下还是有优先级条件下,通过使用该机制都可以提高系统整体的可扩展性、资源利用率以及在高负载条件下的稳定性。4.在系统设计与实现方面。在上述关键技术研究的基础上,基于面向对象的分布计算平台StarBus,设计并实现了面向分布异构环境可扩展的负载平衡中间件StarLB。实际应用表明,该服务能够在复杂分布异构环境下为用户提供透明、高效的负载平衡服务。