论文部分内容阅读
当今Internet的飞速发展使集群技术备受瞩目,负载均衡作为集群的关键技术,提供了一种廉价、有效、透明的方法来扩展服务器带宽、增加吞吐量、提高网络的灵活性和可用性。另外,J2EE以其可移植、开放、安全以及可扩展等特性成为当前的主流平台,其核心技术EJB具有“Write once,run anywhere”、组件复用等特点,得到广大应用系统开发商的认可和青睐。因此,随着EJB应用组件的大量部署和客户访问量的急剧增加,对基于EJB集群系统负载均衡的研究有着重要的现实意义和应用前景。
J2EE规范中没有明确提出EJB集群相关的公共服务,没有对负载均衡约定统一的接口,开发者需要根据自己的理解扩展规范的基本功能,理解不同,实现方案和采用的技术各不相同。目前已有不少产品在不同粒度上支持EJB集群负载均衡,但还存在一些不足之处,诸如仅支持静态均衡算法、负载粒度粗、负载均衡缺乏灵活性等问题。
鉴于上述,论文以EJB集群动态负载均衡技术为主题展开深入研究。首先熟悉并掌握了J2EE平台及其关键技术EJB的相关理论知识,并从负载均衡原理、实现方式等方面对EJB负载均衡展开深入研究,通过参阅大量文献,了解影响动态负载均衡算法的若干关键因素,并对目前常用的动态算法进行利弊总结,最后剖析开源Jboss的集群框架及其负载均衡的实现细节。在掌握上述相关理论和分析开源项目的基础上,论文展开了对课题的研究,主要完成的工作及相应的结果如下:
首先采用多种设计模式,建立负载均衡服务模型,该模型的各功能模块相互协作,实现了动态、自适应负载均衡。具体实现过程中,结合Jboss基于客户代理转发机制和插件式容器的设计思想,采用拦截器设计模式,分别实现了动态负载均衡拦截器链和自适应拦截器链,并由自定义实现的高可用代理工厂在创建EJBHome代理时,分别加载到客户端容器和EJB容器中。负载收集方式上,改进现有的负载收集方式,给出了一种基于时间更新项的交替收集方式,采用折中的办法在一定程度上解决了负载开销和负载信息精确度难以平衡的问题。此外,给出了一种基于前K子集相对均衡度的动态算法,该算法选择各类型Bean的使用情况为负载指标,以各节点当前负载相对于自身阀值的均衡度为候选依据,算法基于“前K子集”并引入一定的随机性,不仅保证了选到的服务器为负载较轻者,而且在一定程度上避免了负载成群的现象。最后,将该算法与随机、轮循算法分别进行测试,从响应时间、标准差等指标上进行对比分析,测试结果表明,本方案的均衡度较好,性能优于传统的静态均衡算法。