欢迎来到天天文库
浏览记录
ID:6068611
大小:381.90 KB
页数:9页
时间:2018-01-01
《基于foda算法mongodb大数据负载均衡策略的改进》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于FODA算法mongodb大数据负载均衡策略的改进摘要:随着Web2.0技术的发展和云存储技术的成熟,如何有效地存储、处理海量数据成了一个非常严峻的问题。对于数据库的并发性、可扩展性能力的要求也变的越来越高。云计算就在这样的环境下产生。云计算是一种通过Internet以服务的方式提供动态可伸缩性的虚拟化的资源计算模式,由计算机和其它设备提供共享资源,软件和信息作为网络的计量服务。很多大学,供应商和政府组织投资关于云计算的研究,比如:亚马逊推出的简单存储服务和弹性计算云,谷歌提出的可扩展的分布式
2、文件系统(GFS),BigTable和MapReduce,这些技术都已经成功用于生产环境。相对于此,传统的关系型数据库(ORDBMS)在面对并发量极高的Web2.0网站时已经显得捉襟见肘,主要体现在一下几个方面:n对大并发量的访问需求。当前Web2.0网站的数据库有很高的并发量,每秒上万次读写要求已是常事,对于上万次查询来说,关系型数据库勉强还撑得住,但面对上万次写入访问,硬盘IO就无法承受了。n对大数据量的存储效率和快速访问的需求。当前大型的SNS网站每天生成的数据数以亿计。以国外的Friend
3、feed为例,一个月的用户动态就可以达到2亿条以上。对于关系数据库来说,在一张如此庞大的表里面进行查询,其效率必然是极其低下的。由于传统的关系型数据库系统无法满足以上需求,因此NoSQL数据库系统在主要互联网公司的应用不断上升,比如Google,Amazon,Twitter和Facebook。在众多NoSQL数据库当中,MongoDB是比较出色的一款。MongoDB是一个类似于关系数据库的非关系数据库,它支持的数据结构跟Json格式类似,称为Bson,因此可以存储比较复杂的数据类型。本文主要讨论M
4、ongoDB的工作机制、自动分片原理,最后基于源代码分析MongoDB的负载均衡算法,并提出一定的改进。关键字:大数据,FODA(FrequencyOfDataAccess),MongoDB,负载均衡1引言1.1MongoDB数据库简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。MongoDB的特点:n面向集合存储;n模式自由;n支持动态查询;n支持完全索引;n支持查询;n支持复制和故障转
5、移;n自动处理碎片;n支持RUBY,PYTHON,JAVA,C++,PHP等多种语言;n文件存储格式为BSON(一种JSON的扩展);n可通过网络访问;所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。模式自由(schema-free),意味
6、着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(BinarySerializeddOcumentFormat)。MongoDB服务端可运行在Linux、Windows或OSX平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在3
7、2位模式运行时支持的最大文件尺寸为2GB。MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。1.2MongoDB集群系统一个MongoDB的集群系统如图1所致,主要由片(Sharding)、Mongos路由服务器和Config服务器三部分组成。1)片:片就是主要存储数据的容器。每个片可以是单独的服务器,也可以是副本集。2)Mongos路由器:每个分片都包含部分集群数据,那么还需要一个接口连接整个集群,这就是Mongos。Mongos进程是一个路由
8、器的工作,它可以将所有的读写请求指引到合适的分片上,从而为客户端提供了一个合理的视图。3)Config服务器:Config服务器中持久化了分片集群中的元数据,包括全局集群配置,每个数据库、集合和特定范围的位置,以及一份变更记录,保存了数据在分片之间进行迁移的历史信息。图1.集群系统的架构2MongoDB的自动分片功能什么时候需要分片:a.机器的磁盘不够用了b.单个Mongod已经不能满足些数据的性能需要了c.想将大量数据放在内存中提高性能一般来说,先要从不分片开始,然后在需要的时候
此文档下载收益归作者所有