基于FODA算法mongodb大数据负载均衡策略的改进(8页).docx
《基于FODA算法mongodb大数据负载均衡策略的改进(8页).docx》由会员分享,可在线阅读,更多相关《基于FODA算法mongodb大数据负载均衡策略的改进(8页).docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于FODA算法mongodb大数据负载均衡策略的改进-第 8 页基于FODA算法mongodb大数据负载均衡策略的改进摘要:随着 Web2.0技术的发展和云存储技术的成熟,如何有效地存储、处理海量数据成了一个非常严峻的问题。对于数据库的并发性、可扩展性能力的要求也变的越来越高。云计算就在这样的环境下产生。云计算是一种通过Internet以服务的方式提供动态可伸缩性的虚拟化的资源计算模式,由计算机和其它设备提供共享资源,软件和信息作为网络的计量服务。很多大学,供应商和政府组织投资关于云计算的研究,比如:亚马逊推出的简单存储服务和弹性计算云,谷歌提出的可扩展的分布式文件系统(GFS),BigT
2、able和MapReduce,这些技术都已经成功用于生产环境。相对于此,传统的关系型数据库(ORDBMS)在面对并发量极高的Web2.0网站时已经显得捉襟见肘,主要体现在一下几个方面:n 对大并发量的访问需求。当前Web2.0网站的数据库有很高的并发量,每秒上万次读写要求已是常事,对于上万次查询来说,关系型数据库勉强还撑得住,但面对上万次写入访问,硬盘IO就无法承受了。n 对大数据量的存储效率和快速访问的需求。当前大型的SNS网站每天生成的数据数以亿计。以国外的Friendfeed 为例,一个月的用户动态就可以达到 2亿条以上。对于关系数据库来说,在一张如此庞大的表里面进行查询,其效率必然是极
3、其低下的。由于传统的关系型数据库系统无法满足以上需求,因此NoSQL数据库系统在主要互联网公司的应用不断上升,比如Google,Amazon,Twitter和Facebook。在众多NoSQL数据库当中,MongoDB是比较出色的一款。MongoDB是一个类似于关系数据库的非关系数据库,它支持的数据结构跟Json格式类似,称为Bson,因此可以存储比较复杂的数据类型。本文主要讨论MongoDB的工作机制、自动分片原理,最后基于源代码分析MongoDB的负载均衡算法,并提出一定的改进。关键字:大数据,FODA(Frequency Of Data Access),MongoDB,负载均衡1 引言1
4、.1 MongoDB数据库简介MongoDB是一个基于分布式文件存储的数据库。由C+语言编写。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。MongoDB的特点:n 面向集合存储;n 模式自由;n 支持动态查询;n 支持完全索引;n 支持查询;n 支持复制和故障转移;n 自动处理碎片;n 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言;n 文件存储格式为BSON(一种JSON的扩展);n 可通过网络访问;所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每
5、个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。MongoDB服务端可运行在Li
6、nux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。1.2 MongoDB集群系统一个MongoDB的集群系统如图1所致,主要由片(Sharding)、Mongos路由服务器和Config服务器三部分组成。1) 片:片就是主要存储数据的容器。每个片可以是单独的服务器, 也可以是副本集。2) Mongos 路由器:每个分片都包含部分集群数据,那么还需要一个接口连接整个集群,这就是
7、Mongos。Mongos 进程是一个路由器的工作, 它可以将所有的读写请求指引到合适的分片上,从而为客户端提供了一个合理的视图。3) Config 服务器: Config 服务器中持久化了分片集群中的元数据,包括全局集群配置,每个数据库、 集合和特定范围的位置,以及一份变更记录, 保存了数据在分片之间进行迁移的历史信息。图1.集群系统的架构2 MongoDB的自动分片功能什么时候需要分片:a.机器的磁盘不够用了b.单个Mongod已经不能满足些数据的性能需要了c.想将大量数据放在内存中提高性能一般来说,先要从不分片开始,然后在需要的时候将其转换成分片。2.1 MongoDB的数据分割原理分片
8、是MongoDB提供的一种机制,其可以将大型的集合分割保存到不同的服务器上。与其他的分区方案相比,MongoDB几乎能自动为我们完成所有事情。只要我们进行简单的配置,并告诉MongoDB要分配的数据,它就可以自动维护数据在不同服务器之间的平衡。同时根据需要增减服务器,MongoDB也会自动移动平移已有数据。分片机制提供了如下三种优势:n 对集群进行抽象,让集群“不可见”。MongoDB自带了一个叫做mongos的专有路由进程。mongos就是掌握统一路口的路由器,其会将客户端发来的请求准确无误的路由到集群中的一个或者一组服务器上,同时会把接收到的响应拼装起来发回到客户端。n 保证集群总是可读写
9、。MongoDB通过多种途径来确保集群的可用性和可靠性。将MongoDB的分片和复制功能结合使用,在确保数据分片到多台服务器的同时,也确保了每分数据都有相应的备份,这样就可以确保有服务器换掉时,其他的副本可以立即接替坏掉的部分继续工作。n 使集群易于扩展。当系统需要更多的空间和资源的时候,MongoDB使我们可以按需方便的扩充系统容量。为了在分片间均匀地分配数据,MongoDB 会在不同分片间移动被分割了的数据子集,并会根据片键来决定移动哪些数据。例如,我们可能选择按用户名 (username) 字段来划分用户集合。MongoDB 使用基于区间的方式进行划分,即按照给定区间将数据分割成不同块,
10、例如 “a”,“f”。MongoDB 中分片多用a,b来表示区间范围, 该区间表示为 “从a开始且包含a,到b为止但不包含 b”。举例来说,假设users 集合是以 username 为片键进行分片,它分布在两个分片A和B上,并且被分成了如表1所示的多个块,每个块的范围由 key 的起始值和终止值来标识。图2. MongoDB数据分割2.2 MongoDB自动分片的平衡策略MongoDB数据库的自动分片技术就是将原先数据库中集合依据一定的规则切分成若干小块,这些分片小块统一由mongos路由管理,当有请求查询或写入时,路由会依据分片shard key规则找到对应的分片操作。分片解决了写密集操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FODA 算法 mongodb 数据 负载 均衡 策略 改进
限制150内