一种基于MongoDB负载均衡优化系统及方法技术方案

技术编号:17784212 阅读:49 留言:0更新日期:2018-04-22 15:39
本发明专利技术请求保护一种基于MongoDB负载均衡优化系统,包括MongoDB系统,所述MongoDB的数据存储在每个分片中,将数据划分为一定大小的数据块,然后放入各个服务器中,当各个服务器中的数据块个数不均衡时,通过balancer模块来实现负载均衡,其在所述MongoDB系统框架上增加一个负载监听器模块,负责周期性动态监听各个服务器的cpu利用率NCPU、内存memory利用率NMEMORY、带宽bandwidth利用率NBANDWIDTH,并分别设置cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3,服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡。本发明专利技术将服务器资源利用率的最大化,实现了MongoDB动态负载均衡。

【技术实现步骤摘要】
一种基于MongoDB负载均衡优化系统及方法
本专利技术属于数据库的数据处理性能优化领域,尤其是负载均衡改进方法,提升数据库的高并发读写能力。
技术介绍
由于大数据时代的到来,云存储技术的快速发展,人们的日常生活以及各种科学实验产生了海量数据。对于如何有效和快速地存储和提取这些海量数据,传统的关系型数据库,暴露了很多难以解决的问题。尤其在面对高并发量的读写请求,海量数据的快速访问、高效存储方面和数据库高扩展性等方面,需求难以得到满足。因此,非关系型数据库NoSql应运而生。NoSql数据库以支持海量数据、高可用性、高扩展性而闻名,解决了关心型数据库所面临的问题。其中MongoDB作为文档型数据库的代表,因其高性能、易部署、易使用、存储效率高等优点,获得很多大中型企业和网站的使用。MongoDB为了存储海量数据,依据其自动分片机制来实现数据库的水平扩展(是指加入更多的服务器来加大存储空间,提升运算性能),而且水平扩展的过程是系统自动实现,无需人工添加。另外数据存储在每个分片中(将数据划分为一定大小的数据块,然后放入各个服务器中),当各个服务器中的数据块个数不均衡时,依靠系统自带的负载均衡算法来实现,自动实现数据再分配。目前MongoDB中负载均衡算法依靠的是balancer模块来实现。它是一个后台运行服务,统计各服务器中数据块的个数。当任意两个服务器的数据块个数的差值达到阈值时,balancer模块就会将数据块从数据块数多的服务器转移到数据块数少的服务器中,直到两者数量之差小于阈值。但是通过仔细研究发现,这个分片机制并没有那么智能。分片机制只是根据各个服务器上数据块数量上的差异进行,只能满足个服务器数据数量上的平衡,但没有考虑服务器的负载情况。在面对大量高并发请求时,有可能导致各服务器的访问情况千差万别。进一步来说,一部分服务器满负荷,一部分服务器却无人问津。同样balancer模块只统计了各服务器上数据块个数,没有将数据块的使用情况统计出来,即数据块的操作热度数。总之,不能达到服务器资源利用率的最大化。
技术实现思路
本专利技术的目的在于解决MongoDB现有的自动分片机制造成各服务器负载不均衡的问题。将服务器实时负载和数据块的操作热度数综合考虑,来实现MongoDB动态负载均衡,使MongoDB性能得到优化。本专利技术的技术方案如下:一种基于MongoDB负载均衡优化系统,包括MongoDB分布式存储系统,所述MongoDB分布式存储系统的数据存储在每个分片中,将数据划分为一定大小的数据块,然后放入各个服务器中,当各个服务器中的数据块个数不均衡时,通过balancer模块来实现负载均衡,其在所述MongoDB系统框架上增加一个负载监听器模块,负责周期性动态监听各个服务器的cpu利用率NCPU、内存memory利用率NMEMORY、带宽bandwidth利用率NBANDWIDTH,并分别设置cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3,服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡。进一步的,所述cpu利用率权值k1和内存利用率权值k2均比带宽利用率权值k3要大。进一步的,所述cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3还满足k1+k2+k3=1。进一步的,服务器负载超载的判断步骤包括:设系统有X个服务器,当前第r个服务器的负载为:load(r)=k1×NCPU+k2×NMEMORY+k3×NBANDWIDTH则系统的总负载系统服务器的平均负载设当前服务器中最大负载为Maxload,并设为服务器A,当前服务器中最小负载为Minload,设为服务器B;若(Maxload-avg)/avg≥λ,则当前最大负载服务器Maxload超载;上式中λ为系统负载阈值,为常数。进一步的,所述据块的操作热度数的获取具体包括:在MongoDB原有的balancer模块中加入对数据块操作类型以及次数的统计,获取其数据块的操作热度数h,对数据块的操作分为读操作read、写操作write、更新操作update及删除操作delete,并分别对其四种操作设赋予O1、O2、O3、O4权值,并满足O1+O2+O3+O4=1;进一步的,所述read操作分配的权值O1要小些,因为有一些数据可以在物理缓存中找到,而且也可以从副节点读取;delete操作权重O4设置最低;write操作和update操作两者设置的权重都要比read和delete要高,write权重O2设置最高,update权重O3设置次之。进一步的,所述服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡具体包括步骤:统计各服务器中数据块个数,若存在两个服务器上数据块个数之差大于或等于系统设定的数量阈值,则启动负载均衡算法,步骤如下:设数据块个数较多的服务器为A,为数据转移的源服务器,数据块个数较小的服务器为B,为数据转移的目标服务器,计算A、B两个服务器的平均数据块操作热度数,分别设为H(A-avg)、H(B-avg),并比较两者大小;如果H(A-avg)>H(B-avg),则将服务器A中操作热度数最大的数据块转移到服务器B中;如果H(A-avg)<H(B-avg),则将服务器A中操作热度数最小的数据块转移到服务器B中;反复重复上述步骤,直到A、B两服务器数据块个数之差小于阈值;若不存在服务器之间数据差值大于或等于数量阈值,则计算各服务器的负载;若同时也不存在当前maxload的服务器过载,则无需数据迁移,维持原状;若存在maxload的服务器过载,将其设为服务器A,则从剩下的服务器中找出负载最小即Minload的服务器,设为服务器B,因为此时A与B之间数据块差值小于阈值,无法满足触发负载均衡算法的条件,所以分别统计服务器A、B的数据块个数,将A中数据块操作热度数排名前几的数据块从中间的片键分开,这样一个数据快就变成了两个数据块,再次判定Maxload服务器是否超载,如果没有,则结束,如果有则再次进行上一步的操作。一种基于所述系统的基于MongoDB负载均衡优化方法,其包括以下步骤:在MongoDB系统框架上增加一个负载监听器模块,负责周期性动态监听各个服务器的cpu利用率NCPU、内存memory利用率NMEMORY、带宽bandwidth利用率NBANDWIDTH,并分别设置cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3,服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡。本专利技术的优点及有益效果如下:本专利技术创造与现有的技术相比较,计入新的负载参考指标,将服务器实时负载和数据块的操作热度数综合考虑,将服务器资源利用率的最大化,实现了MongoDB动态负载均衡。一方面本专利技术详细探测定位了那些热点数据块。在满足一定条件下,通过转移热点数据块,在一定程度上能够均衡每个服务器的操作热度数,促使服务器的资源利用率最大化。另一方面本专利技术还加入了服务器实时负载参考指标,能够实时监测每个服务器的运行情况,对其本文档来自技高网
...
一种基于MongoDB负载均衡优化系统及方法

