论文部分内容阅读
随着云计算和大数据技术的兴起,各种海量数据级规模的应用不断涌现,这些新的应用对数据存储提出了越来越高的要求。然而,传统的关系型数据库,如Oracle、MySQL等已经越来越难满足云计算环境下对数据存储的需求。分布式非关系型数据库充分结合分布式系统抗单点故障能力和NoSQL的天然横向扩展性的特点,能够从容应对海量数据存储的挑战。为此,本文设计并实现了一个分布式键值存储引擎MiniKVDB,并基于对分布式事务和存储性能扩展的研究展开了如下工作:(1)以现有的分布式理论为基础,研究了分布式存储的相关技术,介绍了分布式NoSQL数据库的概念、特点以及相关基础理论,并分析了目前应用广泛的键值存储系统的架构与优缺点。在此基础之上,设计了一个分布式键值存储引擎MiniKVDB的模型。(2)在讨论分布式事务处理模型和提交协议的基础上,设计了MiniKVDB的分布式事务处理方案。在日志同步的模块,深度剖析了Raft一致性协议中的代码结构,采用基于TCP协议中的长肥管道和滑动窗口机制,并在复制状态机中的日志模块中增加了内存缓冲数据区域,对Raft协议提出改进,实验结果表明,改进后的Raft一致性协议能减少通信负载,降低磁盘读写频率,从而使分布式系统具有高可用性及一致性。(3)研究基于Raft一致性协议来构建弹性伸缩的机制和数据的分片策略,在集群中添加了ShardMaster管理模块来存储元信息,并根据调度算法和各存储单元的负载性能,在各节点之间转移数据分片。(4)基于上述理论,实现了一个分布式键值存储引擎MiniKVDB,开发语言为Golang,在其中部署了改进的Raft一致性协议来实现强一致性的数据复制方式,从而来保证可用性,完成了数据切片存储以及各节点之间的负载均衡,并针对该系统做了详细的测试,在此基础上提出了今后的改进计划。