基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng),包括:將物理存儲節(jié)點劃分為多個互不相交的有限集合;將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id;可見,在本實施例中,通過這種樹形存儲結(jié)構(gòu),可以實現(xiàn)數(shù)據(jù)的分布式存儲,解決分布式存儲系統(tǒng)的數(shù)據(jù)均衡問題及可擴展性問題,有效地實現(xiàn)數(shù)據(jù)的分布式存儲。
【專利說明】
基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及分布式存儲領(lǐng)域,更具體地說,涉及一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)及信息處理技術(shù)的不斷發(fā)展,個人數(shù)據(jù)和企業(yè)數(shù)據(jù)的產(chǎn)生量呈現(xiàn)爆炸性膨脹的趨勢,IT系統(tǒng)正面臨著數(shù)據(jù)存儲成本高、管理困難、可靠性低的問題,傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù),存儲服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規(guī)模存儲應(yīng)用的需要。分布式網(wǎng)絡(luò)存儲系統(tǒng)采用可擴展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔存儲負荷,利用位置服務(wù)器定位存儲信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴展。分布式數(shù)據(jù)存儲得到了廣泛的應(yīng)用。然而,目前存在的幾種分布式存儲方式并不能夠完美地滿足分布系統(tǒng)的需求。對于一個分布式系統(tǒng),核心在于其分布式算法,它直接影響系統(tǒng)的可用性、健壯性和擴展性,不同的分布式存儲系統(tǒng)有不同的存儲策略和方法。目前,已經(jīng)存在很多分布式系統(tǒng)方案及其應(yīng)用系統(tǒng)。主流的分布式存儲算法有數(shù)據(jù)分割、哈希分布和一致性哈希分布算法等,它們各有優(yōu)缺點,且現(xiàn)有的幾種分布式存儲方式并不能夠完美地滿足分布系統(tǒng)的需求,如數(shù)據(jù)分割無法解決數(shù)據(jù)平衡問題,哈希分布無法解決系統(tǒng)擴展問題。
[0003]因此,如何有效地實現(xiàn)數(shù)據(jù)的分布式存儲,是本領(lǐng)域技術(shù)人員需要解決的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng),以有效地實現(xiàn)數(shù)據(jù)的分布式存儲。
[0005]為實現(xiàn)上述目的,本發(fā)明實施例提供了如下技術(shù)方案:
[0006]—種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法,包括:
[0007]將物理存儲節(jié)點劃分為多個互不相交的有限集合;
[0008]將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;
[0009]確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id。
[0010]其中,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id之后,還包括:
[0011 ]保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。
[0012]其中,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括:
[0013]若檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點;
[0014]根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0015]其中,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點,包括:
[0016]將所述第一目標葉子節(jié)點中存儲的數(shù)據(jù)分布存儲在新添加的葉子節(jié)點上。
[0017]其中,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括:
[0018]若檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點;
[0019]根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0020]其中,將所述第二目標葉子節(jié)點進行縮容包括:
[0021 ]將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)進行備份;
[0022]將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)存儲至相關(guān)聯(lián)的葉子節(jié)點中,并從所述二位數(shù)組刪除所述第二目標葉子節(jié)點存儲的位置id。
[0023]—種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建系統(tǒng),包括:
[0024]劃分模塊,用于將物理存儲節(jié)點劃分為多個互不相交的有限集合;
[0025]構(gòu)建模塊,用于將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;
[0026]位置id確定模塊,用于確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id。
[0027]其中,還包括:
[0028]二位數(shù)組生成模塊,用于保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。
[0029]其中,還包括:
[0030]第一檢測模塊,用于檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,觸發(fā)節(jié)點分裂模塊;
[0031 ]所述節(jié)點分裂模塊,用于將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點;
[0032]第一更新模塊,用于根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0033]其中,還包括:
[0034]第二檢測模塊,用于檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,觸發(fā)節(jié)點縮容模塊;
[0035]所述節(jié)點縮容模塊,用于將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點;
[0036]第二更新模塊,用于根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0037]通過以上方案可知,本發(fā)明實施例提供的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng),包括:將物理存儲節(jié)點劃分為多個互不相交的有限集合;將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id;可見,在本實施例中,通過這種樹形存儲結(jié)構(gòu),可以實現(xiàn)數(shù)據(jù)的分布式存儲,解決分布式存儲系統(tǒng)的數(shù)據(jù)均衡問題及可擴展性問題,有效地實現(xiàn)數(shù)據(jù)的分布式存儲。
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為本發(fā)明實施例公開的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法流程示意圖;
[0040]圖2(a)為本發(fā)明實施例公開的一致性樹分布不意圖;
[0041]圖2(b)為本發(fā)明實施例公開的一致性樹分布式擴展示意圖;
[0042]圖3為本發(fā)明實施例公開的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建系統(tǒng)結(jié)構(gòu)示意圖。
【具體實施方式】
[0043]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0044]本發(fā)明實施例公開了一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng),以有效地實現(xiàn)數(shù)據(jù)的分布式存儲。
[0045]參見圖1,本發(fā)明實施例提供的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法,包括:
[0046]S101、將物理存儲節(jié)點劃分為多個互不相交的有限集合;
[0047]S102、將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;
[0048]具體的,本方案將存儲節(jié)點組織為樹結(jié)構(gòu)的邏輯結(jié)構(gòu)形式,其一致性在于樹結(jié)構(gòu)中的各個節(jié)點的一致性。
[0049]具體的,在本實施例中一致性樹分布模型用一顆多叉樹表示,本質(zhì)上來說是以分支關(guān)系定義的層次結(jié)構(gòu),對于某一個特定的樹形模型,在每一個樹形層次上,樹形節(jié)點被劃分為多個互不相交的有限集合Tl,Τ2,...Τη,其中,每個集合本身又可以看作一顆樹,依次循環(huán),可以將所有的存儲節(jié)點劃分到不同的層次結(jié)構(gòu)的不同數(shù)據(jù)組中。在一致性樹分布結(jié)構(gòu)中,每個葉子節(jié)點對應(yīng)實際的物理存儲節(jié)點,每個內(nèi)部節(jié)點為葉子節(jié)點的分組集合。
[0050]S103、確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id。
[0051]其中,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id之后,還包括:保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。
[0052]具體的,在本實施例中對于每個節(jié)點,都可以用唯一的數(shù)字序列進行定義。從而該數(shù)字序列也就唯一的確定了該樹節(jié)點在樹形結(jié)構(gòu)中的位置id,當所有的葉子節(jié)點的編號確定時,該樹的邏輯結(jié)構(gòu)也就可以確定了。二者之間形成單射關(guān)系,所以,可以簡單的把這樣的樹抽象為一個二位數(shù)組。
[0053]具體的,在一致性樹分布結(jié)構(gòu)中,每個葉子節(jié)點對應(yīng)實際的物理存儲節(jié)點,如圖2(a)所示為一個包含6個節(jié)點的存儲集群邏輯圖。對于每個節(jié)點,用唯一的數(shù)字序列定義,它是由該節(jié)點在樹結(jié)構(gòu)的位置決定,從左到右依次代表從根節(jié)點到所經(jīng)過的路徑號(子樹從左到右編號0.1.2…),圖2(a)中B節(jié)點的編號{I,0},表示從根節(jié)點到B節(jié)點需要經(jīng)過路徑O和路徑I。該數(shù)字序列也就唯一確定了 B節(jié)點在樹中的位置id。當進行數(shù)據(jù)存儲操作時,根據(jù)樹的結(jié)構(gòu)將數(shù)據(jù)的位置i d映射到對應(yīng)的葉子節(jié)點上。
[0054]對于任何一個節(jié)點node,對其進行如下屬性定義:Degree表示節(jié)點的度,代表子節(jié)點的數(shù)目;Children表示子節(jié)點列表,葉子節(jié)點為空;Isleaf表示是否為葉子節(jié)點。從而一個節(jié)點可以表不為:node {Degree ,Children,Isleaf}。
[0055]對于存到分布式存儲的數(shù)據(jù)data,對其進行如下屬性的定義:Key表示數(shù)據(jù)的唯一索引id; Value表示數(shù)據(jù)的存儲內(nèi)容;從而一條數(shù)據(jù)可以表示為:data {Key,Value}。
[0056]有了樹和數(shù)據(jù)的結(jié)構(gòu)表示,就可以對其進行--映射。Hash(key)表示將key哈希映射到O?232,即將key值映射為一個整型數(shù)字;Map(id,tree)表示將某id的數(shù)據(jù)映射到tree樹對應(yīng)的存儲節(jié)點,id由Hash(key)返回。對于一個完整的數(shù)據(jù)映射過程可以表示為:Map(Hash(key),tree)。
[0057]基于上述技術(shù)方案,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括:
[0058]SI 1、若檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點;
[0059]其中,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點,包括:
[0060]將所述第一目標葉子節(jié)點中存儲的數(shù)據(jù)分布存儲在新添加的葉子節(jié)點上。
[0061]S12、根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0062]具體的,本方案的擴展性實現(xiàn)方式以節(jié)點分裂的形式進行。參見圖2(b),當A節(jié)點的容量將要不足或者1壓力較大時,可以將A節(jié)點分裂為多個子節(jié)點,將A中的數(shù)據(jù)分布在各個子節(jié)點上存儲從而降低該服務(wù)器的壓力。節(jié)點分裂時將被分裂的節(jié)點數(shù)據(jù)拷貝到新增節(jié)點,數(shù)據(jù)拷貝完成后,更新樹形結(jié)構(gòu)的二維數(shù)組,完成系統(tǒng)擴展操作。
[0063]基于上述技術(shù)方案,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括:
[0064]S21、若檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點;
[0065]其中,將所述第二目標葉子節(jié)點進行縮容包括:
[0066]將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)進行備份;
[0067]將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)存儲至相關(guān)聯(lián)的葉子節(jié)點中,并從所述二位數(shù)組刪除所述第二目標葉子節(jié)點存儲的位置id。
[0068]S22、根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0069]具體的,本方案的縮容方式采用和擴展方式相反的方法進行,以圖2(b)為例,釋放如時,首先將A2的數(shù)據(jù)備份,復(fù)制到A1;然后將A替換成A1;將々1的數(shù)字序列{O,0,0}改為A的數(shù)字序列{0,0};最后從樹的二位數(shù)組中刪除如的對應(yīng)項。從而實現(xiàn)釋放如物理節(jié)點,該操作影響的數(shù)據(jù)僅僅是A2中的數(shù)據(jù),對其余節(jié)點沒有影響。
[0070]具體的,本實施例中的一致性樹分布的擴展采用節(jié)點分裂的方式進行,這也是一致性樹的顯著特點。當一個葉子節(jié)點的容量不足或者1壓力較大時,可以將該節(jié)點分裂為多個節(jié)點以降低單個存儲服務(wù)器的壓力。該擴展方法影響的數(shù)據(jù)范圍僅僅是被分裂的節(jié)點數(shù)據(jù),其余節(jié)點無任何影響,擴展后各節(jié)點仍然是等價的。一致性樹分布的縮容方式和擴展方式完全相反,在存儲的數(shù)據(jù)被刪除或者移動到其他位置時,或者存儲能力遠大于需求時,可以對其進行縮容來釋放空閑節(jié)點。
[0071]本方案依據(jù)一致性樹的分層分組結(jié)構(gòu),將所有的存儲節(jié)點分布在不同層次的組里,數(shù)據(jù)按照不同層次的定位算法定位到不同的數(shù)據(jù)組中,從而完成數(shù)據(jù)和組的映射過程。而分層分組的結(jié)構(gòu)可以用樹形結(jié)構(gòu)完美表示,從而形成一致性樹分布式存儲結(jié)構(gòu)。
[0072]本方案實現(xiàn)數(shù)據(jù)的分布式存儲,實現(xiàn)數(shù)據(jù)索引與存儲位置的映射,既有數(shù)據(jù)分割算法的簡單性,又有哈希算法的平衡性,同時具有一致性哈希算法的易擴展的優(yōu)勢。并且本方案借助樹形結(jié)構(gòu)的特征,解決分布式存儲系統(tǒng)的數(shù)據(jù)均衡問題、可擴展性問題,在進行存儲節(jié)點的擴展和縮容時,能夠?qū)崿F(xiàn)對其余存儲節(jié)點的影響最小化。
[0073]下面對本發(fā)明實施例提供的構(gòu)建系統(tǒng)進行介紹,下文描述的構(gòu)建系統(tǒng)與上文描述的構(gòu)建方法可以相互參照。
[0074]參見圖3,本發(fā)明實施例提供的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建系統(tǒng),包括:
[0075]劃分模塊100,用于將物理存儲節(jié)點劃分為多個互不相交的有限集合;
[0076]構(gòu)建模塊200,用于將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;
[0077]位置id確定模塊300,用于確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置
ido
[0078]基于上述技術(shù)方案,本方案還包括:
[0079]二位數(shù)組生成模塊,用于保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。
[0080]基于上述技術(shù)方案,本方案還包括:
[0081 ]第一檢測模塊,用于檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,觸發(fā)節(jié)點分裂模塊;
[0082]所述節(jié)點分裂模塊,用于將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點;
[0083]第一更新模塊,用于根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0084]基于上述技術(shù)方案,本方案還包括:
[0085]第二檢測模塊,用于檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,觸發(fā)節(jié)點縮容模塊;
[0086]所述節(jié)點縮容模塊,用于將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點;
[0087]第二更新模塊,用于根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
[0088]本發(fā)明實施例提供的一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法及系統(tǒng),包括:將物理存儲節(jié)點劃分為多個互不相交的有限集合;將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合;確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id;可見,在本實施例中,通過這種樹形存儲結(jié)構(gòu),可以實現(xiàn)數(shù)據(jù)的分布式存儲,解決分布式存儲系統(tǒng)的數(shù)據(jù)均衡問題及可擴展性問題,有效地實現(xiàn)數(shù)據(jù)的分布式存儲,且采用一致性樹結(jié)構(gòu)對分布式存儲結(jié)構(gòu)進行配置,相比傳統(tǒng)的分布式方案,該方法能夠有效提高可靠性,可用性和擴展性,同時具有實現(xiàn)簡單的優(yōu)點。
[0089]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
[0090]對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【主權(quán)項】
1.一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建方法,其特征在于,包括: 將物理存儲節(jié)點劃分為多個互不相交的有限集合; 將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合; 確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id。2.根據(jù)權(quán)利要求1所述的構(gòu)建方法,其特征在于,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id之后,還包括: 保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。3.根據(jù)權(quán)利要求2所述的構(gòu)建方法,其特征在于,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括: 若檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點; 根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。4.根據(jù)權(quán)利要求3所述的構(gòu)建方法,其特征在于,將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點,包括: 將所述第一目標葉子節(jié)點中存儲的數(shù)據(jù)分布存儲在新添加的葉子節(jié)點上。5.根據(jù)權(quán)利要求2所述的構(gòu)建方法,其特征在于,確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置標志id之后,還包括: 若檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點; 根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。6.根據(jù)權(quán)利要求5所述的構(gòu)建方法,其特征在于,將所述第二目標葉子節(jié)點進行縮容包括: 將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)進行備份; 將所述第二目標葉子節(jié)點存儲的數(shù)據(jù)存儲至相關(guān)聯(lián)的葉子節(jié)點中,并從所述二位數(shù)組刪除所述第二目標葉子節(jié)點存儲的位置id。7.一種基于一致性樹的分布式存儲結(jié)構(gòu)的構(gòu)建系統(tǒng),其特征在于,包括: 劃分模塊,用于將物理存儲節(jié)點劃分為多個互不相交的有限集合; 構(gòu)建模塊,用于將每個集合中的節(jié)點呈樹形分布,構(gòu)建一致性樹的分布式存儲結(jié)構(gòu);其中,每個集合中的物理存儲節(jié)點為葉子節(jié)點,每個結(jié)合中的內(nèi)部節(jié)點為對應(yīng)的葉子節(jié)點的分組集合; 位置id確定模塊,用于確定所述分布式存儲結(jié)構(gòu)中每個物理存儲節(jié)點的位置id。8.根據(jù)權(quán)利要求7所述的構(gòu)建系統(tǒng),其特征在于,還包括: 二位數(shù)組生成模塊,用于保存每個物理存儲節(jié)點對應(yīng)的位置id,并生成二位數(shù)組。9.根據(jù)權(quán)利要求8所述的構(gòu)建系統(tǒng),其特征在于,還包括: 第一檢測模塊,用于檢測到第一目標葉子節(jié)點的容量不足或者1壓力較大時,觸發(fā)節(jié)點分裂模塊; 所述節(jié)點分裂模塊,用于將所述目標葉子節(jié)點分裂為預(yù)定數(shù)量個節(jié)點; 第一更新模塊,用于根據(jù)所述第一目標葉子節(jié)點的位置id確定分裂后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。10.根據(jù)權(quán)利要求8所述的構(gòu)建系統(tǒng),其特征在于,還包括: 第二檢測模塊,用于檢測到第二目標葉子節(jié)點存儲的數(shù)據(jù)被刪除,或者移動到其他位置時,或者存儲能力遠大于需求時,觸發(fā)節(jié)點縮容模塊; 所述節(jié)點縮容模塊,用于將所述第二目標葉子節(jié)點進行縮容,釋放空閑節(jié)點; 第二更新模塊,用于根據(jù)所述第二目標葉子節(jié)點的位置id確定縮容后生成的葉子節(jié)點的位置id,并更新至所述二位數(shù)組。
【文檔編號】H04L29/08GK105959419SQ201610561384
【公開日】2016年9月21日
【申請日】2016年7月15日
【發(fā)明人】潘建峰, 劉兆博
【申請人】浪潮(北京)電子信息產(chǎn)業(yè)有限公司