【技术保护点】
一种基于MongoDB负载均衡优化系统,包括MongoDB分布式存储系统,所述MongoDB分布式存储系统的数据存储在每个分片中,将数据划分为一定大小的数据块,然后放入各个服务器中,当各个服务器中的数据块个数不均衡时,通过balancer模块来实现负载均衡,其特征在于,在所述MongoDB系统框架上增加一个负载监听器模块,负责周期性动态监听各个服务器的cpu利用率NCPU、内存memory利用率NMEMORY、带宽bandwidth利用率NBANDWIDTH,并分别设置cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3,服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡。

【技术特征摘要】
1.一种基于MongoDB负载均衡优化系统,包括MongoDB分布式存储系统,所述MongoDB分布式存储系统的数据存储在每个分片中,将数据划分为一定大小的数据块,然后放入各个服务器中,当各个服务器中的数据块个数不均衡时,通过balancer模块来实现负载均衡,其特征在于,在所述MongoDB系统框架上增加一个负载监听器模块,负责周期性动态监听各个服务器的cpu利用率NCPU、内存memory利用率NMEMORY、带宽bandwidth利用率NBANDWIDTH,并分别设置cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3,服务器根据实时判断是否超载和数据块的操作热度数综合考虑调节,实现MongoDB动态负载均衡。2.根据权利要求1所述的基于MongoDB负载均衡优化系统,其特征在于,所述cpu利用率权值k1和内存利用率权值k2均比带宽利用率权值k3要大。3.根据权利要求1或2所述的基于MongoDB负载均衡优化系统,其特征在于,所述cpu利用率权值k1、内存memory利用率权值k2、带宽bandwidth利用率权值k3还满足k1+k2+k3=1。4.根据权利要求3所述的基于MongoDB负载均衡优化系统,其特征在于,服务器负载超载的判断步骤包括:设系统有X个服务器,当前第r个服务器的负载为:load(r)=k1×NCPU+k2×NMEMORY+k3×NBANDWIDTH则系统的总负载系统服务器的平均负载设当前服务器中最大负载为Maxload,并设为服务器A,当前服务器中最小负载为Minload,设为服务器B;若(Maxload-avg)/avg≥λ,则当前最大负载服务器Maxload超载;上式中λ为系统负载阈值,为常数。5.根据权利要求1所述的基于MongoDB负载均衡优化系统,其特征在于,所述据块的操作热度数的获取具体包括:在MongoDB原有的balancer模块中加入对数据块操作类型以及次数的统计,获取其数据块的操作热度数h,对数据块的操作分为读操作read、写操作write、更新操作update及删除操作delete,并分别对其四种操作设赋予O1、O2、O3、O4权值,并满足O1+O2+O3+O4=1。6.根据权利要求5所述的基于MongoDB负载均衡优化系统,其特征在于,所述read操作分配的权值O1要小些,因为有一些数据可以在物理缓存中找到,而且也可以从副节点读取;delete操作权重O4设置最低;write操作和update操作两者设置的权重都要比read和delete要高,write权重O2设置最高,update权重O3设置次之。7.根据权利要求5所述的基于M...

【专利技术属性】
技术研发人员:谭军张雄
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:重庆,50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1