论文部分内容阅读
随着Internet技术的发展和互联网的普及,应用程序的数据存储规模和数据的访问量越来越大,对数据存储系统的可用性要求越来越高,而访问延时要求越来越短。这些数据大多是非关系型的,而且没有固定的格式。严格遵守数据的原子性、一致性、隔离性、持久性的关系数据库系统的扩展性、可用性和性能都比较差,无法满足海量非关系型数据的高并发、低延迟的存储和访问。新的时期需要能够容纳海量的非关系型数据的分布式数据存储解决方案。 本文以非关系型的分布式数据存储系统作为研究对象,研究了分布式数据存储的相关理论和基于LSM Tree的存储引擎原理,分析了典型的分布式数据存储系统的设计原理和关键技术,结合应用场景分析并制定了系统的分布式存储策略,设计了一个基于键值的分布式存储系统。该系统利用函数式编程语言Erlang的并发特性及其OTP平台的分布式编程库进行实现,开发高效且运行稳定。本文重点解决了以下几个问题: 第一,采用两次映射的改进一致性哈希算法进行数据的分布,解决数据的高并发和扩展性问题,具有无异构性问题、元信息数据量小、简单高效的特点。 第二,采用以数据分片为单位的基于主从的数据复制方案,解决数据的高可用和高可靠问题,具有数据同步快、一致性高、数据副本灵活可控的特点。 第三,采用中心化的有主控服务器的架构设计,解决分布式集群的管理问题,具有系统设计模型简单、支持大规模集群的特点。 第四,采用数据分片副本相对于数据节点无关的分配策略和副本之间独立选举的方式,解决数据的高可用和容错问题,具有数据节点故障无单点负载过高的特点。 第五,采用以数据分片为单位进行数据拷贝的数据迁移方案,解决数据的扩展性和负载均衡问题,具有负载均衡和扩容平滑且速度快的特点。 本文设计的分布式键值存储系统构建在大规模廉价的PC服务器集群之上,能够用来存储大规模的小键值数据对,具有高并发、低延迟、高可用、高可靠、线性扩展等特点,并且能够自动的容灾、负载均衡和扩容。