论文部分内容阅读
21世纪初期,互联网进入了一个全新的发展高峰期。数据量以指数增长,提高对海量数据的管理、访问能力的需求变得越来越迫切。海量的数据和巨大的用户数量对存储资源和计算资源的可扩展性提出了巨大的挑战。传统的关系型数据库系统并不能提供这些应用所需要的高可扩展性。一种新型的、存储非关系型数据的、具有高可扩展性的键值存储系统应运而生。本文首先介绍了研究背景。其次,分析了分布式文件系统、P2P系统与键值存储系统相关的关键技术。最后,设计了一个高可靠、高扩展性、高可用的键值存储系统KV-Store。KV-Store具有的基本特征或创新点:第一基于改进的一致性哈希算法的数据分散算法,该算法成功地解决了基本的一致性哈希算法和Dynamo使用的数据分配算法存在的热点问题、数据分散和集群拓扑的紧耦合问题、存储节点的异构性问题。第二基于PG划分的负载均衡算法。使用哈希算法进行数据分散的一个根本缺点是这种映射关系是不可改变的。映射关系不能改变直接导致了数据的位置不能根据系统的负载进行动态的改变,所以一旦系统出现热点或负载失衡将束手无策。KV-Store使用了哈希算法进行数据分散,同时也创造性的实现了动态的负载均衡算法。第三基于Chubby的消息传输和集群管理。Chord,BT等P2P系统通过复杂的路由和查询协议进行消息的传输,KV-Store使用Chubby的改进版进行集群管理和消息的快速传输。第四KV-Store使得元数据和数据彻底解耦合。与传统的文件存储系统不同,KV-Store使用哈希规则来联系数据和其对应的元数据。系统进行数据迁移,查找时不需要进行资源的检索,而是自己计算得出。在KV-Store中只存在很少量的元数据信息。最后KV-Store是用erlang程序语言进行实现的。erlang是一个函数式编程语言,该语言的特性是易于分布式编程,程序设计简单,实现相同功能的代码量大约是C++语言代码量的四分之一。