一种基于主从副本数据解耦的高性能分布式键值存储方法技术

技术编号:33428630 阅读:18 留言:0更新日期:2022-05-19 00:19
本发明专利技术公开了一种基于主从副本数据解耦的高性能分布式键值存储方法,是应用于包含若干个节点的存储集群中,若任一节点第i次接收到键值数据,则对第i个键值数据进行解耦操作和差异化存储操作,使得所述第i个键值数据写入日志结构合并树或两层日志架构进行存储和管理,并对两层日志架构中的键值数据进行有序度可调操作,对故障节点中的键值数据按进行并行数据恢复操作。本发明专利技术能提升分布式键值系统的整体性能,并提供可根据应用的性能需求动态调整读写性能的机制,从而解决现有分布式键值存储系统中统一的多副本数据管理方案加剧系统读写放大的关键问题。统读写放大的关键问题。统读写放大的关键问题。

【技术实现步骤摘要】
一种基于主从副本数据解耦的高性能分布式键值存储方法


[0001]本专利技术属于计算机存储系统
,具体涉及在分布式键值存储系统(distributed KV Stores)中,基于主

从副本数据解耦来构建差异化的副本数据存储机制,并在此基础上设计有序度可动态调整的副本数据管理方案,实现高性能和读写性能可调整的分布式键值存储方法。

技术介绍

[0002]为了适应海量非结构化数据的存储与访问需求,并克服传统关系型数据库、文件存储在可扩展性与性能等方面的不足,键值存储(简称为KV存储)系统提供了很好的解决方案,比如谷歌公司的LevelDB、脸书公司的RocksDB等单机键值存储系统,以及为支持大规模数据存储而衍生出的分布式键值存储系统,如PingCAP公司的TiKV,亚马逊公司的DynamoDB,以及阿帕奇基金会的Cassandra。上述主流键值存储系统均采用日志结构合并树(LSM

tree)来管理键值数据(key

value pairs),该架构将磁盘上的数据组织成多层有序形式,数据在内存排序后追加写入,优点是可以将随机写转换为顺序写,从而获得高效的写入性能,缺点是需要对相邻层间的数据做频繁的合并操作,由此造成严重的读写放大问题。
[0003]另一方面,为了保证数据的高可靠并提供数据容错,多副本容错机制被广泛应用在分布式键值存储系统中,即每个键值数据被复制成多份并存储在多个节点(当一个节点的数据丢失后,可以从其他节点进行数据恢复)。然而,现有分布式键值存储系统的多副本管理方案并未考虑日志结构合并树(LSM

tree)架构自身存在的读写放大问题,简单地在每个节点上采用一个日志结构合并树(LSM

tree)对所有副本数据进行统一存储。
[0004]因此,多副本机制下日志结构合并树(LSM

tree)中存储的数据量成倍增长,且在执行读写操作时不同副本数据之间会相互干扰,从而进一步加剧日志结构合并树(LSM

tree)的读写放大问题。

技术实现思路

