動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息存儲領(lǐng)域,特別涉及一種動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法、裝置和 系統(tǒng)。
【背景技術(shù)】
[0002] 目前,對象存儲中的元數(shù)據(jù)存儲越來越多的采用容錯性和可擴(kuò)展性較好的虛擬一 致性哈希算法,但是虛擬一致性哈希算法在元數(shù)據(jù)存儲達(dá)到一定負(fù)載后,容易因為服務(wù)節(jié) 點承載的哈希環(huán)節(jié)點上,熱點數(shù)據(jù)分布不均勻、訪問熱度不均勻而造成數(shù)據(jù)訪問傾斜問題, 造成大量數(shù)據(jù)訪問集中到某些服務(wù)節(jié)點,形成瓶頸。
[0003] 目前,元數(shù)據(jù)服務(wù)節(jié)點(MetaData Node,簡稱:MDN)權(quán)重只在系統(tǒng)初始化時計算, 哈希環(huán)節(jié)點(HASH Ring Node,簡稱:HRN)只在系統(tǒng)初始化時分配,在初始分配后不再調(diào)整。 若熱點元數(shù)據(jù)集中在某些MDN上的HRN時,系統(tǒng)無法實時調(diào)整HRN至空閑MDN,減輕繁忙MDN 負(fù)載。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實施例提供一種動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法、裝置和系統(tǒng)。通過探測元 數(shù)據(jù)服務(wù)器性能,動態(tài)調(diào)節(jié)元數(shù)據(jù)服務(wù)節(jié)點所承載的權(quán)重,從而可動態(tài)調(diào)節(jié)元數(shù)據(jù)服務(wù)節(jié) 點承載的哈希環(huán)節(jié)點數(shù),實現(xiàn)元數(shù)據(jù)存儲和訪問的自動負(fù)載均衡。
[0005] 根據(jù)本發(fā)明的一個方面,提供一種動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法,包括:
[0006] 以預(yù)定的時間間隔,向各元數(shù)據(jù)服務(wù)節(jié)點MDNi發(fā)送探測請求;其中1彡i彡η,η 為元數(shù)據(jù)服務(wù)節(jié)點的個數(shù);
[0007] 將各元數(shù)據(jù)服務(wù)節(jié)點MDNi當(dāng)前的反應(yīng)時延記錄為LSi' (t);
[0008] 根據(jù)LSi '⑴計算MDNi的平均時延LSi⑴;
[0009] 根據(jù)平均時延LSi⑴計算MDNi的哈希環(huán)權(quán)重Wi⑴;
[0010] 利用哈希環(huán)權(quán)重Wi⑴計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi⑴;
[0011] 根據(jù)hi (t)和hi (t-ι)的差,對MDNi上承載的哈希環(huán)節(jié)點數(shù)進(jìn)行動態(tài)調(diào)節(jié)。
[0012] 在一個實施例中,根據(jù)hi (t)和hi (t-Ι)的差,對MDNi上承載的哈希環(huán)節(jié)點數(shù)進(jìn) 行動態(tài)調(diào)節(jié)的步驟包括:
[0013] 判斷 hi(t)是否大于 hi(t-l);
[0014] 若hi (t)大于hi (t-1),則將MDNi上承載的哈希環(huán)節(jié)點數(shù)增加 a,其中a為 hi(t) -hi(t_l)〇
[0015] 在一個實施例中,若hi (t)小于hi (t-1),則將MDNi上承載的哈希環(huán)節(jié)點數(shù)減小 b,其中 b 為 hi (t-1) -hi ⑴。
[0016] 在一個實施例中,利用哈希環(huán)權(quán)重Wi (t)計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (t) 的步驟包括:
[0017] 利用公式 j-r
[0018]
i=l
[0019] 計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (t),其中H為預(yù)定的虛擬哈希環(huán)節(jié)點數(shù)。
[0020] 在一個實施例中,根據(jù)LSi ' (t)計算MDNi的平均時延LSi (t)的步驟包括:
[0021] 利用公式:
[0022] LSi (t) = (l_wl)*LSi' (t)+wl*LSi (t_l)
[0023] 計算MDNi的平均時延LSi (t),其中wl為預(yù)設(shè)權(quán)值。
[0024] 在一個實施例中,MDNi的哈希環(huán)權(quán)重Wi (0)根據(jù)MDNi的計算能力進(jìn)行確定;
[0025] 利用公式
[0026]
i=\
[0027] 計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (0),其中H為預(yù)定的虛擬哈希環(huán)節(jié)點數(shù)。
[0028] 根據(jù)本發(fā)明的另一方面,提供一種動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的元數(shù)據(jù)服務(wù)節(jié)點控制 器,包括發(fā)送單元、記錄單元、平均時延計算單元、哈希環(huán)權(quán)重計算單元、哈希環(huán)節(jié)點數(shù)計算 單元和動態(tài)調(diào)節(jié)單元,其中 :
[0029] 發(fā)送單元,用于以預(yù)定的時間間隔,向各元數(shù)據(jù)服務(wù)節(jié)點MDNi發(fā)送探測請求;其 中I < i < η,η為元數(shù)據(jù)服務(wù)節(jié)點的個數(shù);
[0030] 記錄單元,用于將各元數(shù)據(jù)服務(wù)節(jié)點MDNi當(dāng)前的反應(yīng)時延記錄為LSi' (t);
[0031] 平均時延計算單元,用于根據(jù)LSi' (t)計算MDNi的平均時延LSi (t);
[0032] 哈希環(huán)權(quán)重計算單元,用于根據(jù)平均時延LSi (t)計算MDNi的哈希環(huán)權(quán)重Wi (t);
[0033] 哈希環(huán)節(jié)點數(shù)計算單元,用于利用哈希環(huán)權(quán)重Wi (t)計算MDNi上承載的哈希環(huán)節(jié) 點數(shù)hi(t);
[0034] 動態(tài)調(diào)節(jié)單元,用于根據(jù)hi (t)和hi (t-1)的差,對MDNi上承載的哈希環(huán)節(jié)點數(shù) 進(jìn)打動態(tài)調(diào)節(jié)。
[0035] 在一個實施例中,動態(tài)調(diào)節(jié)單元包括識別模塊和節(jié)點數(shù)增加模塊,其中:
[0036] 識別模塊,用于判斷hi⑴是否大于hi (t-Ι);
[0037] 節(jié)點數(shù)增加模塊,用于根據(jù)識別模塊的判斷結(jié)果,若hi (t)大于hi (t-1),則將 MDNi上承載的哈希環(huán)節(jié)點數(shù)增加 a,其中a為hi (t)-hi (t-1)。
[0038] 在一個實施例中,動態(tài)調(diào)節(jié)單元還包括節(jié)點數(shù)減小模塊,其中:
[0039] 節(jié)點數(shù)減小模塊,用于根據(jù)識別模塊的判斷結(jié)果,若hi (t)小于hi (t-Ι),則將 MDNi上承載的哈希環(huán)節(jié)點數(shù)減小b,其中b為hi (t-1)-hi (t)。
[0040] 亦一個定偷例由·晗殺W書占數(shù)計算單元具體利用公式
[0041]
[0042] 計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (t),其中H為預(yù)定的虛擬哈希環(huán)節(jié)點數(shù)。
[0043] 在一個實施例中,平均時延計算單元具體利用公式:
[0044] LSi (t) = (I-Wl)^LSii (t)+wl*LSi (t-1)
[0045] 計算MDNi的平均時延LSi (t),其中wl為預(yù)設(shè)權(quán)值。
[0046] 在一個實施例中,哈希環(huán)權(quán)重計算單元具體根據(jù)MDNi的計算能力確定MDNi的哈 希環(huán)權(quán)重Wi(O);
[0047] 哈希環(huán)節(jié)點數(shù)計算單元具體利用公式
[0048]
[0049] 計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (0),其中H為預(yù)定的虛擬哈希環(huán)節(jié)點數(shù)。
[0050] 根據(jù)本發(fā)明的另一方面,提供一種動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的系統(tǒng),包括元數(shù)據(jù)服 務(wù)節(jié)點控制器和元數(shù)據(jù)服務(wù)節(jié)點MDNi,其中I < i < n,n為元數(shù)據(jù)服務(wù)節(jié)點的個數(shù),其中:
[0051] 元數(shù)據(jù)服務(wù)節(jié)點控制器,為上述任一實施例提供的元數(shù)據(jù)服務(wù)節(jié)點控制器;
[0052] 元數(shù)據(jù)服務(wù)節(jié)點MDNi,用于在接收到元數(shù)據(jù)服務(wù)節(jié)點控制器發(fā)送的探測請求時, 向元數(shù)據(jù)服務(wù)節(jié)點控制器發(fā)送響應(yīng)信息。
[0053] 本發(fā)明通過定時探測元數(shù)據(jù)服務(wù)節(jié)點能力,依據(jù)熱點元數(shù)據(jù)的實時分布情況,重 新計算哈希權(quán)重,從而相應(yīng)調(diào)節(jié)元數(shù)據(jù)服務(wù)節(jié)點承載的哈希環(huán)節(jié)點數(shù),實現(xiàn)元數(shù)據(jù)存儲和 訪問的自動負(fù)載均衡。
【附圖說明】
[0054] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。
[0055] 圖1為本發(fā)明動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法一個實施例的示意圖。
[0056] 圖2為本發(fā)明動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法另一實施例的示意圖。
[0057] 圖3為本發(fā)明元數(shù)據(jù)服務(wù)節(jié)點控制器一個實施例的示意圖。
[0058] 圖4為本發(fā)明動態(tài)調(diào)節(jié)單元一個實施例的示意圖。
[0059] 圖5為本發(fā)明動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的系統(tǒng)一個實施例的示意圖。
[0060] 圖6為實施本發(fā)明一個實施例的示意圖。
【具體實施方式】
[0061] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。以下 對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使 用的任何限制。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提 下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0062] 除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數(shù)字表 達(dá)式和數(shù)值不限制本發(fā)明的范圍。
[0063] 同時,應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個部分的尺寸并不是按照實際 的比例關(guān)系繪制的。
[0064] 對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適 當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為授權(quán)說明書的一部分。
[0065] 在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不 是作為限制。因此,示例性實施例的其它示例可以具有不同的值。
[0066] 應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一 個附圖中被定義,則在隨后的附圖中不需要對其進(jìn)行進(jìn)一步討論。
[0067] 圖1為本發(fā)明動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法一個實施例的示意圖。優(yōu)選的,本實 施例的方法步驟可由元數(shù)據(jù)服務(wù)節(jié)點控制器執(zhí)行。
[0068] 步驟101,以預(yù)定的時間間隔,向各元數(shù)據(jù)服務(wù)節(jié)點MDNi發(fā)送探測請求。
[0069] 其中1彡i彡η,η為元數(shù)據(jù)服務(wù)節(jié)點的個數(shù)。
[0070] 步驟102,將各元數(shù)據(jù)服務(wù)節(jié)點MDNi當(dāng)前的反應(yīng)時延記錄為LSi ' (t)。
[0071] 步驟103,根據(jù)LSW⑴計算MDNi的平均時延LSi⑴。
[0072] 優(yōu)選的,根據(jù)LSi' (t)計算MDNi的平均時延LSi (t)的步驟包括:
[0073] 利用公式:
[0074] LSi (t) = (l_wl)*LSi' (t)+wl*LSi (t_l)
[0075] 計算MDNi的平均時延LSi (t),其中wl為預(yù)設(shè)權(quán)值。
[0076] 步驟104,根據(jù)平均時延LSi (t)計算MDNi的哈希環(huán)權(quán)重Wi (t)。
[0077] 優(yōu)選的,通過計算LSi⑴的平均值以得到系統(tǒng)平均反應(yīng)時延LA(t)。將LA(t)作 為參數(shù),根據(jù)FAST TCP計算得到MDNi的哈希環(huán)權(quán)重Wi (t)。由于本領(lǐng)域技術(shù)人員了解如何 具體計算Wi (t),因此這里不展開描述。
[0078] 步驟105,利用哈希環(huán)權(quán)重Wi (t)計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (t)。
[0079] 優(yōu)選的,利用哈希環(huán)權(quán)重Wi (t)計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi (t)的步驟可 包括:
[0080] 利用公式
[0081]
[0082] 計算MDNi上承載的哈希環(huán)節(jié)點數(shù)hi⑴,其中H為預(yù)定的虛擬哈希環(huán)節(jié)點數(shù)。
[0083] 步驟106,根據(jù)hi (t)和hi (t-Ι)的差,對MDNi上承載的哈希環(huán)節(jié)點數(shù)進(jìn)行動態(tài)調(diào) 節(jié)。
[0084] 基于本發(fā)明上述實施例提供的動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法,通過定時探測元數(shù) 據(jù)服務(wù)節(jié)點能力,依據(jù)熱點元數(shù)據(jù)的實時分布情況,重新計算哈希權(quán)重,從而相應(yīng)調(diào)節(jié)元數(shù) 據(jù)服務(wù)節(jié)點承載的哈希環(huán)節(jié)點數(shù),實現(xiàn)元數(shù)據(jù)存儲和訪問的自動負(fù)載均衡。
[0085] 圖2為本發(fā)明動態(tài)調(diào)節(jié)哈希環(huán)節(jié)點數(shù)的方法另一實施例的示意圖。如圖2所示, 上述根據(jù)hi (t)和hi (t-Ι)的差對MDNi上承載的哈希環(huán)節(jié)點數(shù)進(jìn)行動態(tài)調(diào)節(jié)的步驟可包 括:
[0086] 步驟201,判斷hi (t)是否大于hi (t-Ι)。若hi (t)大于hi (t-Ι),則執(zhí)行步驟202 ; 否則執(zhí)行步驟203。
[0087] 步驟202,將MDNi上承載的哈希環(huán)節(jié)點數(shù)增加 a,其中:
[0088] a = hi (t) -hi (