论文部分内容阅读
随着大数据时代到来,海量数据存储面临巨大挑战,基于磁盘的存储系统,磁盘I/O已经成为性能瓶颈,解决的方法是利用分布式内存存储系统。从应用的缓存系统到大数据处理的存储平台,数据的长度可能从几字节到上百兆,因此面向混合负载的分布式内存存储系统,既可以加速数据访问,又可以提供数据共享和容灾,具有重要意义。 本文通过研究目前有代表性的几个分布式内存存储系统,借鉴了这些系统的设计思想,并针对混合负载进行优化,最终实现了一个原型系统Memstore。本文的主要贡献有: 1)设计实现了基于内存预分配技术的日志式内存数据存储和管理方式。通过内存预分配技术,降低了内存申请的开销;以日志的形式管理内存,减少对数据长度的限制,支持混合负载存储,并且减少内存碎片;实现了一个基于改进链地址法的内存紧凑hash表,能够快速定位内存日志中的数据,降低延迟; 2)设计实现了基于虚拟桶和pull策略缓存的数据分片和路由机制。通过对key计算hash值分配到不同的虚拟桶,将数据分散到集群中不同节点存储,并且可以有效控制集群伸缩时数据迁移量;集群Coordinator统一管理集群路由信息,客户端本地缓存元数据,利用pull策略同步元数据,降低Coordinator的负载;客户端利用路由信息可以直接请求对应Server,减少网络通信次数,降低延迟; 3)实现了一个面向混合负载的高性能,高可用,支持伸缩的原型系统Memstore。系统分为单机内存存储模块和分布式管理模块,单机模块中设计了高效的内存管理方式和数据持久化机制,保证了性能和可靠性,基于Google Protobuf实现了网络通信协议,保证了系统的可扩展性;分布式模块中实现了数据的多副本机制并针对大块数据做了pipeline优化,基于虚拟桶实现了集群的伸缩机制,基于内存日志的分段技术实现了崩溃恢复,功能全面,性能高效; 大量实验表明,Memstore的各个模块都达到了设计要求,整体性能达到了不错的效果。与Redis相比,单机混合负载读写性能提升了17%-30%,支持高并发;分布式性能提升20%-40%,支持线性扩展和崩溃恢复。