亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種面向Key?Value系統(tǒng)的協(xié)同優(yōu)化方法及系統(tǒng)與流程

文檔序號:11323064閱讀:271來源:國知局
本發(fā)明涉及數(shù)據(jù)存儲
技術(shù)領(lǐng)域
:,尤其涉及一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法及系統(tǒng)。
背景技術(shù)
::大數(shù)據(jù)環(huán)境下,高性能、大容量的存儲系統(tǒng)的需求日益突出。大規(guī)模數(shù)據(jù)存儲系統(tǒng)中,傳統(tǒng)關(guān)系型數(shù)據(jù)庫檢索性能較慢,檢索語句較復(fù)雜,已無法滿足大數(shù)據(jù)處理對高性能數(shù)據(jù)檢索的要求。為此,鍵值對(key-value,簡稱kv)數(shù)據(jù)檢索技術(shù)以其高擴展、低延時及高性能等優(yōu)點,被廣泛應(yīng)用到大數(shù)據(jù)應(yīng)用中,存儲系統(tǒng)的高速數(shù)據(jù)檢索,應(yīng)用較為廣泛的key-value存儲系統(tǒng)包括bigtable、rocksdb、leveldb等。kv存儲系統(tǒng)大多采用基于lsm-tree數(shù)據(jù)結(jié)構(gòu)。盡管基于lsm-tree的存儲引擎具有延遲更新和成批順序?qū)懭氪疟P的優(yōu)點,但是需要在后臺進行頻繁的觸發(fā)compaction線程來對kv項執(zhí)行合并排序,同時將sstable(有序數(shù)據(jù)表)不斷的遷移到下層具有更多sstable的層次。因此后臺compaction操作會引起較大的寫放大,這對整個kv存儲系統(tǒng)的性能影響較大,尤其對于寫性能?!,F(xiàn)有針對compaction操作的研究主要含主機端軟件層優(yōu)化及存儲設(shè)備端內(nèi)優(yōu)化兩個方面:一方面,針對于主機端應(yīng)用層的優(yōu)化?,F(xiàn)有的研究主要集中于減少存儲設(shè)備端的io訪問次數(shù)或提高主機端進行compaction操作的并行性。這些研究均可以較好的改善compaction的性能,減小寫放大同時降低了延時,但是卻沒有充分利用存儲設(shè)備端的計算能力。雖減少了存儲設(shè)備端的io訪問次數(shù)或提高了任務(wù)的并行性,但是對于主機端cpu資源的消耗并沒有減少,在一定程度上反而增加;另一方面,基于近數(shù)據(jù)處理(near-dataprocessing,ndp)技術(shù)的存儲設(shè)備端內(nèi)優(yōu)化,直接在存儲設(shè)備端進行compaction操作。在主機端compaction優(yōu)化工作只是部分減少io的操作,但是,io訪問總數(shù)依然很高。利用存儲設(shè)備端的計算力,直接在其內(nèi)部進行compaction操作。這種方法避免了頻繁的io操作。但是,若將原有主機端任務(wù)的所有操作全部遷移到在存儲設(shè)備端內(nèi)進行compaction操作,這對存儲設(shè)備端cpu的計算能力依賴較大,無法發(fā)揮整個系統(tǒng)的最大性能。由此可見,現(xiàn)有的研究方法均未綜合考慮kv存儲系統(tǒng)中主機端和存儲設(shè)備端的性能,未能發(fā)揮出系統(tǒng)最大整體性能。技術(shù)實現(xiàn)要素:基于
背景技術(shù)
:存在的技術(shù)問題,本發(fā)明提出了一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法及系統(tǒng),主機端cpu依然發(fā)揮較高的計算能力,進行大部分合并排序操作,存儲設(shè)備端cpu充分利用計算能力分析元數(shù)據(jù)信息,計算出需要合并的sstable,并根據(jù)本發(fā)明中的任務(wù)分割算法實現(xiàn)任務(wù)的動態(tài)分割。本發(fā)明提出的面向key-value系統(tǒng)的協(xié)同優(yōu)化方法,key-value系統(tǒng)包括主機端與存儲端,所述方法包括以下步驟:s1、主機端接收到讀寫請求后判斷是否需要調(diào)度compaction線程,當判斷結(jié)果為是時,主機端向存儲端發(fā)送compaction調(diào)度請求;s2、存儲端分析compaction調(diào)度請求中的任務(wù)信息,將compaction任務(wù)分割為主機端子任務(wù)信息和存儲端子任務(wù)信息;s3、主機端對主機端子任務(wù)信息進行合并排序操作,得出第一結(jié)果并將第一結(jié)果傳輸至存儲端,存儲端對存儲端子任務(wù)信息進行合并排序操作,并得出第二結(jié)果;s4、存儲端對第一結(jié)果和第二結(jié)果進行合并優(yōu)化操作。優(yōu)選地,步驟s1具體包括:主機端接收讀請求后,根據(jù)讀取功能函數(shù)找到key對應(yīng)的value,判斷該key-value項所在sstable文件的元數(shù)據(jù)信息中的allowed_seeks屬性,當allowed_seeks屬性<=0時,將該sstable文件標記為待執(zhí)行compaction的文件,且標記該sstable文件所在的層待執(zhí)行compaction,并判斷是否需要調(diào)用compaction,若是,調(diào)度compaction線程并向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,所述判斷是否需要調(diào)用compaction具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空;主機端接收寫請求時,key-value項寫入內(nèi)存后,根據(jù)空間判斷函數(shù)判斷此時寫請求在memtable中是否有空間滿足,若memtable已滿或第0層文件個數(shù)大于閾值,判斷是否需要調(diào)度compaction線程,若是,主機端向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,判斷是否需要調(diào)度compaction線程具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空。優(yōu)選地,步驟s2具體包括:存儲端根據(jù)compaction調(diào)度請求信息中的compaction層號和指向該層需要compaction的目標sstable文件分析出compaction的層數(shù)和該sstable文件元數(shù)據(jù),存儲端根據(jù)該層的sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey與下一層所有sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey進行比較,當上述兩層之間key范圍上有重疊時,將下一層中key范圍與目標sstable文件重疊的sstable文件加入compaction調(diào)度請求任務(wù)中,存儲端根據(jù)任務(wù)分割算法將compaction任務(wù)分割為主機端子任務(wù)和存儲端子任務(wù);優(yōu)選地,所述任務(wù)分割算法具體包括:compaction調(diào)度請求到達存儲端后,存儲端確定此次compaction選定的lk層的sstable文件sstk1、sstk2、sstk3……sstkn中的一個文件sstka;確定lk+1層中的sstable文件的key范圍與lk層的sstable文件的key范圍有重疊的所有sstable文件,記為sstv1、sstv2、sstv3……sstvm;存儲端將sstable文件分割為主機端子任務(wù),將sstable文件分割為存儲端子任務(wù);存儲端根據(jù)sstable文件的元數(shù)據(jù)信息中指示的smallest的值y以及sstka文件中的sstka的key范圍[sstka_smallest,sstka_largest]將sstka文件中的[sstka_smallest,y]文件分割為主機端子任務(wù),將sstka文件的剩余部分分割為存儲端子任務(wù);其中,1≤a≤n,v=k+1。優(yōu)選地,步驟s3具體包括:主機端對主機端子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,并對對應(yīng)的sstable文件進行多路合并排序操作,得出第一結(jié)果,且將第一結(jié)果傳輸至存儲端;存儲端對存儲端子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,遍歷對應(yīng)的sstable文件,并進行合并排序操作得出第二結(jié)果;優(yōu)選地,在對compaction層號以及對應(yīng)的sstable文件號進行分析時,根據(jù)compaction層號不同進行相應(yīng)操作,具體包括:當compaction層號=0時,根據(jù)目標compaction的sstable文件在level0層與剩余所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,并從上述key范圍有重疊的sstable文件的key范圍中整合出目標key范圍,并在下一層尋找與目標key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項;當compaction層號?。?時,將根據(jù)目標compaction的sstable文件的key范圍與下一層所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項。優(yōu)選地,步驟s4具體包括:存儲端對第一結(jié)果和第二結(jié)果中最小key值的目標結(jié)果的key-value項迭代加入對應(yīng)的sstable文件中,并更新上述sstable文件的元數(shù)據(jù)信息及日志,若sstable滿,將上述key-value項寫入存儲端并記錄滿的sstable文件的元數(shù)據(jù)信息,再新建sstable表,繼續(xù)迭代加入key-value項,直至上述目標結(jié)果的key-value項迭代完成,再對第一結(jié)果和第二結(jié)果中的另一個結(jié)果的key-value項進行迭代,直至該結(jié)果的key-value項迭代完成,完成對第一結(jié)果和第二結(jié)果的合并優(yōu)化操作。本發(fā)明提出的面向key-value系統(tǒng)的協(xié)同優(yōu)化系統(tǒng),包括:請求判斷模塊,用于判斷主機端接收的讀寫請求是否需要調(diào)度compaction線程,且當判斷結(jié)果為是時,向任務(wù)分割模塊發(fā)送compaction調(diào)度請求;任務(wù)分割模塊,用于分析請求判斷模塊發(fā)送的compaction調(diào)度請求的任務(wù)信息,并將compaction任務(wù)分割為第一子任務(wù)和第二子任務(wù),且將第一子任務(wù)發(fā)送至第一操作模塊、第二子任務(wù)發(fā)送至第二操作模塊;第一操作模塊,用于在接收到任務(wù)分割模塊發(fā)送的第一子任務(wù)后對其進行合并排序操作,并得出第一結(jié)果;第二操作模塊,用于在接收到任務(wù)分割模塊發(fā)送的第二子任務(wù)后對其進行合并排序操作,并得出第二結(jié)果;優(yōu)化操作模塊,用于對第一結(jié)果和第二結(jié)果進行合并優(yōu)化操作。優(yōu)選地,請求判斷模塊具體用于:主機端接收讀請求后,根據(jù)讀取功能函數(shù)找到key對應(yīng)的value,判斷該key-value項所在sstable文件的元數(shù)據(jù)信息中的allowed_seeks屬性,當allowed_seeks屬性<=0時,將該sstable文件標記為待執(zhí)行compaction的文件,且標記該sstable文件所在的層待執(zhí)行compaction,并判斷是否需要調(diào)用compaction,若是,調(diào)度compaction線程并向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,所述判斷是否需要調(diào)用compaction具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空;主機端接收寫請求時,key-value項寫入內(nèi)存后,根據(jù)空間判斷函數(shù)判斷此時寫請求在memtable中是否有空間滿足,若memtable已滿或第0層文件個數(shù)大于閾值,判斷是否需要調(diào)度compaction線程,若是,主機端向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,判斷是否需要調(diào)度compaction線程具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空。優(yōu)選地,任務(wù)分割模塊具體用于:任務(wù)分割模塊根據(jù)compaction調(diào)度請求信息中的compaction層號和指向該層需要compaction的目標sstable文件分析出compaction的層數(shù)和該sstable文件元數(shù)據(jù),再根據(jù)該層的sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey與下一層所有sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey進行比較,當上述兩層之間key范圍上有重疊時,將下一層中key范圍與目標sstable文件重疊的sstable文件加入compaction調(diào)度請求任務(wù)中,任務(wù)分割模塊根據(jù)任務(wù)分割算法將compaction任務(wù)分割為第一子任務(wù)和第二子任務(wù),且將第一子任務(wù)發(fā)送至第一操作模塊、第二子任務(wù)發(fā)送至第二操作模塊;優(yōu)選地,所述任務(wù)分割算法具體包括:compaction調(diào)度請求到達存儲端后,存儲端確定此次compaction選定的lk層的sstable文件sstk1、sstk2、sstk3……sstkn中的一個文件sstka;確定lk+1層中的sstable文件的key范圍與lk層的sstable文件的key范圍有重疊的所有sstable文件,記為sstv1、sstv2、sstv3……sstvm;存儲端將sstable文件分割為主機端子任務(wù),將sstable文件分割為存儲端子任務(wù);存儲端根據(jù)sstable文件的元數(shù)據(jù)信息中指示的smallest的值y以及sstka文件中的sstka的key范圍[sstka_smallest,sstka_largest]將sstka文件中的[sstka_smallest,y]文件分割為主機端子任務(wù),將sstka文件的剩余部分分割為存儲端子任務(wù);其中,1≤a≤n,v=k+1。優(yōu)選地,第一操作模塊具體用于:第一操作模塊在接收到任務(wù)分割模塊發(fā)送的第一子任務(wù)后,對第一子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,并對對應(yīng)的sstable文件進行多路合并排序操作,得出第一結(jié)果;優(yōu)選地,第二操作模塊具體用于:第二操作模塊在接收到任務(wù)分割模塊發(fā)送的第二子任務(wù)后,對第二子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,遍歷對應(yīng)的sstable文件,并進行合并排序操作得出第二結(jié)果;優(yōu)選地,在對compaction層號以及對應(yīng)的sstable文件號進行分析時,根據(jù)compaction層號不同進行相應(yīng)操作,具體包括:當compaction層號=0時,根據(jù)目標compaction的sstable文件在level0層與剩余所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,并從上述key范圍有重疊的sstable文件的key范圍中整合出目標key范圍,并在下一層尋找與目標key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項;當compaction層號!=0時,將根據(jù)目標compaction的sstable文件的key范圍與下一層所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項。優(yōu)選地,優(yōu)化操作模塊具體用于:優(yōu)化操作模塊對第一結(jié)果和第二結(jié)果中最小key值的目標結(jié)果的key-value項迭代加入對應(yīng)的sstable文件中,并更新上述sstable文件的元數(shù)據(jù)信息及日志,若sstable滿,將上述key-value項寫入存儲端并記錄滿的sstable文件的元數(shù)據(jù)信息,再新建sstable表,繼續(xù)迭代加入key-value項,直至上述目標結(jié)果的key-value項迭代完成,再對第一結(jié)果和第二結(jié)果中的另一個結(jié)果的key-value項進行迭代,直至該結(jié)果的key-value項迭代完成,完成對第一結(jié)果和第二結(jié)果的合并優(yōu)化操作。本發(fā)明基于近數(shù)據(jù)處理的key-value存儲技術(shù),在靠近數(shù)據(jù)源的存儲設(shè)備端進行計算操作,充分利用了主機端和存儲設(shè)備端的計算能力,同時上述操作方法實現(xiàn)了compaction任務(wù)的動態(tài)分割并與主機端cpu協(xié)同的計算模式;對compaction任務(wù)的系統(tǒng)級并行性進行了挖掘并充分利用了存儲設(shè)備端的計算能力、降低了compaction的延時,增加寫入吞吐量,提高了系統(tǒng)性能。本發(fā)明通過主機端與存儲設(shè)備端的協(xié)同優(yōu)化,實現(xiàn)了存儲上設(shè)備端與主機端之間的數(shù)據(jù)傳遞和語義交互;進一步地,本發(fā)明提出的主機端與存儲設(shè)備端協(xié)同優(yōu)化方法中,對compaction任務(wù)的分割操作將讀寫io訪問次數(shù)減少為原來的一半,大大地降低了讀寫的總延時;更進一步地,對compaction任務(wù)的分割操作減少了cpu資源的占用率,分擔了cpu的計算時間,極大的減少了compaction的所需時間,有利于提高compaction任務(wù)處理的效率。附圖說明圖1為一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法的步驟示意圖;圖2為一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法中主機端流程示意圖;圖3為一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法中存儲端流程示意圖;圖4為一種面向key-value系統(tǒng)的協(xié)同優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖。具體實施方式如圖1-圖4所示,圖1-圖4為本發(fā)明提出的一種面向key-value系統(tǒng)的協(xié)同優(yōu)化方法及系統(tǒng)。參照圖1-圖3,本發(fā)明提出的面向key-value系統(tǒng)的協(xié)同優(yōu)化方法,key-value系統(tǒng)包括主機端與存儲端,所述包括以下步驟:s1、主機端接收到讀寫請求后判斷是否需要調(diào)度compaction線程,當判斷結(jié)果為是時,主機端向存儲端發(fā)送compaction調(diào)度請求;在本實施例中,主機端接收讀請求后,根據(jù)讀取功能函數(shù)找到key對應(yīng)的value,判斷該key-value項所在sstable文件的元數(shù)據(jù)信息中的allowed_seeks屬性,當allowed_seeks屬性<=0時,將該sstable文件標記為待執(zhí)行compaction的文件,且標記該sstable文件所在的層待執(zhí)行compaction,并判斷是否需要調(diào)用compaction,若是,調(diào)度compaction線程并向存儲端發(fā)送compaction調(diào)度請求,之后阻塞,等待存儲端進程的喚醒;優(yōu)選地,所述判斷是否需要調(diào)用compaction具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空。主機端接收寫請求時,key-value項寫入內(nèi)存后,根據(jù)空間判斷函數(shù)判斷此時寫請求在memtable中是否有空間滿足,若memtable已滿或第0層文件個數(shù)大于閾值,判斷是否需要調(diào)度compaction線程,若是,主機端向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,判斷是否需要調(diào)度compaction線程具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空。具體地,主機端對上層應(yīng)用的讀寫請求提供統(tǒng)一的put、get接口,保證讀寫請求讀取的便利性和準確性。s2、存儲端分析compaction調(diào)度請求中的任務(wù)信息,將compaction調(diào)度請求分割為主機端子任務(wù)信息和存儲端子任務(wù)信息;具體地:存儲端進程進入等待狀態(tài),等待主機端進程發(fā)送compaction調(diào)度請求喚醒存儲端進程,當存儲端接收到主機端發(fā)送的compaction調(diào)度請求后,存儲端首先分析此次compaction層號和指向該層需要compaction的目標sstable文件,分析出compaction的層數(shù)和該sstable文件元數(shù)據(jù),存儲端根據(jù)該層的sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey與下一層所有sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey進行比較,查找下一層sstable文件中有key范圍重合的sstable文件,當上述兩層之間key范圍上有重疊時,將下一層的sstable文件加入compaction調(diào)度請求任務(wù)中,存儲端根據(jù)任務(wù)分割算法將compaction調(diào)度請求分割為主機端子任務(wù)和存儲端子任務(wù);優(yōu)選地,所述任務(wù)分割算法具體包括:compaction調(diào)度請求到達存儲端后,存儲端確定此次compaction選定的lk層的sstable文件sstk1、sstk2、sstk3……sstkn中的一個文件sstka;上述文件sstk1、sstk2、sstk3……sstkn為所述lk層中的的sstable文件;確定lk+1層中的sstable文件的key范圍與lk層的sstable文件的key范圍有重疊的所有sstable文件,記為sstv1、sstv2、sstv3……sstvm;存儲端將sstable文件分割為主機端子任務(wù),將sstable文件分割為存儲端子任務(wù);存儲端根據(jù)sstable文件的元數(shù)據(jù)信息中指示的smallest的值y以及sstka文件中的sstka的key范圍[sstka_smallest,sstka_largest]將sstka文件中的[sstka_smallest,y]文件分割為主機端子任務(wù),將sstka文件的剩余部分分割為存儲端子任務(wù);其中,1≤a≤n,v=k+1。通過對任務(wù)分割算法進行詳細分析可知,該算法對lk+1層中與lk層的sstable文件的key范圍有重疊的所有sstable文件進行分割,只對lk層的sst0a文件進行分割;主機端和存儲端同時對compaction調(diào)度請求進行處理,不僅充分利用了主機端和存儲端的計算力,提高了任務(wù)處理的效率,而且實現(xiàn)了主機端與存儲端之間的數(shù)據(jù)傳遞和語義交互,同時,存儲端動態(tài)地分割compaction調(diào)度任務(wù),實現(xiàn)了compaction任務(wù)的并行性。s3、主機端對主機端子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,并對對應(yīng)的sstable文件進行多路合并排序操作,得出第一結(jié)果,且將第一結(jié)果傳輸至存儲端,存儲端對存儲端子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,遍歷對應(yīng)的sstable文件,并進行合并排序操作得出第二結(jié)果;在步驟s3中,主機端和存儲端分別對主機端子任務(wù)和存儲端子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,在上述操作過程中,需要根據(jù)compaction層號的不同采取不同的處理方法,因為leveldb等kv存儲系統(tǒng)的底層sstable文件內(nèi)部有序、之間有序(除level0),level0層的sstable文件內(nèi)部同樣有序,但出于對寫性能的考慮,之間可能無序存在重寫,因此需要根據(jù)compaction層號的不同采取不同的處理方法,具體分為兩類:當compaction層號=0時,根據(jù)目標compaction的sstable文件在level0層與剩余所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,并從上述key范圍有重疊的sstable文件的key范圍中整合出目標key范圍,并在下一層尋找與目標key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項;當compaction層號?。?時,將根據(jù)目標compaction的sstable文件的key范圍與下一層所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項。s4、存儲端對第一結(jié)果和第二結(jié)果中最小key值的目標結(jié)果的key-value項迭代加入對應(yīng)的sstable文件中,并更新上述sstable文件的元數(shù)據(jù)信息及日志,若sstable滿,將上述key-value項寫入存儲端并記錄滿的sstable文件的元數(shù)據(jù)信息,再新建sstable表,繼續(xù)迭代加入key-value項,直至上述目標結(jié)果的key-value項迭代完成,再對第一結(jié)果和第二結(jié)果中的另一個結(jié)果的key-value項進行迭代,直至該結(jié)果的key-value項迭代完成,完成對第一結(jié)果和第二結(jié)果的合并優(yōu)化操作。同時,存儲端進行此次compaction的后續(xù)操作,包括:元數(shù)據(jù)更新、過期文件刪除、清單文件及日志文件的更新操作,進一步優(yōu)化系統(tǒng)的性能。本實施方式基于近數(shù)據(jù)處理的key-value存儲技術(shù),在靠近數(shù)據(jù)源的存儲設(shè)備端進行計算操作,充分利用了主機端和存儲設(shè)備端的計算能力,同時上述操作方法實現(xiàn)了compaction任務(wù)的動態(tài)分割并與主機端cpu協(xié)同的計算模式;對compaction任務(wù)的系統(tǒng)級并行性進行了挖掘并充分利用了存儲設(shè)備端的計算能力、降低了compaction的延時,增加寫入吞吐量,提高了系統(tǒng)性能。參照圖4,圖4為本發(fā)明提出的面向key-value系統(tǒng)的協(xié)同優(yōu)化系統(tǒng),包括:請求判斷模塊,用于判斷主機端接收的讀寫請求是否需要調(diào)度compaction線程,且當判斷結(jié)果為是時,向任務(wù)分割模塊發(fā)送compaction調(diào)度請求;在本實施方式中,主機端接收讀請求后,根據(jù)讀取功能函數(shù)找到key對應(yīng)的value,判斷該key-value項所在sstable文件的元數(shù)據(jù)信息中的allowed_seeks屬性,當allowed_seeks屬性<=0時,將該sstable文件標記為待執(zhí)行compaction的文件,且標記該sstable文件所在的層待執(zhí)行compaction,并判斷是否需要調(diào)用compaction,若是,調(diào)度compaction線程并向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,所述判斷是否需要調(diào)用compaction具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空;主機端接收寫請求時,key-value項寫入內(nèi)存后,根據(jù)空間判斷函數(shù)判斷此時寫請求在memtable中是否有空間滿足,若memtable已滿或第0層文件個數(shù)大于閾值,判斷是否需要調(diào)度compaction線程,若是,主機端向存儲端發(fā)送compaction調(diào)度請求;優(yōu)選地,判斷是否需要調(diào)度compaction線程具體包括:檢測當前key-value系統(tǒng)是否同時滿足以下條件:無compaction任務(wù)調(diào)度或正在執(zhí)行、無等待的compaction任務(wù)、無錯誤狀態(tài)返回、無immutablememtable、無手動compaction、上次compaction返回狀態(tài)正確、當前版本的compact_score大于等于1或需要compaction的文件不為空。任務(wù)分割模塊,用于分析請求判斷模塊發(fā)送的compaction調(diào)度請求信息,并將compaction任務(wù)分割為第一子任務(wù)和第二子任務(wù),且將第一子任務(wù)發(fā)送至第一操作模塊、第二子任務(wù)發(fā)送至第二操作模塊;任務(wù)分割模塊根據(jù)compaction調(diào)度請求信息中的compaction層號和指向該層需要compaction的sstable文件分析出compaction的層數(shù)和該sstable文件元數(shù)據(jù),再根據(jù)該層的sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey與下一層所有sstable文件元數(shù)據(jù)信息指示的smallestkey和largestkey進行比較,當上述兩層之間key范圍上有重疊時,將下一層的sstable文件加入compaction調(diào)度請求任務(wù)中,任務(wù)分割模塊根據(jù)任務(wù)分割算法將compaction任務(wù)分割為第一子任務(wù)和第二子任務(wù),且將第一子任務(wù)發(fā)送至第一操作模塊、第二子任務(wù)發(fā)送至第二操作模塊;優(yōu)選地,所述任務(wù)分割算法具體包括:compaction調(diào)度請求到達存儲端后,存儲端確定此次compaction選定的lk層的sstable文件sstk1、sstk2、sstk3……sstkn中的一個文件sstka;確定lk+1層中的sstable文件的key范圍與lk層的sstable文件的key范圍有重疊的所有sstable文件,記為sstv1、sstv2、sstv3……sstvm;任務(wù)分割模塊將sstable文件分割為第一子任務(wù),將sstable文件分割為第二子任務(wù);任務(wù)分割模塊根據(jù)sstable文件的元數(shù)據(jù)信息中指示的smallest的值y以及sstka文件中的sstka的key范圍[sstka_smallest,sstka_largest]將sstka文件中的[sstka_smallest,y]文件分割為第一子任務(wù),將sstka文件的剩余部分分割為第二子任務(wù);其中,1≤a≤n,v=k+1。第一操作模塊在接收到任務(wù)分割模塊發(fā)送的第一子任務(wù)后,對第一子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,并對其進行多路合并排序操作,得出第一結(jié)果;第二操作模塊在接收到任務(wù)分割模塊發(fā)送的第二子任務(wù)后,對第二子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,遍歷對應(yīng)的sstable文件,并進行合并排序操作得出第二結(jié)果;第一操作模塊和第二操作模塊在接收到第一子任務(wù)和第二子任務(wù)后,對子任務(wù)信息中的compaction層號以及對應(yīng)的sstable文件號進行分析,在此分析過程中,需要根據(jù)compaction層號的不同采取不同的分析方法,因為leveldb等kv存儲系統(tǒng)的底層sstable文件內(nèi)部有序、之間有序(除level0),level0層的sstable文件內(nèi)部同樣有序,但出于對寫性能的考慮,之間可能無序存在重寫,因此需要根據(jù)compaction層號的不同采取不同的處理方法,具體包括兩種模式:當compaction層號=0時,根據(jù)目標compaction的sstable文件在level0層與剩余所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,并從上述key范圍有重疊的sstable文件的key范圍中整合出目標key范圍,并在下一層尋找與目標key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項;當compaction層號?。?時,將根據(jù)目標compaction的sstable文件的key范圍與下一層所有的sstable文件的key范圍進行比較,尋找與目標compaction的sstable文件的key范圍有重疊的sstable文件,對上述key范圍有重疊的sstable文件迭代的進行合并排序操作生成新的有序的sstable文件并將其寫入下一層,并刪除具有刪除標志的key-value項,且更新key值相同且序列號較新key值小的key-value項。優(yōu)化操作模塊對第一結(jié)果和第二結(jié)果中最小key值的目標結(jié)果的key-value項迭代加入對應(yīng)的sstable文件中,并更新上述sstable文件的元數(shù)據(jù)信息及日志,若sstable滿,將上述key-value項寫入存儲端并記錄滿的sstable文件的元數(shù)據(jù)信息,再新建sstable表,繼續(xù)迭代加入key-value項,直至上述目標結(jié)果的key-value項迭代完成,再對第一結(jié)果和第二結(jié)果中的另一個結(jié)果的key-value項進行迭代,直至該結(jié)果的key-value項迭代完成,完成對第一結(jié)果和第二結(jié)果的合并優(yōu)化操作。需要說明的是,本實施方式還包括語義交互模塊,語義交互模塊的作用為在第一操作模塊與第二操作模塊之間傳輸語義信息,保證二者之間協(xié)同工作;語義交互模塊具體用于:第一操作模塊在觸發(fā)compaction線程之后,會循環(huán)的接收語義信息,判斷任務(wù)分割模塊是否將主機端子任務(wù)信息返回;如果返回,則主機端開始完成第一子任務(wù)。存儲端在發(fā)送主機端子任務(wù)信息之后,立即開始任務(wù)分割模塊產(chǎn)生的第二子任務(wù);第二操作模塊如果完成操作,置完成標志位,然后進入等待狀態(tài)。若第一操作模塊完成,需要循環(huán)判斷第二操作模塊是否完成。如果是,喚醒正在等待中的第二操作模塊進程。然后將新產(chǎn)生的子任務(wù)結(jié)果及新產(chǎn)生的sstable的相關(guān)元數(shù)據(jù)信息發(fā)送到存儲端。當語義交互模塊工作進程完成后,系統(tǒng)自動進入優(yōu)化操作模塊啟動工作。本實施方式通過主機端與存儲設(shè)備端的協(xié)同優(yōu)化,實現(xiàn)了存儲上設(shè)備端與主機端之間的數(shù)據(jù)傳遞和語義交互;進一步地,本發(fā)明提出的主機端與存儲設(shè)備端協(xié)同優(yōu)化方法中,對compaction任務(wù)的分割操作將讀寫io訪問次數(shù)減少為原來的一半,大大地降低了讀寫的總延時;更進一步地,對compaction任務(wù)的分割操作減少了cpu資源的占用率,分擔了cpu的計算時間,極大的減少了compaction的所需時間,有利于提高compaction任務(wù)處理的效率。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
:的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1