论文部分内容阅读
近年来,随着计算机以及网络相关技术的飞速发展,其应用领域不断扩大,业务逻辑越来越复杂,因此越来越多的网络应用采用分布式系统的方式进行构建。鉴于分布式系统的并发性、缺乏全局时钟和故障独立性等特征,很难将单模块测试方法应用到基于分布式系统的模块测试中。分布式系统测试过程中主要存在两个问题:第一是难以保证分布式系统测试结果的可靠性;第二是在进行大规模分布式系统的性能测试及其它系统级验证时,存在着搭建分布式系统困难、测试效率低等问题。本文在对上述问题进行深入研究和探讨的基础上,分析了当前主流的测试模型,提出了一种改进的通用测试模型。此外,在该通用模型的基础上,提出了一种新的集群可靠性测试模型和一种新的集群性能测试模型,并设计和开发了用于支持和实现上述模型的原型系统。为了支持该通用模型,本文在研究了网络通信、Libevent、多线程以及异常注入等技术的基础上,使用Libevent框架进行事件处理,并采用多线程技术,优化了获取大量真实数据源时的性能,提供了高性能服务;设计并实现了通信链路接管方案,通过注入通信异常的方式,模拟了链路中的异常情况,为分布式系统可靠性测试提供了解决方案;提出了通信链路数据录制-回放方法,模拟了大规模的后端集群,解决了难以获取大量真实数据源的问题,为分布式系统性能测试提供了解决方案。实验结果表明,原型系统在面向搜索引擎的分布式系统测试过程中,取得了很好的效果。通过使用该系统的录制回放功能,达到了模拟集群的目的,使得测试过程中不再需要搭建集群环境,进而节省了大量的机器资源;通过使用该系统的链路模拟功能,成功模拟了模块之间的连接、读写等通信异常,从而保证了集群容错机制的健全性。在后续的研究工作中,将进一步加深对分布式系统测试关键技术的研究,并在此基础上,实现集群服务化和测试服务化。