论文部分内容阅读
随着大数据时代的来临,大规模分布式数据存储技术给关系型数据库带来了前所未有的挑战。面对海量非结构化数据的高效存储和低延迟查询的要求,传统的关系型数据库已经显得力不从心。而以MongoDB为代表的NoSQL数据库由于其强大的适应能力,得到了广泛的应用,但是由于发展时间较短,在负载均衡技术方面的发展还不够成熟,难以应对热点数据访问带来的负载不均衡。 当前的负载均衡系统主要分为两大类,静态负载均衡系统和动态负载均衡系统。动态负载均衡系统包括基于预测的负载均衡系统和基于数据迁移的负载均衡系统。静态负载均衡系统不占用系统资源的使用,但是在使用过程中会停机,影响系统的持续服务,随着系统的运行,将不可避免的出现访问量的严重不平衡。基于预测的负载均衡系统在处理流程上比较复杂,同时预测的准确性有待提高。大多数基于数据迁移的负载均衡系统是基于数据量实现的,或者对于迁移目标的选择没有考虑到实际的系统环境,均难以满足实际应用的需求。 本文针对上述问题,设计并实现了面向热点数据的MongoDB负载均衡系统。该系统基于存储节点的资源利用率,对节点负载进行判断,进而通过将热点数据切分,并从超载节点迁移至负载较轻的节点,实现整个存储系统的负载均衡。系统包括节点监测,负载均衡、配置管理、数据存储、告警上报这五个子系统。系统的研制对基于MongoDB的应用系统具有提高性能及可靠性、提升用户体验和简化管理的意义和作用。 本文主要贡献有以下几点; 1)针对MongoDB负载均衡系统的量化测试 针对当前MongoDB自身的负载均衡系统没有完善的定量评估,建立定量的评价指标体系,对MongoDB进行了量化测试分析。首先从结构和原理上定性的分析了MongoDB的负载均衡系统,然后利用定性分析结果,设计合理的测试指标以及测试用例,然后执行测试用例,模拟用户访问MongoDB,完成了对MongoDB自身负载均衡系统的定量测试分析,发现其在负载策略和迁移方法上的问题。 2)提出一种优化的MongoDB负载均衡策略 针对热点数据的出现而导致的MongoDB负载不均衡问题,提出一种优化的MongoDB负载均衡策略。首先通过周期性监测MongoDB所有节点的资源利用率,再根据资源利用率计算节点负载,根据负载值和节点间的网络状态来选择数据迁移的源节点和目标节点,最后通过对热点数据定位、拆分、迁移的方式,将数据库请求均匀的分布到各个节点,实现了存储系统的负载均衡。实验结果表明,负载均衡功能正确运行。 3)设计并实现面向热点数据的MongoDB负载均衡系统 针对当前MongoDB的负载均衡系统无法处理热点数据引起的不均衡问题,设计并实现了面向热点数据的MongoDB负载均衡系统。该系统分为节点监测、负载均衡、配置管理、异常告警、数据存储这五个子系统。其中节点监测子系统和负载均衡子系统利用上述负载均衡策略,实现了包括节点基本信息监测、负载判定、数据迁移等模块。实验测试表明,该系统各项功能正常运行。在性能方面,出现负载不均衡时,系统能使MongoDB平均访问速率保持在最高性能的80%以上。