一种基于key-value键值对的分布式存储方法

文档序号:8339747阅读:346来源:国知局
一种基于key-value键值对的分布式存储方法
【技术领域】
[0001]本发明涉及分布式存储技术领域,特别涉及一种基于KEY-VALUE键值对的分布式存储方法。
【背景技术】
[0002]随着网络应用的迅速发展,网络信息数据量越来越大,PB级别的海量数据存储变得越来越重要。传统意义的本地磁盘存储方式已不能满足现有应用的大容量、高可靠性、高性能、横向扩展等要求,为满足这些新要求,基于网络的分布式存储系统得到了广泛重视。
[0003]当今社会化网络、移动通信、网络视频音频、电子商务、传感器网络、科学实验等各种应用产生的数据,往往能够产生千万级、亿级甚至十亿、百亿级的海量小文件,在很多场景下,这些小文件一般都是非常小的碎片化数据,传统的存储在处理此类海量小文件写入时效率非常低下,这是因为海量小文件往往会带来大量的随机写入,本地写入时会因磁盘频繁寻址极大地降低性能,时下越来越流行的分布式存储由于存在先天的网络延时、多副本设置和元数据写入会使性能降得更低。但在另一方面,分布式存储在高并发和扩展性等方面具有无可替代的优势,在未来,会逐渐被各行各业投入使用。
[0004]综上所述,本发明旨在开发一种新型存储方法解决当前分布式存储所面临的小文件写入问题,为特定的应用场景提供解决方案。

【发明内容】

