论文研究-MongoDB数据负载均衡的研究与优化 .pdf

所需积分/C币:10 2019-08-18 01:46:17 395KB .PDF
28
收藏 收藏
举报

MongoDB数据负载均衡的研究与优化,吕林,杨旭东,传统的关系型数据库已无法满足海量数据的存储与访问需求。针对这个问题,非关系型数据库(NOSQL)应运而生,本文主要研究了NOSQL家族中
山国武技论文在丝 Chunk Chunk Chunk Chunks ix minKeyl {:0 X:75 Ix: marKey! 图范围分区图 基于散列分区 计算字段的散列值,然后使用这些散列值来创建块。基于散列的分区,两个 都有“ close¨片键值的文档是不太可能处于同一块的。这样可以确保一个更加随机分布的集 群。如图所示。 X:26 X:27 X:28 Hash Function Chunk Chunk Chunk3 Chunk 图散列分区图 均衡策略之分裂 为了保证集群数据均衡使用了两个后台进程分裂 和均衡器 先介绍分裂 ,分裂是一个后台进程用来阻止块 增长得越来越人。当 个块增长到指定的块大小时 将该块等分。插入和更新都会触发分裂器。分裂是 个高效的元数据变化。创建分裂时 不迁移任何数据也不改变碎片。如图所小 山国武技论文在丝 ShardA 32.1M 64。2M 32.1M 图分裂图 均衡策略之均衡器 均衡器 也是一个后台进程,管理块的迁移。它在集群中所有的査询路由器中运 行。当集群中的分片集合的分布是不均匀的,均衡器进程就会将拥有最多块的片向最 少块的片中迁移数据,直到集合均衡。如图所示。 ShardA Shard Migrate 图均衡器图 问题的提出 基于范围的切分能够提供一个更加有效的范围查询,给出一个片键 的范围查 询,査询路由器很容易就能找到块存放在数据片的位置。但是基于范围的切 分会导致数据分布的不均衡,会大大降低分片的好处。例如,片键是线性递增的字段,比如 时间,所有时间范围的结果都会映射到相同的块,也就是相同的数据片 基于散列分区能够使数据随机分布,但是给出一个片键 的范围查询可能需要 去查询所有的数据片以便返回一个查询结果。假改将数据映射到只体数据片的过程是这样 的,如 ,是数据的,是数据片数,如果有一个数据片加入或退出这个集群, 所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其 他缓存就失效了 使用均衡器使数据均衡地分布到集群中的所有服务器上。每个数据块作为 个传输单元,均衡器等待不均衡块计数的阈值发生。一旦达到阈值时,均衡器将重新分配数 据块。直到任何个分片数据块数目差异小于阈值。为了减少数据的传输量,每一个分片都 包含多个范围。 新的分片加入到集群中或者一些分片达到了最大阈值,均衡器会把获 山国武花论文在丝 取频率最高的数据栘到使用频率最仁的分片中,道过移动最少的数据量使薮据均衡地分布到 集群中。均衡器的目的不仅是为了保持数据的均衡分布而且也要减少数据量的传输。这个均 衡器的算法没有想象的那么智能,而是基于片中的总体数据移动。它们仅仅转移分片顶端的 数据块,并没冇考虑到数据操作的频率。这样不能对系统的数据进行有效的均衡。所以非常 有必要来改进 的自动分片的策略 一致性哈希算法 致性哈希算法 是种算法,简单的说,在移除或者添加 个时,它能够尽可能小的改变已存在映射关系,尽可能的满足单调性的要求。 致性哈希的基本思想就是将对象和内存都映射到同一个数值空间中,并且使用相同的 算法。然后按顺时饣方向将对象映射到离其最近的节点上去。现在根据一致性哈希算 法原玶,重新解决上面集群数据负载均衡问题 把数据块 和片 映射到空间 考虑通常的算法都是将映射到一个位的值,也即是 次方 的数值空间:我们可以将这个空间想象成一个首尾 相接的圆环。 假设有个数据块 ,通过函数计算出的值在环上的分布 假设有 三个数据片,它们在空间中,以对应的值排列。在 计算 的值的时候,一般的方法可以使用机器的地址或者机器名作为 输入 如图所示 2^32-1 Shards Keyl Rev2 Keys ShardA Keys Shard 图数据和分片映射到空间 山国武花论文在丝 把数据 映射到片 上 现在和都已绎通过同一个算法映射到数值空间中了,接下来要 考虑的就是如何将对象映射到面了。如图所示。 在这个环形空间中,如果沿着顺时针方向从的值出发,直到遇见一个 那么就将该 存储在这个上,因为 和 的值是固定的,因此这个 必然是唯和桷定的。 Shards Keyl K eys hardA shardS 图数据映射到分片 考察的变动 通过然后求余的方法带米的最大问题就在于不能满足单调性,当有所变动 会失效,进而对后台服务器造成巨大的冲山,现在就来分析一致性哈希算法。 当移除一个时。假设 挂掉了,根据上面讲到的映射方法,这时仅需要变 动对象 ,将其重新映射到 上即可,参见图。 Shard Keyl Keys Key2 Keys ShardA Keys 图删除一个分片 再考虑添加一台新的 的情况,假设在这个环形空间中 被映射在 山国武技论文在丝 和之间。这时仅需要变动 和 将其重新映射到 上,参见图。 0:2A32-1 Shards heyl Key Shard + ShardA KEyA keys shard 佟新增一个分片 虚拟节点 当移除一个是有可能会造成一个“雪崩”的情况,即 由于承担了 的数据,所以 的负载会变高, 很容易也宕机,这样依次下去,这样造成整 个集群都挂了。而且算法并不能保讦绝对的平衡,如果较少的话,对象并不能 被均匀的映射到,比如在上面的例子中,仅部署 和 的情况下, 仅存储了 和 而 则存储了 和 ;分布 是不均衡的。基于这些原因,引入了“虚拟节点”的概念:即想象在这个环上有很多“虚拟节 点”,数据的存储是沿着环的顺时针方向找个虚拟节点,每个虚拟节点都会关联到个貞 实节点。如下图,虚拟节点 和 对应貞实节点 和 对应真实节点 这样的话 和 块射到 上 和 映射到了 上,均衡性得到了很大的提高。如图所示 02^32-1 shardA 2 Shard sharda 1 sharde 1 图虚拟节点 山国武花论文在丝 结论 本文研究了 的数据负载均衡策略,由于在集群中数据分布不均衡,介绍了 致性哈希算法。使用这种算法可以将存储的数据均匀的分布在节点上,实现数据负载均衡, 减少系统对的占有率,史好地提高了其并发性的能力,实现对系统的优化。它能够很好 的应用在大型网站中,有效的实现对海量数据的存储。对于分布式存储的优化是个 新兴的研究领域,实现个稳定、安全、扃效的存储方案还有待研宄 参考文献 深入学习 巨成北京:人民邮电出版社, 权威指南陈显峰北京:人民邮电出版社, 李彬,张英伟 非关系型数据库负载均衡的实现电脑知识与技术,, 王光磊 数据库的应用研究和方案优化屮国科技信息

...展开详情
试读 8P 论文研究-MongoDB数据负载均衡的研究与优化 .pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 至尊王者

关注 私信
上传资源赚钱or赚积分
最新推荐
论文研究-MongoDB数据负载均衡的研究与优化 .pdf 10积分/C币 立即下载
1/8
论文研究-MongoDB数据负载均衡的研究与优化 .pdf第1页
论文研究-MongoDB数据负载均衡的研究与优化 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载