一种MongoDB负载均衡优化方法技术

技术编号:12474706 阅读:187 留言:0更新日期:2015-12-10 10:19
本发明专利技术公开了一种MongoDB负载均衡优化方法,包括以下步骤:S1、计算每两个服务器内数据块总数的差值;S2、判断任意两个服务器内数据块总数的差值是否大于或等于最大阈值,若是则将数据块多的服务器定为数据块移动源S,数据块少的服务器定为数据块移动目标T;S3、计算S和T的平均数据块操作量SDW和TDW;S4、若SDW>TDW,则从S中选取数据块操作量最大的数据块移动到T中,否则从S中选取数据块操作量最小的数据块移动到T中;S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于最小阈值时,完成负载均衡。本发明专利技术将数据块的CRUD负载考虑进去,根据数据库的实际使用情况,依据各个数据块读写频率,动态地进行负载均衡,达到了优化数据库性能的目的。

【技术实现步骤摘要】

本文属于数据库性能优化领域,具体设及。
技术介绍
随着互联网Web 2.0网站的兴起,传统的关系型数据库在应付Web 2.0网站,特别 是超大规模和高并发的SNS类型的Web 2. 0纯动态网站时已经显得力不从屯、,暴露了很多 难W克服的问题,例如对数据库高并发读写的问题、对海量数据的高效率存储和访问的问 题,W及数据库的高扩展性和高可用性的问题。 为了应对W上问题,非关系性数据库NoSQUNot化Iy SQL是一种新型的数据库 方面的革命)应运而生,它通过降低关系型数据库的数据库事务一致性、写实时性读实时 性,W及弱化复杂的S化查询功能来解决Web 2. 0网站建设中遇到的问题。其中MongoDB 就是其中一个典型的代表。MongoDB是一个开源的,基于分布式的,面向文档存储的非关系 型数据库。是非关系型数据库当中功能最丰富、最像关系数据库的,它的特点是高性能、易 部署、易使用,存储数据非常方便,扩展能力强。 阳004]在MongoDB中,提供一种名为Auto-Siareding,即自动分片的机制来实现数据库 的水平扩展(水平扩展,是指通过加入更多的服务器运行数据,从而提供更多的存储空间 或者更高的运算性能)。与其它数据库不同,水平扩展的全部的过程都会由MongoDB自动地 完成,不需要人工操作,并且当各个分片(分片,是指将数据拆分成特定大小的块,然后将 其分布到多个服务器中)中的数据分布不均衡时,自动完成数据的重分布,通过将数据分 布到多个服务器上,运样就不再需要高性能主机来存储海量数据,承受高压负载。 目前MongoDB的Auto-Shareding机制是靠一个balancer的模块来实现数据在各 个服务器上的转移W及均匀分布,它是一个在后台运行的任务,当任意两个服务器中的数 据块的数量的差值达到系统设定的最高阔值时,balancer就会将数据块从数据块多的服务 器移动到数据块少的服务器上,直到数量之差达到最低阔值。 但是通过研究可W知道balancer内在的算法仅仅依据各个服务器上数据块的总 量来实现数据块在各个服务器上的负载均衡。运种算法可W使得数据库的移动量最小,但 是选取的数据块都是块键(每个数据库的唯一标识,是个数字)最小的。并没有将实际使用 情况考虑进去,因为各个数据块的使用情况大有不同,有的基本不会访问,有的查询量大, 有的修改量大,使得各个服务器的负责并不能有效的均衡。
技术实现思路
本专利技术的目的在于克服现有技术中MongoDB在自动分片机制上的不足,提供一种 将数据块的CRUD负载考虑进去,根据数据库的实际使用情况,依据各个数据块读写频率, 动态地进行负载均衡,W达到优化数据库性能的目的的MongoDB负载均衡优化方法。 本专利技术的目的是通过W下技术方案来实现的:, 包括W下步骤: SI、计算每两个服务器内数据块总数的差值; S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最 大阔值,若是则将该组两个服务器中包含数据块多的服务器定为数据块移动源,包含数据 块少的服务器定为数据块移动目标,否则不操作; S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量; S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据 块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动 源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均 数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取 数据块操作量最小的数据块移动到数据块移动目标中; S5、重复步骤Sl~S4,直到任意两个服务器内数据块总数的差值小于系统预先设 定的最小阔值时,完成负载均衡。 进一步地,所述的步骤S3包括W下子步骤: S31、在MongoDB中建立CRUD性能测试集,并计算出系统的运行各个操作的性能参 数; S32、修改MongoDB的configserver中记录数据块参数的数据结构,增加 W下变量:数据块插入操作的次数operateC、数据块查询操作的次数operateR、数据 块更新操作的次数operate!]、数据块删除操作的次数operateD和数据块操作量变量 dat油IockWei曲t,对数据块的每一次操作都在相对应的变量上进行加一操作;S33、根据步骤Sl和S2中的参数计算每个数据块操作量并保存到变量 dat油IockWei曲t中,计算服务器内所有数据块操作量总和W及服务器内的平均数据块操 作量。 进一步地,所述的步骤S31具体实现方法为:从数据库中选择插入、删除、修改W 及查找测试语句各5000条,分别记录在4个语句脚本中;再建立一个定时执行shell脚本, 分别记录下4个语句脚本的执行时间作为性能参数;所述的性能参数包括:插入操作性能 参数Tc、删除操作性能参数Td、修改操作性能参数Tu和查询操作性能参数TK。 进一步地,所述的步骤S33具体包括W下子步骤: S331、设一个服务器上有n个数据块,用KiQ《i《n)表示,服务器上所有数据 块操作次数之和用0。表示,每个数据块总的操作次数用0 1表示,则: 化 阳OW 0。=芝^0, 1=1 将步骤S32得到的参数带入上式,得到: 打町打 n 打 =芝 之Qji= ^ 0。+S〇说 +S〇化^。。;1 :{c'、r',U、江} i=l >=1 i=lj=l' 其中,0"、〇Ki、化1、〇Di分别表示第i块数据块插入操作的次数operateC、查询操作 的次数operateR、更新操作的次数operate!]、删除操作的次数operateD;S332、计算第i块数据块操作量DWi: DW, = ^ 0|巧 '二 0。。+ 〇wTr+O…Tu+O防T〇. ]=ftNf:>Us;d} 计算服务器上所有数据块操作量: 打打 n n Ii DWn二'芝 SOjiTj= ^ 〇ciTc+ ^OrjTr+ ^ 〇uiT〇 + ^ 〇防 了口 I=Ij=tcr,Uvd) 1=1. 1=1 1=1 J=I 每次负载均衡时按照上式计算出服务器中各个数据块的DWi然后存入变量 dat油IockWei曲t中,DW。参数供后续步骤使用; S333、将包含数据块多的服务器称为数据块移动源,用S表示;包含数据块少的服 务器称为数据块移动目标,用T表示;S与T的平均数据块操作量分别用5"和T"表示,则: 阳〇3引其中,叫和n康示S与T中数据块的数量,SDWn和TDWn分别表示S与T服务器上 所有数据块操作量。 进一步地,所述的步骤S3还包括一个步骤:S34、在完成负载均衡后对步骤S32中 增加的变量进行置零操作。 本专利技术的有益效果是:针对MongoDB在自动分片机制上的不足之处,提供了 一种基于数据块的增删查改频率的负载均衡方法,对移动数据块的选择上,将数据块的 CRUD(CRUD代表对数据库的四种操作,即增删改查)负载考虑进去,根据数据库的实际使 用情况,依据各个数据块读写频率,动态地进行负载均衡,W达到优化数据库性能的目的, 可W使得集群不仅仅是在数据块的数量上负载均衡,而且也实现了读写负载均衡,优化了 MongoDB水平扩本文档来自技高网
...

【技术保护点】
一种MongoDB负载均衡优化方法,其特征在于,包括以下步骤:S1、计算每两个服务器内数据块总数的差值;S2、判断任意两个服务器内数据块总数的差值是否大于或等于系统预先设定的最大阈值,若是则将该组两个服务器中包含数据块多的服务器定为数据块移动源,包含数据块少的服务器定为数据块移动目标,否则不操作;S3、分别计算数据块移动源和数据块移动目标内的平均数据块操作量;S4、比较数据块移动源和数据块移动目标内的平均数据块操作量大小,如果数据块移动源内平均数据块操作量大于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最大的数据块移动到数据块移动目标中;如果数据块移动源内平均数据块操作量小于或等于数据块移动目标内平均数据块操作量,则从数据块移动源中选取数据块操作量最小的数据块移动到数据块移动目标中;S5、重复步骤S1~S4,直到任意两个服务器内数据块总数的差值小于系统预先设定的最小阈值时,完成负载均衡。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐雪飞吴亚骏陈科陈安龙江莹刘明鸣胡略杨桥
申请(专利权)人:成都康赛信息技术有限公司
类型:发明
国别省市:四川;51

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

1