论文部分内容阅读
互联网产生了大量的数据,这些数据具有无结构化特点,并且很大一部分数据都是小尺寸的。外部对数据存储系统的访问是高并发的,期望数据存储系统能提供数据的强一致性访问。传统的关系型数据库扩展性差,并发性能较低,并不适合应用在高并发的环境下。很多互联网公司使用扩展性更好、性能更高的键值对存储系统来存储数据,但现有的键值对存储系统在存储小尺寸数据时,存在单机存储容量受限于内存大小、高性能和高可用性不能兼得、只保证数据的最终一致性等不足之处。本文设计并实现了一个分布式键值对存储系统,主要改进了分布式键值对存储系统中的两个技术难点:1)单机存储容量不受内存大小限制。本系统基于Bitcask存储模型改进得到了Bo B存储模型,把完整索引保存在硬盘中,内存中只存储用于定位完整索引的精简索引,每个键值对数据只需要5Byte的内存来定位完整索引,1GB内存即可存储2亿条键值对数据的索引。作为代价,该模型的读写操作需要额外的一次随机硬盘读来查询完整索引,但在数据冷热分明的应用场景下,内存缓存可以有效的减少这一次随机硬盘读的开销;2)提供数据的强一致性访问。本系统基于Paxos算法设计并实现了数据强一致性的解决方案,使得本系统可以提供数据的强一致性访问,并结合键值对存储系统这一实际应用场景进行优化,一次预授权优化后的Paxos算法过程只需要4次消息交互和2次持久化的硬盘存储,大幅提高了强一致性过程的效率,从而提高系统的整体性能。本文最后对系统进行了全面的功能测试和性能测试。测试结果表明,Bo B存储模型单机可以存储十亿级的键值对数据,在存储了大规模数据后,仍能保持较高性能和高可用性;分布式键值对存储系统可以提供强一致性的数据访问,峰值写性能达到约7万请求/秒,峰值读性能达到约3万请求/秒,能满足互联网应用的性能需求。