计算机科学与技术硕士学位论文分布式KeyValue数据库及其一致性研究.doc
《计算机科学与技术硕士学位论文分布式KeyValue数据库及其一致性研究.doc》由会员分享,可在线阅读,更多相关《计算机科学与技术硕士学位论文分布式KeyValue数据库及其一致性研究.doc(65页珍藏版)》请在三一办公上搜索。
1、分类号 密 级 U D C 编 号1 0 4 8 6武汉大学硕士学位论文分布式Key-Value数据库及其一致性研究研 究 生 姓 名:学 号:2010206350016指导教师姓名、职称:胡继承 教授专 业 名 称:计算机科学与技术研 究 方 向:计算机软件与理论二一二年五月Dissertation Submitted to Wuhan UniversityStudy of Distributed Key-Value Database and Consistency IssueBy Shiquan YeUnder the Guidance ofProfessor Jicheng HuMay,
2、 2012郑 重 声 明本人的学位论文是在导师指导下独立撰写并完成的,学位论文没有剽窃、抄袭、造假等违反学术道德、学术规范和侵权行为,否则,本人愿意承担由此而产生的法律责任和法律后果,特此郑重声明。 学位论文作者(签名):年 月 日摘 要互联网已进入全面参与的 Web 2.0 时代,伴随而来的是用户量和数据量的爆炸式增长。传统关系型数据库在应付 Web 2.0 网站,特别是超大规模和高并发的社交型网站已经显得力不从心,暴露出很多难以克服的问题。NoSQL 数据库放弃了关系型数据库中的关系模型,通过去除数据之间的耦合使数据库更为适应现代高性能服务架构,从而达到存储系统的高性能。另外,传统的集中式
3、存储无法满足海量数据的需要,为保证高可用性、高可靠性和经济性,越来越多互联网企业采用分布式存储的方式来存储数据,采用冗余存储的方式保证数据的可靠性。本文在研究 Key-Value 存储储系统的基础上,着重研究分布式系统下的数据一致性机制,一致性机制是保证分布式存储系统能够正常提供服务的基础,在某些特定的业务场景中有着苛刻的要求。著名的分布式 Paxos 算法解决的是分布式系统一致性问题,本文在该算法的基础上,提出并实现了多轮 Paxos 算法,以及领导选举算法,从而保证分布式存储系统的一致性。本系统在单机存储上使用 Berkeley DB 作为底层存储引擎,在此基础上,通过实现节点管理、节点通
4、信、冗余备份和一致性算法,解决了分布式系统中数据一致性性等难点问题,最终实现了一套分布式 Key-Value 存储系统。相比于普通的 Key-Value 数据库,本文提出的数据库具有分布式特点,各个节点共同组成一个分布式分布式网络存储服务,能够保证数据的强一致性,具有极高的错误容忍能力,而且系统自带节点管理功能,方便扩展性能,进行高密度地部署。关键词:NoSQL;Key-Value存储;分布式系统;一致性;Paxos算法ABSTRACTThe Internet has come into the web2.0 era which brings the explosive growth of u
5、ser and data. It has been hard for traditional relational-database to deal with Web2.0 website especially large scale SNS website. NoSQL database is more comfortable for the modern architecture of high-performance service, because it removes the data-structured coupling, which improves the efficienc
6、y of data store. On the other hand, traditional centralized data store cant satisfy the requirements of big data. In order to gain high availability, high reliability and economical benefit,more and more internet enterprises take distributed database as their data store, which ensures its reliabilit
7、y by replication.This article studies distributed database and the consistency of distributed system. The key problem of distributed system is maintaining the consistency of data, which is very strict in some cases. A lot of algorithm is introduced to solve this problem and the Paxos algorithm is co
8、nsidered to the most effective approach in dealing with consistency. This article use multi-paxos algorithm which is based on Paxos to solve the consensus of distributed data store.This article builds a distributed key-value database. We use Berkeley DB as its local store engine. By implementing nod
9、e communication, replication and consistency mechanism, we solve the main problem of distributed system, such as consistency, availability, redundancy and fault tolerant. Compared to ordinary key-value database, this key-value data store is a distributed system, all node make up a distributed networ
10、k store service, ensuring the strong consensus of data and provides high-availability, high-reliability, scalability and fault-tolerant for data store. Key words: NoSQL; Key-Value Store; Distributed System; Consensus; Paxos Algorithm目 录摘 要IABSTRACTII第1章 绪论11.1 课题的研究目的和意义11.2 相关领域的研究现状21.3 论文组织结构3第2章
11、 NoSQL存储系统的研究32.1 关系型数据库的缺陷32.2 NoSQL简介52.3 Key-Value存储系统的优势和不足72.3.1 Key-Value数据库的优势72.3.2 Key-Value数据库的不足72.4 如何使用Key-Value数据库82.4.1 Key-Value数据库的设计方法82.4.2 Key-Value数据库与关系型数据库的配合使用102.4.3 Key-Value缓存的使用112.5 国内外 NoSQL 数据库的研究和分析122.5.1 满足极高读写性能需求的Key-Value数据库122.5.2 满足海量存储需求和访问的面向文档的数据库132.5.3 满足高
12、可扩展性和可用性的面向分布式计算的数据库132.5.4 面向图存储的数据库14本章小结14第3章 分布式系统的复制技术153.1 复制的目的153.2 复制的上下文163.3 复制的模型173.4 分布式系统的复制193.4.1 主动复制203.4.2 被动复制213.4.3 半主动复制223.4.4 半被动复制223.5 数据库的复制233.6 复制的策略233.6.1 Eager Primary复制243.6.2 Eager Update Everywherre复制253.6.3 基于原子性组播的复制263.6.4 懒惰式复制27本章小结27第4章 分布式系统的一致性研究284.1 一致性
13、模型284.1.1 强一致性模型294.1.2 顺序一致性模型294.1.3 因果一致性模型304.1.4 FIFO一致性模型314.1.5 最终一致性324.2 一致性协议334.2.1 基于主备份的协议334.2.2 复制的写协议36本章小结36第5章 分布式一致性算法的研究和实现385.1 系统架构385.2 基于Paxos的一致性算法395.2.1 Paxos算法解决的问题395.2.2 Paxos算法的理论405.2.3 Paxos算法的内容425.2.4 Paxos算法的实现445.3 系统的性能分析49本章小结51第6章 总结与展望526.1 总结526.2 展望52参考文献52
14、致谢56第1章 绪论1.1 课题的研究目的和意义互联网早已进入 Web 2.0 时代,这期间出现很多大规模现代网站,带来信息量爆炸式地增长。面对海量的用户以及海量的数据,传统的关系型数据库在网站的支撑上显得越来越吃力,数据库性能瓶颈越来越突出。虽然出现很多相对应的解决方案,比如水平切分数据库、引入内存缓存等方法,但仍然很难从根本上解决关系型数据库的缺陷。这主要归结于关系型数据库复杂的关联和耦合,这些天然缺陷导致关系型数据库很难再架构上和部署上进行切分和扩容,从而影响了数据库的整体性能,并且,数据库的扩展和维护变得相当复杂。在这样的技术背景下,很多互联网企业内部的团队开发出了 NoSQL 数据库
15、,并开放源码,在业界得到广泛地应用。NoSQL 数据库抛弃了传统关系型数据库的关系模型,取消了复杂的关系模式和字段类型,通过在业务架构上简化存储模型使之适应现代高性能网站的架构,实现存储系统的高可扩展性和高性能并发读写的能力。本文提出的 Key-Value存储系统就属于 NoSQL 的一种类型。早在 1991 年,伯克利加州大学就开发出第一款 Key-Value 数据库:Berkeley DB7 , Key-Value 数据库的出现是为了应付数据的高并发读和写,但是对于大多数互联网企业来说,现有的 Key-Value 数据库部署和维护的成本偏高,这无疑阻碍了 Key-Value 数据库在业界的
16、广泛使用。特别在云计算领域,如果不能方便地部署和维护云端的数据服务器,将影响云端提供服务的质量和稳定性。因此,一种具有高可扩展性的新型 Key-Value 存储系统能够给业界开发人员带来方便。当前研究背景下,多数对 Key-Value 数据库的研究都将精力集中在单机数据存储层面,比如固态存储,flash存储以及增量型存储引擎等技术的使用已将单机的数据存储性能发挥到极致。但是多数开源的 Key-Value 数据库并没有提供分布式的功能,更没有结合硬件配置的特点对存储系统有综合的考虑。因此,在降低分布式部署的成本和难度上比较乏力,业界需要一种对此有较好支持的新型分布式 Key-Value 存储系统
17、。本课题的目的是设计并实现一种分布式 Key-Value 数据存储系统,它能够保证数据的高可靠性和一致性,具有优秀的错误容忍能力,而且方便对存储系统扩容,为开发人员带来极大的方便,适合用于互联网企业的大规模数据存储,为云计算的存储平台提供优秀的解决方案。1.2 相关领域的研究现状如今 NoSQL 在业界得到了广泛地应用,各大互联网公司相继开发出自己的 NoSQL 存储系统,并贡献给开源界。NoSQL 在理论上最早来自 Google 提出的 BigTable1 ,BigTable 是 Google 设计用来分布式存储大规模结构化数据的,Google 在很多项目上用 BigTable 来存储数据,
18、包括网页查询、Google Earth和Google 金融。Amazon紧随其后提出了Dynamo存储系统2 ,Dynamo是面向Amazon自有的电子商务应用的,使用广域分布的大规模集群提供高可靠的对象存储服务,主要存储1M左右甚至更小的内容,如购物车、推荐列表等。BigTable和Dynamo为各自的企业提供了高性能的存储服务,成为整个网站架构的存储基石。遗憾的是,两者都没有开放源码。以 Facebook 和 Twitter 为代表的社交型互联网企业相继开发出自己的 Key-Value 存储系统,并且贡献给开源界。Facebook 开发的 Cassandra8 是一套高度可扩展、最终一致、
19、分布式的结构化 Key-Value 存储系统,Cassandra 结合了 Dynamo的分布式技术和Google 的BigTable 数据模型。Cassandra 具有Dynamo 的最终一致性;同时 Cassandra 相比典型的 Key-Value 数据存储模型更为丰富,它提供与 Google 的 BigTable 相似的、基于 ColumnFamily的数据模型。国内的互联网公司对于 NoSQL 的应用也越来越多,而且相继出现了自主研发的 Key-Value 存储系统,包括淘宝网的 Tair,豆瓣网的 BeansDB和人人网的 Nuclear。这些开源存储系统紧密结合自身的业务特点,为企
20、业提供强有力的数据支撑。但是由于这些系统缺少通用性,仅限自家使用,没有在业界得到广泛地使用。目前开源界出现的 Key-Value 数据库有 Memcached、Redis、MemcacheDB等,这些数据库主要关注于单机的存储和实现,却反分布式的考虑,难以在超大型的分布式系统中使用,同时它们在数据的一致性上不够苛刻,难以满足一些业务场景的要求。纵观开源界和工业界,Key-Value 产品呈现百花齐放的态势,各种特性的产品都有出现,然而根据 CAP 理论4 ,不可能存在一种完美的和通用的 Key-Value 产品,对于互联网企业,特别是拥有海量数据和大规模访问的网站来说,有必要结合自身业务特点开
21、发出适合自己的 Key-Value 存储系统。1.3 论文组织结构第1章 该部分对此研究展开的背景做了阐述,随后研究和国内外 Key-Value 存储系统的发展状况。第2章 该章节研究了 Key-Value 存储系统,包括其产生的意义、特性和应用场景,并分析了目前各个开源产品的不足之处。第3章 该部分研究了传统数据库的复制技术分布式系统中的复制技术,指出了复制技术的目的,并把复制技术抽象出了一个通用的五阶段模型,在此基础上论证了各种技术方案的优点和不足。第4章 该部分研究了现有分布式系统的一致性模型,以及用来解决一致性问题的一致性协议,指出强一致性是不可能实现的,必须根据应用特点适当放松一致性
22、要求。进而对比了集中要求较弱的一致性模型和一致性协议。第5章 该部分详细描述了Paxos一致性算法的设计和实现,在此基础上,提出了多重Paxos算法解决容错问题,以及使用领导选举算法解决分布式环境中Master故障的问题。第6章 该部分对此 Key-Value 存储系统做了功能测试和性能分析,并给出了详细的测试数据和图表分析。第2章 NoSQL存储系统的研究2.1 关系型数据库的缺陷 互联网早期发展的时候,由于用户基数小,网站的访问量不大,因而服务器的负载相对小很多,当时对网站的架构没有很多讲究,大多数互联网应用着眼于内容,吸引更多的用户量,对于服务器来说,只要能工作就好,在性能上考量不多。而
23、且那个时候的网站主要以HTML静态网页的方式呈现,复杂一点的应用会加上留言板或者简单的BBS版块等。此类应用负载很轻,数据量也小,因此很多网站的后端存储采用简单的纯文本格式,加上自定义的分割符来结构化数据,这种数据存储方式这迟早会暴露出很多缺陷的,比如在性能上当数据量大的时候查询效率显著降低,在功能上扩展性非常难。 随着互联网的发展,简单的静态网页无法满足日益复杂的网站功能,以CGI的出现标志着动态网站的时代到来,简单的数据存储方案显然无法满足动态网站的复杂需求。为此,人们开始寻找更为合适的数据存储方式,先后开发出Berkeley DB和gdbm两类数据库,在早期以C和Perl做为编程语言的C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机科学 技术 硕士学位 论文 分布式 KeyValue 数据库 及其 一致性 研究
链接地址:https://www.31ppt.com/p-4031533.html