[0005]本发明为了弥补现有技术的缺陷,提供了一种简单有效的基于KEY-VALUE键值对的分布式存储方法。
[0006]本发明是通过如下技术方案实现的:
一种基于KEY-VALUE键值对的分布式存储方法,其特征在于:包括操作接收层,缓存查找层和操作处理层,所述操作接收层接收客户端通过网络发来的读写操作,将客户端的多个操作组成一个transact1n事务,然后统一下发,确保数据的强一致性;所述缓存查找层会响应上一节提到的transact1n事务,解析之后进行执行,根据其中的key值到系统在内存中的缓存区域进行查询,若在缓存中发现,则根据操作类型进行下一步操作;所述操作处理层接收缓存中未处理的事务的操作,视操作类型而定。
[0007]当前为读操作时,所述操作接收层指定数据大小和偏移,此时,系统会根据之前写入的属性信息获取对应数据的对象ID ;
当前为写操作时,所述操作接收层指定待写入数据,操作接收层负责计算数据对象ID ;在得到数据的对象ID之后,再根据特定的算法拼接出key值,以便后续调用。
[0008]当前为读操作时,所述缓存查找层直接获取其value值返回给客户端;
当前为写操作且为覆盖写时,所述缓存查找层对value值进行更新,暂存为脏数据,等待刷新到磁盘中;
未在缓存中发现时,则进入具体操作的流程。
[0009]当前为读操作时,所述操作处理层按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,该遍历过程是对底层维护的key值位图表格进行的,若能找到,则提取其value值,依次向上反馈数据,若没有找到,则返回错误码,完成读操作;
当前为写操作时,所述操作处理层先按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,若发现key值已存在,则将该条key-value删除,若无,贝丨」直接进行以下的写入操作。先对数据进行切片,建立key值到value值的映射关系组成key-value键值对追加到底层维护的键值对列表记录中,同时,将数据的属性信息也按照这种方式予以追加,并返回操作码,至此,完成一次写操作。
[0010]所述层级顺序为底层在保存键值对时,按照先后顺序或者优先级加以分层得到的顺序。
[0011]本发明的有益效果是:该基于key-value键值对的分布式存储方法,修改底层存储为key-value键值对的模式,使得整个存储集群对小文件的处理更加迅速、高效,避免了传统分布式存储或者本地存储模式中伴随小文件随机写入的频繁寻址所引发的1损耗,大大提尚该场景下的存储效率。
【附图说明】
[0012]附图1为分布式存储读取操作示意图。
[0013]附图2为分布式存储写入操作示意图。
【具体实施方式】
[0014]参照说明书附图对本发明进行详细说明。
[0015]该基于KEY-VALUE键值对的分布式存储方法,包括操作接收层,缓存查找层和操作处理层,所述操作接收层接收客户端通过网络发来的读写操作,将客户端的多个操作组成一个transact1n事务,然后统一下发,确保数据的强一致性;所述缓存查找层会响应上一节提到的transact1n事务,解析之后进行执行,根据其中的key值到系统在内存中的缓存区域进行查询,若在缓存中发现,则根据操作类型进行下一步操作;所述操作处理层接收缓存中未处理的事务的操作,视操作类型而定。
[0016]当前为读操作时,所述操作接收层指定数据大小和偏移,此时,系统会根据之前写入的属性信息获取对应数据的对象ID ;
当前为写操作时,所述操作接收层指定待写入数据,操作接收层负责计算数据对象ID ;在得到数据的对象ID之后,再根据特定的算法拼接出key值,以便后续调用。
[0017]当前为读操作时,所述缓存查找层直接获取其value值返回给客户端;
当前为写操作且为覆盖写时,所述缓存查找层对value值进行更新,暂存为脏数据,等待刷新到磁盘中;
未在缓存中发现时,则进入具体操作的流程。
[0018]当前为读操作时,所述操作处理层按照层级顺序(底层在保存键值对的时候会按照先后顺序或者优先级等特征加以分层)遍历磁盘中与目标key值相吻合的key-value键值对,该遍历过程是对底层维护的key值位图表格进行的(下文中的写操作同理),若能找到,则提取其value值,依次向上反馈数据,若没有找到,则返回错误码,完成读操作; 当前为写操作时,所述操作处理层先按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,若发现key值已存在,则将该条key-value删除,若无,贝丨」直接进行以下的写入操作。先对数据进行切片,建立key值到value值的映射关系组成key-value键值对追加到底层维护的键值对列表记录中,同时,将数据的属性信息也按照这种方式予以追加,并返回操作码,至此,完成一次写操作。
[0019]上述操作接收层,缓存查找层和操作处理层三个部分为本发明分布式存储的核心模块,它们共同协调配合完成了小文件数据的读写。相比于传统的存储方式,本分布式存储主要有以下特点:
I)不需要元数据。传统的存储在进行文件存储时,伴随文件一起存储的还有其元数据,对于分布式存储来说,一般都有专门的元数据服务进程或节点提供元数据服务,这样直接导致网络交互和副本数量都翻倍,由此带来的存储时间和空间成本也会翻倍,而本发明采取的方式,将元数据作为数据属性随同数据本身转化为key-value键值对,既节省了写入成本,又避免了与元数据服务的通信;
操作聚合。本发明在处理小文件写入时,会先将操作和数据记录在磁盘的日志文件中,并在内存所维护的操作列表中作一个标记,等日志文件中的操作数量达到预定值之后再统一执行,实现顺序写入的效果,这样既避免了大量随机小文件写入所带来的磁盘频繁寻址,提高写入效率,又可以保证在突然断电时系统可以基于日志文件进行操作回放,确保数据一致性。
【主权项】
1.一种基于KEY-VALUE键值对的分布式存储方法,其特征在于:包括操作接收层,缓存查找层和操作处理层,所述操作接收层将客户端的多个操作组成一个transact1n事务,然后统一下发,确保数据的强一致性;所述缓存查找层会响应上一节提到的transact1n事务,解析之后进行执行,根据其中的key值到系统在内存中的缓存区域进行查询,若在缓存中发现,则根据操作类型进行下一步操作;所述操作处理层接收缓存中未处理的事务的操作,视操作类型而定。
2.根据权利要求1所述的基于KEY-VALUE键值对的分布式存储方法,其特征在于: 当前为读操作时,所述操作接收层指定数据大小和偏移,此时,系统会根据之前写入的属性信息获取对应数据的对象ID ; 当前为写操作时,所述操作接收层指定待写入数据,操作接收层负责计算数据对象ID ;在得到数据的对象ID之后,再根据特定的算法拼接出key值,以便后续调用。
3.根据权利要求1所述的基于KEY-VALUE键值对的分布式存储方法,其特征在于: 当前为读操作时,所述缓存查找层直接获取其value值返回给客户端; 当前为写操作且为覆盖写时,所述缓存查找层对value值进行更新,暂存为脏数据,等待刷新到磁盘中; 未在缓存中发现时,则进入具体操作的流程。
4.根据权利要求1所述的基于KEY-VALUE键值对的分布式存储方法,其特征在于: 当前为读操作时,所述操作处理层按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,该遍历过程是对底层维护的key值位图表格进行的,若能找到,则提取其value值,依次向上反馈数据,若没有找到,则返回错误码,完成读操作; 当前为写操作时,所述操作处理层先按照层级顺序遍历磁盘中与目标key值相吻合的key-value键值对,若发现key值已存在,则将该条key-value删除,若无,贝丨」直接进行以下的写入操作;先对数据进行切片,建立key值到value值的映射关系组成key-value键值对追加到底层维护的键值对列表记录中,同时,将数据的属性信息也按照这种方式予以追加,并返回操作码,至此,完成一次写操作。
5.根据权利要求4所述的基于KEY-VALUE键值对的分布式存储方法,其特征在于:所述层级顺序为底层在保存键值对时,按照先后顺序或者优先级加以分层得到的顺序。
【专利摘要】本发明特别涉及一种基于KEY-VALUE键值对的分布式存储方法。该基于KEY-VALUE键值对的分布式存储方法,包括操作接收层,缓存查找层和操作处理层,服务端的操作接收层接收到用户数据之后,通过内部数据组织完成key-value键值对的拼接,底层分不同的数据层级落盘,同时负责后续数据的解析和读取,由于键值对的存取属于轻量级的数据库型操作,没有元数据,且为追加写入,可以避免随机小文件落盘时所带来的时间消耗。该基于KEY-VALUE键值对的分布式存储方法,修改底层存储为key-value键值对的模式,使得整个存储集群对小文件的处理更加迅速、高效,避免了传统分布式存储或者本地存储模式中伴随小文件随机写入的频繁寻址所引发的IO损耗,大大提高该场景下的存储效率。
【IPC分类】G06F17-30
【公开号】CN104657500
【申请号】CN201510108083
【发明人】魏盟, 张在贵
【申请人】浪潮集团有限公司
【公开日】2015年5月27日
【申请日】2015年3月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1