[0005]本专利技术是为了解决上述现有技术存在的不足之处,提出一种基于主从副本数据解耦的高性能分布式键值存储方法,以期能提升分布式键值系统的整体性能,并提供可根据应用的性能需求动态调整读写性能的机制,从而解决现有分布式键值存储系统中统一的多副本数据管理方案加剧系统读写放大的关键问题。
[0006]本专利技术为达到上述专利技术目的,采用如下技术方案:
[0007]本专利技术一种基于主从副本数据解耦的高性能分布式键值存储方法的特点是应用于包含若干个节点的存储集群中,若任一节点第i次接收到键值数据,则对第i个键值数据进行解耦操作和差异化存储操作;
[0008]所述解耦操作包括:
[0009]对所接收到的第i个键值数据中的键进行哈希计算得到第i个哈希值,然后根据第i个哈希值和一致性哈希环计算得到所述第i个键值数据中的键所映射到的一个节点编号;
如果计算得到的节点编号等于当前接收到第i个键值数据的节点编号,则将所述第i个键值数据识别为主副本;否则,将所述第i个键值数据识别为从副本;
[0010]所述差异化存储操作包括:
[0011]若所述第i个键值数据为主副本,则将所述第i个键值数据写入节点的日志结构合并树中进行存储和管理;
[0012]若所述第i个键值数据为从副本,则将所述第i个键值数据写入一个两层日志架构中进行存储和管理。
[0013]本专利技术所述的高性能分布式键值存储方法的特点也在于,所述两层日志架构的写入步骤包括:
[0014](i)两层日志架构接收到第i个键值数据时,判断i>Nmax是否成立,若成立,则执行步骤(ii),否则,将第i个键值数据写入第一层全局日志中;
[0015](ii)对于第一层全局日志中的Nmax个键值数据,后台线程计算得到每个键值数据中的键所映射的节点编号;并根据不同的节点编号建立对应的本地日志,且在每个本地日志中均设置有若干个范围组;
[0016](iii)分割Nmax个键值数据:
[0017]A、定义变量j并初始化j=1;
[0018]B、对于第j个键值数据,后台线程计算得到第j个键值数据中的键所映射的节点编号为L,则将其映射到第L个本地日志;并判断在第L个本地日志中,第j个键值数据的键所属于的范围组;然后将第j个键值数据写入第L个本地日志中对应的范围组中;
[0019]C、将j+1赋值给j后,判断j>Nmax是否成立,若成立,则表示将Nmax个键值数据都分别写入不同本地日志的不同范围组中,并将每个范围组内所写入的若干个键值数据保存在一个文件内,以形成每个范围组所对应的有序段;否则,返回步骤B执行。
[0020]对两层日志架构中的键值数据按如下步骤进行有序度可调操作:
[0021]若所述高性能分布式键值存储方法应用于读密集型的存储系统中,则增加范围组内有序段间的合并操作,即当一个范围组内有序段的个数超过阈值Δ1时,则将相应范围组内所有的有序段合并为一个有序段,使得范围组内有序段的个数维持在阈值Δ1内;
[0022]若所述高性能分布式键值存储方法应用于写密集型的存储系统中,则减少范围组内有序段间的合并操作,即当一个范围组内有序段的个数超过Δ2时,将相应范围组内所有的有序段合并为一个有序段,从而将范围组内有序段的个数维持在阈值Δ2内;Δ1<Δ2。
[0023]对故障节点中的键值数据按如下步骤进行并行数据恢复操作:
[0024](i)使用两个线程并行地从每个节点上的日志结构合并树和两层日志中读取数据,并根据读取的键值数据,计算每个键值数据的哈希值,并将其存储在梅克尔树的各个结点中,从而构建每个节点上的梅克尔树;
[0025](ii)将故障节点上构建的梅克尔树分别与其他节点构建的梅克尔树依次进行比较,判断故障节点和其他梅克尔树在相同位置的结点的值是否相同;若相同,则表示相应结点所对应的键值数据未丢失,并结束流程,否则,表示相应结点所对应的键值数据已丢失;
[0026](iii)在非故障节点上使用两个线程并行地从日志结构合并树和两层日志中读取丢失数据所在的结点上对应的键值数据作为恢复数据,并发送到故障节点;
[0027](iv)所述故障节点收到所述恢复数据后,使用两个线程并行地向日志结构合并树
和两层日志中写入所述恢复数据。
[0028]与现有技术相比,本专利技术的有益技术效果体现在:
[0029]1、轻量级的主从副本数据解耦:本专利技术采用哈希计算并结合一致性哈希环来对主

从副本数据进行解耦操作,使得主从副本解耦操作是轻量级、低开销的,且不影响存储系统上层的数据分布机制及一致性协议。
[0030]2、主

从副本数据的差异化存储:本专利技术将解耦出的主副本采用日志结构合并树存储,将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于主从副本数据解耦的高性能分布式键值存储方法,其特征是应用于包含若干个节点的存储集群中,若任一节点第i次接收到键值数据,则对第i个键值数据进行解耦操作和差异化存储操作;所述解耦操作包括:对所接收到的第i个键值数据中的键进行哈希计算得到第i个哈希值,然后根据第i个哈希值和一致性哈希环计算得到所述第i个键值数据中的键所映射到的一个节点编号;如果计算得到的节点编号等于当前接收到第i个键值数据的节点编号,则将所述第i个键值数据识别为主副本;否则,将所述第i个键值数据识别为从副本;所述差异化存储操作包括:若所述第i个键值数据为主副本,则将所述第i个键值数据写入节点的日志结构合并树中进行存储和管理;若所述第i个键值数据为从副本,则将所述第i个键值数据写入一个两层日志架构中进行存储和管理。2.根据权利要求1所述的高性能分布式键值存储方法,其特征是,所述两层日志架构的写入步骤包括:(i)两层日志架构接收到第i个键值数据时,判断i>Nmax是否成立,若成立,则执行步骤(ii),否则,将第i个键值数据写入第一层全局日志中;(ii)对于第一层全局日志中的Nmax个键值数据,后台线程计算得到每个键值数据中的键所映射的节点编号;并根据不同的节点编号建立对应的本地日志,且在每个本地日志中均设置有若干个范围组;(iii)分割Nmax个键值数据:A、定义变量j并初始化j=1;B、对于第j个键值数据,后台线程计算得到第j个键值数据中的键所映射的节点编号为L,则将其映射到第L个本地日志;并判断在第L个本地日志中,第j个键值数据的键所属于的范围组;然后将第j个键值数据写入第L个本地日志中对应的范围组中;C、将j+1赋值给j后,判断j>Nmax是否成立,若成立,则表示将Nmax个键值数据都分别...

【专利技术属性】
技术研发人员:李永坤张强许胤龙
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1