[发明专利]面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统有效
申请号: | 201710486056.6 | 申请日: | 2017-06-23 |
公开(公告)号: | CN107291541B | 公开(公告)日: | 2020-07-10 |
发明(设计)人: | 孙辉;刘伟;施巍松 | 申请(专利权)人: | 安徽大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 合肥市长远专利代理事务所(普通合伙) 34119 | 代理人: | 段晓微;叶美琴 |
地址: | 230000*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 key value 系统 compaction 粒度 进程 并行 优化 方法 | ||
1.面向Key-Value系统的compaction粗粒度进程级并行优化方法,其特征在于,包括以下步骤:
S1、主进程接收到读写请求后判断是否需要调度compaction线程,当判断结果为是时,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
S2、主进程提取从进程子任务中的元数据信息并发送至从进程,并对主进程子任务进行compaction操作,从进程接收主进程发送的元数据信息后对从进程子任务进行compaction操作;
S3、主进程在主进程完成主进程子任务compaction操作且从进程完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;
步骤S1具体包括:
主进程接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量;
当主进程判定Key-Value系统需要调度compaction线程时,主进程根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
所述任务分割算法具体包括:
主进程确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程将SSTable文件分割为主进程子任务,将SSTable文件分割为从进程子任务;
主进程根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1;
步骤S2具体包括:
主进程提取从进程子任务所需的SSTable文件元数据信息发送至从进程,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程接收主进程发送的元数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作;
步骤S3具体包括:
主进程完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程完成从进程子任务compaction操作时,从进程判断主进程是否完成主进程子任务compaction操作,若是,从进程唤醒主进程并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程,主进程对Key-Value系统的日志文件进行更新、过期文件进行删除,以完成对Key-Value系统的文件的优化操作。
2.面向Key-Value系统的compaction粗粒度进程级并行优化系统,其特征在于,包括:主进程模块和从进程模块,主进程模块和从进程模块通信连接;
主进程模块用于在接收到读写请求后判断是否需要调度compaction线程,且当判断结果为是时将compaction线程中的任务信息分割为主进程子任务和从进程子任务,主进程模块用于提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,主进程模块还用于在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;
从进程模块用于在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作,并在完成从进程子任务compaction操作后判断主进程子任务compaction操作是否完成,若是则向主进程模块发送已完成从进程子任务compaction操作信息;
主进程模块在接收到读写请求后判断是否需要调度compaction线程具体包括:
主进程模块接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量;
主进程模块将compaction线程中的任务信息分割为主进程子任务和从进程子任务具体包括:
当主进程模块判定Key-Value系统需要调度compaction线程时,主进程模块根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
所述任务分割算法具体包括:
主进程模块确定此次compaction选定的LK层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程模块将SSTable文件分割为主进程子任务,将SSTable文件分割为从进程子任务;
主进程模块根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1;
主进程模块提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,具体包括:
主进程模块提取从进程子任务中SSTable文件元数据信息发送至从进程模块,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程模块在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作具体包括:
从进程模块接收主进程模块发送的数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作;
主进程模块在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作具体包括:
主进程模块完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程模块完成从进程子任务compaction操作时,从进程模块判断主进程模块是否完成主进程子任务compaction操作,若是,从进程模块唤醒主进程模块并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程模块,主进程模块对Key-Value系统的日志文件进行更新、过期文件进行删除,以完成对Key-Value系统的文件的优化操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽大学,未经安徽大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710486056.6/1.html,转载请声明来源钻瓜专利网。