亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)的制作方法

文檔序號:7802987閱讀:223來源:國知局
分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)。在所述分布式緩存系統(tǒng)中,各緩存節(jié)點(diǎn)分布在一個基于一致性哈希算法的虛擬圓上。所述方法包括以下步驟:對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;若當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常,則對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。本發(fā)明實(shí)現(xiàn)了分布式緩存系統(tǒng)中資源分布的自動化調(diào)度,使資源分布處于平衡狀態(tài)。
【專利說明】分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)
[0001]本申請是2009年12月31日遞交的,申請?zhí)枮?00980118719.2,發(fā)明名稱為“分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)”的中國申請的分案申請,其全部內(nèi)容通過引用結(jié)合在本申請中。

【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)。

【背景技術(shù)】
[0003]目前,分布式緩存是IT【技術(shù)領(lǐng)域】中,特別是Web【技術(shù)領(lǐng)域】中,普遍使用的一項(xiàng)緩存技術(shù),其主要應(yīng)用于網(wǎng)頁頁面緩存、數(shù)據(jù)庫緩存等方面以滿足用戶對網(wǎng)絡(luò)系統(tǒng)響應(yīng)速度的要求。
[0004]在分布式緩存系統(tǒng)中,緩存客戶端的數(shù)據(jù)需要通過一定的負(fù)載均衡算法來分布到各個緩存節(jié)點(diǎn)上;目前最常用的負(fù)載均衡算法是hash (哈希)算法,而一致性hash算法(Consistent Hashing)又是hash算法中使用比較廣泛的一種。
[0005]在基于一致性hash算法的分布式緩存系統(tǒng)中,所有的緩存節(jié)點(diǎn)可以是均布于一個虛擬圓結(jié)構(gòu)上(以下簡稱“圓”),當(dāng)使用一般的hash函數(shù)時,物理服務(wù)器的映射點(diǎn)分布非常不均勻,現(xiàn)有技術(shù)中可以通過設(shè)置虛擬節(jié)點(diǎn)的方法,為每個物理服務(wù)器分配若干個虛擬節(jié)點(diǎn)(例如,100?200),由于所述100?200個虛擬節(jié)點(diǎn)均布在所述“圓”上而且每個虛擬節(jié)點(diǎn)的覆蓋范圍都很小,因此可以起到均衡不同緩存節(jié)點(diǎn)上的負(fù)載的效果。但是,由于需要設(shè)置虛擬節(jié)點(diǎn)的數(shù)量很大,會使得緩存客戶端的計(jì)算量也變得很大,增重緩存客戶端的負(fù)擔(dān);同時,在布設(shè)有虛擬節(jié)點(diǎn)的“圓”中再次出現(xiàn)負(fù)載不均時,現(xiàn)有技術(shù)仍然無法對緩存節(jié)點(diǎn)上的負(fù)載進(jìn)行及時調(diào)整。
[0006]而針對分布式緩存系統(tǒng)中整體負(fù)載過高或者過低的情況,目前還沒有比較有效的方式來對分布式緩存系統(tǒng)中的資源分布進(jìn)行調(diào)度。


【發(fā)明內(nèi)容】

[0007]本發(fā)明的實(shí)施例提供一種分布式緩存資源調(diào)度的方法、裝置及系統(tǒng),用以實(shí)現(xiàn)分布式緩存系統(tǒng)中資源分布的自動化調(diào)度,使資源分布處于平衡狀態(tài)。
[0008]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0009]一種分布式緩存資源調(diào)度的方法,在分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)分布在一個基于一致性哈希算法的虛擬圓上,所述方法包括:
[0010]對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;
[0011]根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;
[0012]若當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常,則對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0013]一種分布式緩存資源調(diào)度的方法,包括:
[0014]接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息;
[0015]在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù);
[0016]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0017]一種緩存管理裝置,該緩存管理裝置所在的分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)分布在一個基于一致性哈希算法的虛擬圓上,所述緩存管理裝置包括:
[0018]監(jiān)控單元,用于對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;
[0019]判斷單元,用于根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;
[0020]調(diào)整單元,用于在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0021]一種緩存節(jié)點(diǎn),包括:
[0022]接收單元,用于接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息;
[0023]獲取單元,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù);
[0024]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0025]一種分布式緩存系統(tǒng),包括緩存客戶端、緩存管理裝置及多個緩存節(jié)點(diǎn);其中,
[0026]所述緩存客戶端,用于根據(jù)一致性哈希算法將數(shù)據(jù)分布到所述多個緩存節(jié)點(diǎn)上;
[0027]所述緩存管理裝置,用于對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控,并根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;若存在異常,則對所述多個緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整;其中,所述負(fù)載異常包括負(fù)載不均、負(fù)載過高或者負(fù)載過低。
[0028]本發(fā)明實(shí)施例提供的分布式緩存資源調(diào)度的方法、裝置及系統(tǒng),在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,通過調(diào)整緩存節(jié)點(diǎn)之間的布局來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,實(shí)現(xiàn)分布式緩存系統(tǒng)中資源分布的自動化調(diào)度,使所述分布式緩存系統(tǒng)中的資源分布呈一種平衡狀態(tài)。

【專利附圖】

【附圖說明】
[0029]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0030]圖1為現(xiàn)有的通過一致性hash算法來實(shí)現(xiàn)分布式緩存的原理示意圖;
[0031]圖2為本發(fā)明實(shí)施例一中分布式緩存資源調(diào)度的方法的流程圖;
[0032]圖3為本發(fā)明實(shí)施例一中緩存管理裝置的結(jié)構(gòu)示意圖;
[0033]圖4為本發(fā)明實(shí)施例二中分布式緩存資源調(diào)度的方法的流程圖;
[0034]圖5為本發(fā)明實(shí)施例二中緩存節(jié)點(diǎn)的結(jié)構(gòu)示意圖;
[0035]圖6為本發(fā)明實(shí)施例三中移動緩存節(jié)點(diǎn)位置的方法流程圖;
[0036]圖7為本發(fā)明實(shí)施例三中的分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)示意圖一;
[0037]圖8為本發(fā)明實(shí)施例三中的分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)示意圖二 ;
[0038]圖9為本發(fā)明實(shí)施例四中添加緩存節(jié)點(diǎn)的方法流程圖;
[0039]圖10為本發(fā)明實(shí)施例四中的分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)示意圖;
[0040]圖11為本發(fā)明實(shí)施例五中移除緩存節(jié)點(diǎn)的方法流程圖;
[0041]圖12為本發(fā)明實(shí)施例五中的分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)示意圖;
[0042]圖13為本發(fā)明實(shí)施例六中的緩存管理裝置的結(jié)構(gòu)示意圖;
[0043]圖14為本發(fā)明實(shí)施例六提供的緩存管理裝置中移動模塊的結(jié)構(gòu)示意圖;
[0044]圖15為本發(fā)明實(shí)施例六提供的緩存管理裝置中增加模塊的結(jié)構(gòu)示意圖;
[0045]圖16為本發(fā)明實(shí)施例六提供的緩存管理裝置中移除模塊的結(jié)構(gòu)示意圖;
[0046]圖17為本發(fā)明實(shí)施例六提供的緩存節(jié)點(diǎn)的結(jié)構(gòu)示意圖;
[0047]圖18為本發(fā)明實(shí)施例六提供的分布式緩存系統(tǒng)的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0048]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0049]在基于一致性hash算法的分布式緩存系統(tǒng)中,所有的緩存節(jié)點(diǎn)均根據(jù)其分別對應(yīng)的哈希值而分布于一個虛擬圓結(jié)構(gòu)上(以下簡稱“圓”),該“圓”一般由緩存管理裝置生成并保存。所述緩存管理裝置可以是一個緩存管理節(jié)點(diǎn)。
[0050]在所述“圓”上的一段數(shù)據(jù)范圍(如“圓”上1000?20000的hash值范圍)將稱為一個“hash段”。
[0051]在所述分布式緩存系統(tǒng)中,緩存客戶端一般會從緩存管理裝置中下載“圓”上所有緩存節(jié)點(diǎn)的信息,以供緩存客戶端進(jìn)行一致性hash運(yùn)算。
[0052]一般情況下,都是以數(shù)據(jù)的鍵到保存該數(shù)據(jù)的緩存節(jié)點(diǎn)的方向作為“圓”的正方向;其體現(xiàn)在“圓”上可以是順時針,也可以是逆時針。在本發(fā)明的實(shí)施例中,將順時針方向定義為正方向來作為示例;也就是說,“圓”上的數(shù)據(jù)會按照順時鐘方向來選擇緩存節(jié)點(diǎn),而緩存客戶端在讀取數(shù)據(jù)時也會根據(jù)所述數(shù)據(jù)的鍵對應(yīng)的hash值在“圓”的順時針方向上尋找最近的緩存節(jié)點(diǎn)進(jìn)行操作。
[0053]結(jié)合圖1所示,通過一致性hash算法來實(shí)現(xiàn)分布式緩存的基本原理大致如下:
[0054]首先,將多個緩存節(jié)點(diǎn)配置到O?232的“圓”(continuum,這里的“圓”是由負(fù)載均衡設(shè)備生成的虛擬圓,其實(shí)質(zhì)上是一種閉聯(lián)集)上;在這里,232只是一個示例,“圓”的大小當(dāng)然還可以是其它值,而將所述緩存節(jié)點(diǎn)配置到“圓”上的方法可以是將多個緩存節(jié)點(diǎn)平均排布在所述“圓”上,當(dāng)然也可以是參照適合某些具體場景的其它規(guī)則來進(jìn)行配置;
[0055]然后,求出需存儲數(shù)據(jù)對應(yīng)的鍵的哈希值,例如通過md5 (Message-DigestAlgorithm5,信息-摘要算法5)算法,并將計(jì)算得到的哈希值對232取余;根據(jù)取余的結(jié)果將所述需存儲的數(shù)據(jù)映射到所述“圓”上;
[0056]之后,從所述需存儲的數(shù)據(jù)對應(yīng)的鍵映射到“圓”上的位置開始順時針查找,并將所述需存儲的數(shù)據(jù)保存到查找到的第一個緩存節(jié)點(diǎn)(服務(wù)器)上。
[0057]在分布式緩存系統(tǒng)中存在有多個緩存節(jié)點(diǎn),而不同的緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載大小也各有不同。一般情況下,以一個緩存節(jié)點(diǎn)的多項(xiàng)負(fù)載數(shù)據(jù)中的最大值作為該緩存節(jié)點(diǎn)的負(fù)載值,例如某一緩存節(jié)點(diǎn)當(dāng)前的內(nèi)存使用率為50%,帶寬使用率為80%,其它的負(fù)載數(shù)據(jù)也均小于80%,則該緩存節(jié)點(diǎn)的負(fù)載值即為80%。如果最高負(fù)載節(jié)點(diǎn)和最低負(fù)載節(jié)點(diǎn)之間的負(fù)載差距超過閾值(例如15% ),或者所有緩存節(jié)點(diǎn)的整體負(fù)載高于上限值(例如80% )或整體負(fù)載低于下限值(例如40% ),那么就認(rèn)為當(dāng)前分布式緩存系統(tǒng)中存在緩存負(fù)載異常。
[0058]下面結(jié)合附圖對本發(fā)明實(shí)施例提供的分布式緩存資源調(diào)度的方法、裝置及系統(tǒng)進(jìn)行詳細(xì)描述。
[0059]實(shí)施例一:
[0060]如圖2所示,本實(shí)施例提供的分布式緩存資源調(diào)度的方法,包括以下步驟:
[0061]201、對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;這里的負(fù)載值可以包含但不限于各個緩存節(jié)點(diǎn)的內(nèi)存占用率、帶寬占用率等。
[0062]202、根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;所述負(fù)載異常包括負(fù)載不均、負(fù)載過高或者負(fù)載過低。
[0063]一般情況下,如果當(dāng)前分布式緩存系統(tǒng)中,所有緩存節(jié)點(diǎn)的負(fù)載值中的最大值和最小值之差超過一閾值(比如,15% )時,就認(rèn)為當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載不均;
[0064]如果所有緩存節(jié)點(diǎn)的整體負(fù)載高于上限值(例如80% )或者所有節(jié)點(diǎn)的負(fù)載值中的最小值高于某一預(yù)設(shè)值(比如60% ),那么就認(rèn)為當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過高的問題,也就是系統(tǒng)過載;
[0065]而如果所有緩存節(jié)點(diǎn)的整體負(fù)載低于下限值(例如40% ),則認(rèn)為當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過低的問題;
[0066]在本實(shí)施例中,所謂整體負(fù)載是由所有緩存節(jié)點(diǎn)的負(fù)載值的平均值來表示,當(dāng)然也可以是通過其它方式來表示。
[0067]203、若當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常,則對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0068]在本實(shí)施例中,針對上述三種負(fù)載異常的情況,對緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整的方式分別為:
[0069]I)針對負(fù)載不均的情況,可以通過移動所述“圓”上的緩存節(jié)點(diǎn)的位置的方式來改變緩存節(jié)點(diǎn)的覆蓋范圍,從而改變緩存節(jié)點(diǎn)上的負(fù)載值大小;
[0070]2)針對負(fù)載過高的情況,可以在所述“圓”中添加新的緩存節(jié)點(diǎn),通過新增的緩存節(jié)點(diǎn)來分擔(dān)鄰近的緩存節(jié)點(diǎn)上的負(fù)載;
[0071]3)針對負(fù)載過低的情況,可以從所述“圓”中移除一個或者多個緩存節(jié)點(diǎn),使所述移除的緩存節(jié)點(diǎn)上的負(fù)載轉(zhuǎn)移到鄰近的緩存節(jié)點(diǎn)上,從而提高分布式緩存系統(tǒng)的整體負(fù)載。
[0072]上述步驟的執(zhí)行主體可以是緩存管理裝置,即分布式緩存系統(tǒng)中的緩存管理節(jié)點(diǎn)。
[0073]為了更好地實(shí)現(xiàn)上述方法,本實(shí)施例中還提供了一種緩存管理裝置,如圖3所示,該緩存管理裝置所在的分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)分布在一個基于一致性哈希算法的虛擬圓上,所述緩存管理裝置包括:
[0074]監(jiān)控單元31,用于對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;
[0075]判斷單元32,用于根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;
[0076]調(diào)整單元33,用于在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0077]上述緩存管理裝置,可以是分布式緩存系統(tǒng)中的緩存管理節(jié)點(diǎn)。
[0078]本發(fā)明實(shí)施例中提供的分布式緩存資源調(diào)度的方法及裝置,通過對當(dāng)前分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控,并在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,自動調(diào)整緩存節(jié)點(diǎn)之間的布局來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,實(shí)現(xiàn)分布式緩存系統(tǒng)中資源分布的自動化調(diào)度,使所述分布式緩存系統(tǒng)的資源分布處于一種平衡狀態(tài)。
[0079]實(shí)施例二:
[0080]如圖4所示,本實(shí)施例提供的分布式緩存資源調(diào)度的方法,包括以下步驟:
[0081]401、接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息。
[0082]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0083]402、在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù)。
[0084]上述各步驟的執(zhí)行主體可以是分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn),且該緩存節(jié)點(diǎn)是所述即將丟失數(shù)據(jù)的哈希段所對應(yīng)的新緩存節(jié)點(diǎn)。
[0085]為了更好地實(shí)現(xiàn)上述分布式緩存資源調(diào)度的方法,本實(shí)施例中還提供了一種緩存節(jié)點(diǎn),如圖5所示,該緩存節(jié)點(diǎn)包括:
[0086]接收單元51,用于接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息;
[0087]獲取單元52,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù);
[0088]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0089]本實(shí)施例中提供的分布式緩存資源調(diào)度的方法及緩存節(jié)點(diǎn),通過將所述即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知其對應(yīng)的新緩存節(jié)點(diǎn),使得所述新緩存節(jié)點(diǎn)在發(fā)現(xiàn)自身不具備緩存客戶端需要的數(shù)據(jù)時,可以根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取相應(yīng)的數(shù)據(jù),從而減少了數(shù)據(jù)的丟失。
[0090]實(shí)施例三:
[0091]在本實(shí)施例中,將以一具體實(shí)例來進(jìn)一步說明通過移動緩存節(jié)點(diǎn)在所述“圓”上的位置,來實(shí)現(xiàn)分布式緩存系統(tǒng)中資源調(diào)度的方法。
[0092]首先,判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載不均,具體的判斷方式在前面已有描述,此處不再贅述;如果當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載不均,則可以通過移動緩存節(jié)點(diǎn)在所述“圓”上的位置的方式來對分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0093]具體地,移動緩存節(jié)點(diǎn)在所述“圓”上的位置的過程,如圖6所示,包括:
[0094]601、選取所述“圓”上負(fù)載差距最大的至少一對相鄰緩存節(jié)點(diǎn)。
[0095]在選取“圓”上負(fù)載差距最大的相鄰緩存節(jié)點(diǎn)時,可以是選取其中負(fù)載差距最大的一對,這種方式比較適合緩存節(jié)點(diǎn)較少的分布式緩存系統(tǒng);也可以是按照負(fù)載差距值從大到小的順序選取多對緩存節(jié)點(diǎn),這種方式比較適合緩存節(jié)點(diǎn)較多的分布式緩存系統(tǒng);當(dāng)然還可以是其它選擇方式。
[0096]602、對所選出的每對相鄰緩存節(jié)點(diǎn)中的兩個緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行比較。
[0097]以其中一對相鄰緩存節(jié)點(diǎn)為例,如果位于正方向(順時針)的緩存節(jié)點(diǎn)的負(fù)載值較大,則執(zhí)行步驟603;如果位于反方向(逆時針)的緩存節(jié)點(diǎn)的負(fù)載值較大,則執(zhí)行步驟604。
[0098]603、將位于反方向的緩存節(jié)點(diǎn)沿正方向移動。
[0099]參看圖7所示的分布式緩存系統(tǒng)中的“圓”結(jié)構(gòu),其中負(fù)載值最大的緩存節(jié)點(diǎn)是節(jié)點(diǎn)5(98% ),負(fù)載值最小的緩存節(jié)點(diǎn)是節(jié)點(diǎn)2(20% ),它們之間的負(fù)載差為78%,高于閾值(比如15% ),因此當(dāng)前的分布式緩存系統(tǒng)中存在負(fù)載不均,而且此時負(fù)載差距最大的一對相鄰緩存節(jié)點(diǎn)是節(jié)點(diǎn)3和節(jié)點(diǎn)4。由于節(jié)點(diǎn)4上的負(fù)載值比節(jié)點(diǎn)3上的負(fù)載值要大,因此為了使節(jié)點(diǎn)3和節(jié)點(diǎn)4上的負(fù)載趨向于均衡化,需要將節(jié)點(diǎn)3沿順時針方向移動。
[0100]如果當(dāng)前節(jié)點(diǎn)4上的負(fù)載值為a,其所覆蓋的hash段的長度為A ;節(jié)點(diǎn)3上的負(fù)載值為b,其所覆蓋的hash段的長度為B,且節(jié)點(diǎn)3的負(fù)載能力是節(jié)點(diǎn)4的X倍(負(fù)載能力與節(jié)點(diǎn)的硬件條件有關(guān),一般X > O ;如果節(jié)點(diǎn)3和節(jié)點(diǎn)4選用的是相同硬件或者虛擬硬件,則X為I);則,節(jié)點(diǎn)3在“圓”上沿順時針方向移動的距離為:.X Cl — b
[0101]5—A----1 + X Cl
[0102]這樣,節(jié)點(diǎn)3在“圓”上的覆蓋范圍變大,所承擔(dān)的負(fù)載也變大;同時,節(jié)點(diǎn)4所承擔(dān)的負(fù)載則變小,從而使節(jié)點(diǎn)3和節(jié)點(diǎn)4之間的負(fù)載趨向均衡。
[0103]504、將位于反方向的緩存節(jié)點(diǎn)沿反方向移動。
[0104]參看圖8所示的分布式緩存系統(tǒng)中的“圓”結(jié)構(gòu),此時負(fù)載差距最大的一對相鄰緩存節(jié)點(diǎn)是節(jié)點(diǎn)I和節(jié)點(diǎn)2。由于節(jié)點(diǎn)I上的負(fù)載值比節(jié)點(diǎn)2上的負(fù)載值要大,因此為了使節(jié)點(diǎn)I和節(jié)點(diǎn)2上的負(fù)載趨向于均衡化,需要將節(jié)點(diǎn)I沿逆時針方向移動。
[0105]如果當(dāng)前節(jié)點(diǎn)I上的負(fù)載值為C,其所覆蓋的hash段的長度為C ;節(jié)點(diǎn)2上的負(fù)載值為山其所覆蓋的hash段的長度為D,且節(jié)點(diǎn)2的負(fù)載能力是節(jié)點(diǎn)I的X倍(負(fù)載能力與節(jié)點(diǎn)的硬件條件有關(guān),一般X > O ;如果節(jié)點(diǎn)I和節(jié)點(diǎn)2選用的是相同硬件或者虛擬硬件,則X為I);則,節(jié)點(diǎn)I在“圓”上沿順時針方向移動的距離為:
X c_ d
[0106]5 =C----
1 + X C
[0107]這樣,節(jié)點(diǎn)I在“圓”上的覆蓋范圍變小,所承擔(dān)的負(fù)載也變??;同時,節(jié)點(diǎn)2所承擔(dān)的負(fù)載則變大,從而使節(jié)點(diǎn)I和節(jié)點(diǎn)2之間的負(fù)載趨向均衡。
[0108]上面的描述,只是以其中一對相鄰的緩存節(jié)點(diǎn)作為示例來介紹本實(shí)施例所提供的分布式緩存負(fù)載均衡的方法。如果在對所述一對相鄰緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整后,當(dāng)前分布式緩存系統(tǒng)中仍然存在負(fù)載不均的問題,那么就重復(fù)上述操作,直至分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)的負(fù)載值中的最大值和最小值之差低于閾值。
[0109]通過上述方法,對“圓”上的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整,可以使整個分布式緩存系統(tǒng)中的總負(fù)載在各個緩存節(jié)點(diǎn)上重新分配,從而達(dá)到負(fù)載均衡的目的。
[0110]不過,在所述分布式緩存系統(tǒng)中,只要存在緩存節(jié)點(diǎn)位置的變動,就會出現(xiàn)所述“圓”中的一段hash段的數(shù)據(jù)會在訪問時丟失的情況。
[0111]針對這一問題,在本實(shí)施例中,由緩存管理裝置向即將丟失數(shù)據(jù)的hash段對應(yīng)的新緩存節(jié)點(diǎn)發(fā)送一通知消息,該通知消息中包含有所述即將丟失數(shù)據(jù)的hash段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息。所述位置信息中包含有舊緩存節(jié)點(diǎn)的IP(Internet Protocol,因特網(wǎng)協(xié)議)地址和端口號,當(dāng)然還可以包含其它一些用于表征位置的信息。
[0112]結(jié)合圖7的情況,節(jié)點(diǎn)3沿“圓”的順時針方向移動至節(jié)點(diǎn)3’的位置。對于節(jié)點(diǎn)3和節(jié)點(diǎn)3’之間的hash段M,其原屬于節(jié)點(diǎn)4的覆蓋范圍;在節(jié)點(diǎn)3移動后,所述hash段M歸屬到節(jié)點(diǎn)3’的覆蓋范圍。此時,緩存客戶端在請求獲取hash段M上的數(shù)據(jù)時,會向節(jié)點(diǎn)3’發(fā)起該讀操作請求,而實(shí)際上hash段M上的數(shù)據(jù)仍然保存在節(jié)點(diǎn)4中而非節(jié)點(diǎn)3’中,因此就會造成hash段M上的數(shù)據(jù)丟失。
[0113]在本實(shí)施例中,在移動了節(jié)點(diǎn)3的位置之后,分布式緩存系統(tǒng)中的緩存管理裝置就會向節(jié)點(diǎn)3’發(fā)送一通知消息,該通知消息中包含有節(jié)點(diǎn)4的位置信息(一般指IP地址和端口號)。這樣,在緩存客戶端向節(jié)點(diǎn)3’請求獲取hash段M上的數(shù)據(jù)時,如果在節(jié)點(diǎn)3’中沒有相應(yīng)的數(shù)據(jù),那么節(jié)點(diǎn)3’會根據(jù)所述位置信息去訪問節(jié)點(diǎn)4以獲取相應(yīng)的數(shù)據(jù)(例如通過圖7中所示的Tl接口),并將獲取到的數(shù)據(jù)保存在節(jié)點(diǎn)3’中,同時將所述數(shù)據(jù)返回給發(fā)起讀操作請求的緩存客戶端。
[0114]在上述通知消息中,還可以攜帶有超時時間timeout的信息;這樣,就可以將節(jié)點(diǎn)3’訪問節(jié)點(diǎn)4以獲取數(shù)據(jù)的操作限定在timeout之內(nèi)。如果上述獲取數(shù)據(jù)的操作在超出所述timeout后仍未完成,節(jié)點(diǎn)3’也會停止繼續(xù)訪問節(jié)點(diǎn)4來獲取數(shù)據(jù)的過程。
[0115]更進(jìn)一步地,還可以在上述通知消息中添加hash段M的范圍(例如:10001?20200);這樣,在緩存客戶端向節(jié)點(diǎn)3’請求獲取數(shù)據(jù)而在節(jié)點(diǎn)3’中并沒有相應(yīng)數(shù)據(jù)的時候,節(jié)點(diǎn)3’會對所述數(shù)據(jù)的鍵進(jìn)行一致性哈希運(yùn)算(這里進(jìn)行一致性哈希運(yùn)算的算法同緩存客戶端中保存的一致性哈希算法是一樣的),并將運(yùn)算得到的哈希值跟所述通知消息中攜帶的hash段M的范圍進(jìn)行比對,判斷所述由節(jié)點(diǎn)3’計(jì)算得到哈希值是否屬于hash段M的范圍;如果屬于,節(jié)點(diǎn)3’才可以訪問節(jié)點(diǎn)4以獲取相應(yīng)的數(shù)據(jù)。通過在通知消息中添加hash段M的范圍信息,可以更加明確節(jié)點(diǎn)3’需要從節(jié)點(diǎn)4中獲取的數(shù)據(jù)是即將丟失數(shù)據(jù)的hash段M所對應(yīng)的數(shù)據(jù),而非其它hash段的數(shù)據(jù),這樣可以減少信令消耗、節(jié)省資源。
[0116]上面的描述中僅以緩存客戶端向節(jié)點(diǎn)3’發(fā)起讀操作請求為例,如果所述節(jié)點(diǎn)3’接收到的是計(jì)數(shù)請求,而本節(jié)點(diǎn)中又沒有相應(yīng)的計(jì)數(shù)值時,同樣可以通過訪問節(jié)點(diǎn)4來獲取以往記錄的計(jì)數(shù)值;該處理過程同上述處理讀操作請求的過程基本原理一致,此處不再贅述。
[0117]結(jié)合圖8的情況,節(jié)點(diǎn)I沿“圓”的逆時針方向移動至節(jié)點(diǎn)I’的位置。對于節(jié)點(diǎn)I和節(jié)點(diǎn)I’之間的hash段N,其原屬于節(jié)點(diǎn)I的覆蓋范圍;在節(jié)點(diǎn)I移動后,所述hash段N歸屬到節(jié)點(diǎn)2的覆蓋范圍。此時,緩存客戶端在請求獲取hash段N上的數(shù)據(jù)時,會向節(jié)點(diǎn)2發(fā)起該讀操作請求,而hash段N上的數(shù)據(jù)實(shí)際保存在節(jié)點(diǎn)I’(也就是移動后的節(jié)點(diǎn)I)中而非節(jié)點(diǎn)2中,因此就會造成hash段N上的數(shù)據(jù)丟失。
[0118]在本實(shí)施例中,在移動了節(jié)點(diǎn)I的位置之后,分布式緩存系統(tǒng)中的緩存管理裝置就會向節(jié)點(diǎn)2發(fā)送一通知消息,該通知消息中包含有節(jié)點(diǎn)I’的位置信息(一般指IP地址和端口號)。這樣,在緩存客戶端向節(jié)點(diǎn)2請求獲取hash段N上的數(shù)據(jù)時,如果在節(jié)點(diǎn)2中沒有相應(yīng)的數(shù)據(jù),那么節(jié)點(diǎn)2會根據(jù)所述位置信息去訪問節(jié)點(diǎn)I’以獲取相應(yīng)的數(shù)據(jù)(例如通過圖8中所示的Tl接口),并將獲取到的數(shù)據(jù)保存在節(jié)點(diǎn)2中,同時將所述數(shù)據(jù)返回給發(fā)起讀操作請求的緩存客戶端。
[0119]在上述通知消息中,還可以攜帶有超時時間timeout的信息;這樣,就可以將節(jié)點(diǎn)
2訪問節(jié)點(diǎn)I’以獲取數(shù)據(jù)的操作限定在timeout之內(nèi)。如果上述獲取數(shù)據(jù)的操作在超出所述timeout后仍未完成,節(jié)點(diǎn)2也會停止繼續(xù)訪問節(jié)點(diǎn)I’來獲取數(shù)據(jù)的過程。
[0120]更進(jìn)一步地,還可以在上述通知消息中添加hash段N的范圍(例如:10001?20200);這樣,在緩存客戶端向節(jié)點(diǎn)2請求獲取數(shù)據(jù)而在節(jié)點(diǎn)2中并沒有相應(yīng)數(shù)據(jù)的時候,節(jié)點(diǎn)2會對所述數(shù)據(jù)的鍵進(jìn)行一致性哈希運(yùn)算(這里進(jìn)行一致性哈希運(yùn)算的算法同緩存客戶端中保存的一致性哈希算法是一樣的),并將運(yùn)算得到的哈希值跟所述通知消息中攜帶的hash段N的范圍進(jìn)行比對,判斷所述由節(jié)點(diǎn)2計(jì)算得到哈希值是否屬于hash段N的范圍;如果屬于,節(jié)點(diǎn)2才可以訪問節(jié)點(diǎn)I’以獲取相應(yīng)的數(shù)據(jù)。通過在通知消息中添加hash段N的范圍信息,可以更加明確節(jié)點(diǎn)3’需要從節(jié)點(diǎn)4中獲取的數(shù)據(jù)是即將丟失數(shù)據(jù)的hash段N所對應(yīng)的數(shù)據(jù),而非其它hash段的數(shù)據(jù),這樣可以減少信令消耗、節(jié)省資源。
[0121]上面的描述中僅以緩存客戶端向節(jié)點(diǎn)2發(fā)起讀操作請求為例,如果所述節(jié)點(diǎn)2接收到的是計(jì)數(shù)請求,而本節(jié)點(diǎn)中又沒有相應(yīng)的計(jì)數(shù)值時,同樣可以通過訪問節(jié)點(diǎn)I’來獲取以往記錄的計(jì)數(shù)值;該處理過程同上述處理讀操作請求的過程基本原理一致,此處不再贅述。
[0122]本實(shí)施例提供的分布式緩存資源調(diào)度的方法,在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載不均時,通過移動緩存節(jié)點(diǎn)在分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)上的位置來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,使得不同緩存節(jié)點(diǎn)之間的負(fù)載值差異逐漸變小,進(jìn)而使所述分布式緩存系統(tǒng)達(dá)到負(fù)載均衡的狀態(tài);
[0123]而且,在本實(shí)施例中還提供了一種減少緩存數(shù)據(jù)丟失的方案,通過將某一段即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知該哈希段對應(yīng)的新緩存節(jié)點(diǎn),使得所述新緩存節(jié)點(diǎn)能夠根據(jù)所述位置信息訪問舊緩存節(jié)點(diǎn)以獲取相應(yīng)的數(shù)據(jù),進(jìn)而減少數(shù)據(jù)丟失的情況。
[0124]實(shí)施例四:
[0125]在本實(shí)施例中,將以一具體實(shí)例來進(jìn)一步說明通過在分布式緩存系統(tǒng)中添加緩存節(jié)點(diǎn),來實(shí)現(xiàn)分布式緩存系統(tǒng)中資源調(diào)度的方法。
[0126]首先,判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載過高,具體的判斷方式在前面已有描述,此處不再贅述;如果當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過高,則可以通過在所述“圓”上增加緩存節(jié)點(diǎn)的方式來對分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0127]具體地,在所述“圓”上增加緩存節(jié)點(diǎn)的過程,如圖9所示,包括:
[0128]901、選取所述“圓”上負(fù)載值最高的緩存節(jié)點(diǎn),例如圖10中的節(jié)點(diǎn)5。
[0129]902、在所述負(fù)載值最高的緩存節(jié)點(diǎn)所對應(yīng)的哈希段的中間位置增設(shè)一緩存節(jié)點(diǎn)。
[0130]參看圖10所示的分布式緩存系統(tǒng)中的“圓”結(jié)構(gòu),負(fù)載值最高的緩存節(jié)點(diǎn)是節(jié)點(diǎn)5,而節(jié)點(diǎn)5所覆蓋的哈希段即為位于節(jié)點(diǎn)5的逆時針方向上的節(jié)點(diǎn)4和節(jié)點(diǎn)5之間的哈希段。此時,在節(jié)點(diǎn)5所覆蓋的哈希段的中間位置增設(shè)一節(jié)點(diǎn)5’ ;由于該節(jié)點(diǎn)5’位于節(jié)點(diǎn)5的順時針方向而且正位于所述哈希段的中間位置,因此節(jié)點(diǎn)5’將哈希段均分為Pl和P2兩段,使得哈希段Pl仍然歸屬于節(jié)點(diǎn)5,而哈希段P2則歸屬到節(jié)點(diǎn)5’,從而降低節(jié)點(diǎn)5上的負(fù)載,同時也降低了當(dāng)前分布式緩存系統(tǒng)中所有節(jié)點(diǎn)的平均負(fù)載。
[0131]如果在所述“圓”上增加了一個節(jié)點(diǎn)之后,當(dāng)前分布式緩存系統(tǒng)中仍然存在負(fù)載過高的問題,那么可以重復(fù)上述操作,直至分布式緩存系統(tǒng)中的整體負(fù)載低于上限值。
[0132]通過上述方法,在“圓”上增設(shè)新的緩存節(jié)點(diǎn),可以對原來負(fù)載值較高的緩存節(jié)點(diǎn)上的負(fù)載進(jìn)行分流,進(jìn)而降低分布式緩存系統(tǒng)的整體負(fù)載,解決系統(tǒng)過載的問題。
[0133]在本實(shí)施例中,需要注意的是,在增加緩存節(jié)點(diǎn)前,首先要確保已有足夠數(shù)量的緩存節(jié)點(diǎn)服務(wù)器是處于啟動狀態(tài)(可以是正在運(yùn)行中或者待機(jī)中),這樣才能順利地將新的緩存節(jié)點(diǎn)加入到所述虛擬圓結(jié)構(gòu)中,以分擔(dān)其它緩存節(jié)點(diǎn)上的負(fù)載。
[0134]然而,在所述分布式緩存系統(tǒng)中,只要存在緩存節(jié)點(diǎn)布局上的變動,就會出現(xiàn)所述“圓”中的一段hash段的數(shù)據(jù)會在訪問時丟失的情況。
[0135]針對這一問題,在本實(shí)施例中,由緩存管理裝置向即將丟失數(shù)據(jù)的hash段對應(yīng)的新緩存節(jié)點(diǎn)發(fā)送一通知消息,該通知消息中包含有所述即將丟失數(shù)據(jù)的hash段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息。所述位置信息中包含有舊緩存節(jié)點(diǎn)的IP地址和端口號,當(dāng)然還可以包含其它一些用于表征位置的信息。
[0136]結(jié)合圖10的情況,在節(jié)點(diǎn)4和節(jié)點(diǎn)5之間的哈希段的中間位置增設(shè)節(jié)點(diǎn)5’。對于節(jié)點(diǎn)4和節(jié)點(diǎn)5’之間的hash段P2,其原屬于節(jié)點(diǎn)5的覆蓋范圍;在增設(shè)了節(jié)點(diǎn)5’之后,所述hash段P2歸屬到節(jié)點(diǎn)5’的覆蓋范圍。此時,緩存客戶端在請求獲取hash段P2上的數(shù)據(jù)時,會向節(jié)點(diǎn)5’發(fā)起該讀操作請求,而實(shí)際上hash段P2上的數(shù)據(jù)仍然保存在節(jié)點(diǎn)5中而非節(jié)點(diǎn)5’中,因此就會造成hash段P2上的數(shù)據(jù)丟失。
[0137]在本實(shí)施例中,在增加了節(jié)點(diǎn)5’之后,分布式緩存系統(tǒng)中的緩存管理裝置就會向節(jié)點(diǎn)5’發(fā)送一通知消息,該通知消息中包含有節(jié)點(diǎn)5的位置信息(一般指IP地址和端口號)。這樣,在緩存客戶端向節(jié)點(diǎn)5’請求獲取hash段P2上的數(shù)據(jù)時,如果在節(jié)點(diǎn)5’中沒有相應(yīng)的數(shù)據(jù),那么節(jié)點(diǎn)5’會根據(jù)所述位置信息去訪問節(jié)點(diǎn)5以獲取相應(yīng)的數(shù)據(jù),并將獲取到的數(shù)據(jù)保存在節(jié)點(diǎn)5’中,同時將所述數(shù)據(jù)返回給發(fā)起讀操作請求的緩存客戶端。
[0138]在上述通知消息中,還可以攜帶有超時時間timeout的信息;這樣,就可以將節(jié)點(diǎn)5’訪問節(jié)點(diǎn)5以獲取數(shù)據(jù)的操作限定在timeout之內(nèi)。如果上述獲取數(shù)據(jù)的操作在超出所述timeout后仍未完成,節(jié)點(diǎn)5’也會停止繼續(xù)訪問節(jié)點(diǎn)5來獲取數(shù)據(jù)的過程。
[0139]更進(jìn)一步地,還可以在上述通知消息中添加hash段P2的范圍;這樣,在緩存客戶端向節(jié)點(diǎn)5’請求獲取數(shù)據(jù)而在節(jié)點(diǎn)5’中并沒有相應(yīng)數(shù)據(jù)的時候,節(jié)點(diǎn)5’會對所述數(shù)據(jù)的鍵進(jìn)行一致性哈希運(yùn)算,并將運(yùn)算得到的哈希值跟所述通知消息中攜帶的hash段P2的范圍進(jìn)行比對,判斷所述由節(jié)點(diǎn)5’計(jì)算得到哈希值是否屬于hash段P2的范圍;如果屬于,節(jié)點(diǎn)5’才可以訪問節(jié)點(diǎn)5以獲取相應(yīng)的數(shù)據(jù)。通過在通知消息中添加hash段P2的范圍信息,可以更加明確節(jié)點(diǎn)5’需要從節(jié)點(diǎn)5中獲取的數(shù)據(jù)是即將丟失數(shù)據(jù)的hash段P2所對應(yīng)的數(shù)據(jù),而非其它hash段的數(shù)據(jù),這樣可以減少信令消耗、節(jié)省資源。
[0140]上面的描述中僅以緩存客戶端向節(jié)點(diǎn)5’發(fā)起讀操作請求為例,如果所述節(jié)點(diǎn)5’接收到的是計(jì)數(shù)請求,而本節(jié)點(diǎn)中又沒有相應(yīng)的計(jì)數(shù)值時,同樣可以通過訪問節(jié)點(diǎn)5來獲取以往記錄的計(jì)數(shù)值;該處理過程同上述處理讀操作請求的過程基本原理一致,此處不再贅述。
[0141]本實(shí)施例提供的分布式緩存資源調(diào)度的方法,在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過高時,通過增加新的緩存節(jié)點(diǎn)來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,并降低所有緩存節(jié)點(diǎn)的平均負(fù)載,也就是降低分布式緩存系統(tǒng)的整體負(fù)載,使所述分布式系統(tǒng)處于一種平衡的狀態(tài);
[0142]而且,在本實(shí)施例中還提供了一種減少緩存數(shù)據(jù)丟失的方案,通過將某一段即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知該哈希段對應(yīng)的新緩存節(jié)點(diǎn),使得所述新緩存節(jié)點(diǎn)能夠根據(jù)所述位置信息訪問舊緩存節(jié)點(diǎn)以獲取相應(yīng)的數(shù)據(jù),進(jìn)而減少數(shù)據(jù)丟失的情況。
[0143]實(shí)施例五:
[0144]在本實(shí)施例中,將以一具體實(shí)例來進(jìn)一步說明通過從分布式緩存系統(tǒng)中移除緩存節(jié)點(diǎn),來實(shí)現(xiàn)分布式緩存系統(tǒng)中資源調(diào)度的方法。
[0145]首先,判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載過低,具體的判斷方式在前面已有描述,此處不再贅述;如果當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過低,則可以通過從所述“圓”上移除緩存節(jié)點(diǎn)的方式來對分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0146]具體地,在所述“圓”上增加緩存節(jié)點(diǎn)的過程,如圖11所示,包括:
[0147]1101、選取所述“圓”上總負(fù)載值最低的一對相鄰緩存節(jié)點(diǎn),例如圖12中的節(jié)點(diǎn)2和節(jié)點(diǎn)3。
[0148]1102、將所述總負(fù)載值最低的一對相鄰緩存節(jié)點(diǎn)中位于反方向上的負(fù)載節(jié)點(diǎn)從所述分布式緩存系統(tǒng)中移除。在經(jīng)過一定時長之后,被移除的緩存節(jié)點(diǎn)就會被置為關(guān)機(jī)、待機(jī)或者待命等狀態(tài)。
[0149]參看圖12所示的分布式緩存系統(tǒng)中的“圓”結(jié)構(gòu),總負(fù)載值最低的一對相鄰緩存節(jié)點(diǎn)是節(jié)點(diǎn)2和節(jié)點(diǎn)3,且節(jié)點(diǎn)2位于節(jié)點(diǎn)3的逆時針方向上。在移除了節(jié)點(diǎn)2之后,原本屬于節(jié)點(diǎn)2的覆蓋范圍內(nèi)的哈希段Q全部歸屬到了節(jié)點(diǎn)3的覆蓋范圍。這樣,由于緩存節(jié)點(diǎn)數(shù)量的減少,當(dāng)前分布式緩存系統(tǒng)中所有節(jié)點(diǎn)的平均負(fù)載升高,也就是當(dāng)前分布式緩存系統(tǒng)的整體負(fù)載升高,使得當(dāng)前系統(tǒng)維持在一定的平衡狀態(tài)。
[0150]如果在從所述“圓”上移除了一個節(jié)點(diǎn)之后,當(dāng)前分布式緩存系統(tǒng)中仍然存在負(fù)載過低的問題,那么可以重復(fù)上述操作,直至分布式緩存系統(tǒng)中的整體負(fù)載高于下限值。
[0151]不過,在所述分布式緩存系統(tǒng)中,只要存在緩存節(jié)點(diǎn)布局上的變動,就會出現(xiàn)所述“圓”中的一段hash段的數(shù)據(jù)會在訪問時丟失的情況。
[0152]針對這一問題,在本實(shí)施例中,由緩存管理裝置向即將丟失數(shù)據(jù)的hash段對應(yīng)的新緩存節(jié)點(diǎn)發(fā)送一通知消息,該通知消息中包含有所述即將丟失數(shù)據(jù)的hash段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息。所述位置信息中包含有舊緩存節(jié)點(diǎn)的IP地址和端口號,當(dāng)然還可以包含其它一些用于表征位置的信息。
[0153]結(jié)合圖12的情況,在移除了節(jié)點(diǎn)2之后,原本屬于節(jié)點(diǎn)2的覆蓋范圍內(nèi)的哈希段Q全部歸屬到了節(jié)點(diǎn)3的覆蓋范圍。此時,緩存客戶端在請求獲取hash段Q上的數(shù)據(jù)時,會向節(jié)點(diǎn)3發(fā)起該讀操作請求,而實(shí)際上hash段Q上的數(shù)據(jù)仍然保存在節(jié)點(diǎn)2中而非節(jié)點(diǎn)3中,因此就會造成hash段Q上的數(shù)據(jù)丟失。
[0154]在本實(shí)施例中,在移除了節(jié)點(diǎn)2之后,分布式緩存系統(tǒng)中的緩存管理裝置就會向節(jié)點(diǎn)3發(fā)送一通知消息,該通知消息中包含有節(jié)點(diǎn)2的位置信息(一般指IP地址和端口號)。這樣,在緩存客戶端向節(jié)點(diǎn)3請求獲取hash段Q上的數(shù)據(jù)時,如果在節(jié)點(diǎn)3中沒有相應(yīng)的數(shù)據(jù),那么節(jié)點(diǎn)3會根據(jù)所述位置信息去訪問節(jié)點(diǎn)2以獲取相應(yīng)的數(shù)據(jù)(雖然節(jié)點(diǎn)2從所述“圓”中移除,但還是可以根據(jù)位置信息對其進(jìn)行尋址的),并將獲取到的數(shù)據(jù)保存在節(jié)點(diǎn)3中,同時將所述數(shù)據(jù)返回給發(fā)起讀操作請求的緩存客戶端。
[0155]在上述通知消息中,還可以攜帶有超時時間timeout的信息;這樣,就可以將節(jié)點(diǎn)
3訪問節(jié)點(diǎn)2以獲取數(shù)據(jù)的操作限定在timeout之內(nèi)。如果上述獲取數(shù)據(jù)的操作在超出所述timeout后仍未完成,節(jié)點(diǎn)3也會停止繼續(xù)訪問節(jié)點(diǎn)2來獲取數(shù)據(jù)的過程。
[0156]更進(jìn)一步地,還可以在上述通知消息中添加hash段Q的范圍;這樣,在緩存客戶端向節(jié)點(diǎn)3請求獲取數(shù)據(jù)而在節(jié)點(diǎn)3中并沒有相應(yīng)數(shù)據(jù)的時候,節(jié)點(diǎn)3會對所述數(shù)據(jù)的鍵進(jìn)行一致性哈希運(yùn)算,并將運(yùn)算得到的哈希值跟所述通知消息中攜帶的hash段Q的范圍進(jìn)行比對,判斷所述由節(jié)點(diǎn)3計(jì)算得到哈希值是否屬于hash段Q的范圍;如果屬于,節(jié)點(diǎn)3才可以訪問節(jié)點(diǎn)2以獲取相應(yīng)的數(shù)據(jù)。通過在通知消息中添加hash段Q的范圍信息,可以更加明確節(jié)點(diǎn)3需要從節(jié)點(diǎn)2中獲取的數(shù)據(jù)是即將丟失數(shù)據(jù)的hash段Q所對應(yīng)的數(shù)據(jù),而非其它hash段的數(shù)據(jù),這樣可以減少信令消耗、節(jié)省資源。
[0157]上面的描述中僅以緩存客戶端向節(jié)點(diǎn)3發(fā)起讀操作請求為例,如果所述節(jié)點(diǎn)3接收到的是計(jì)數(shù)請求,而本節(jié)點(diǎn)中又沒有相應(yīng)的計(jì)數(shù)值時,同樣可以通過訪問節(jié)點(diǎn)2來獲取以往記錄的計(jì)數(shù)值;該處理過程同上述處理讀操作請求的過程基本原理一致,此處不再贅述。
[0158]本實(shí)施例提供的分布式緩存資源調(diào)度的方法,在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載過低時,通過移除某一緩存節(jié)點(diǎn)來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,并提高所有緩存節(jié)點(diǎn)的平均負(fù)載,也就是提高分布式緩存系統(tǒng)的整體負(fù)載,使所述分布式系統(tǒng)處于一種平衡的狀態(tài);
[0159]而且,在本實(shí)施例中還提供了一種減少緩存數(shù)據(jù)丟失的方案,通過將某一段即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知該哈希段對應(yīng)的新緩存節(jié)點(diǎn),使得所述新緩存節(jié)點(diǎn)能夠根據(jù)所述位置信息訪問舊緩存節(jié)點(diǎn)以獲取相應(yīng)的數(shù)據(jù),進(jìn)而減少數(shù)據(jù)丟失的情況。
[0160]在對實(shí)際的分布式緩存系統(tǒng)進(jìn)行負(fù)載均衡操作時,上述實(shí)施例三、實(shí)施例四和實(shí)施例五中提供的方案都不是孤立的,可以優(yōu)選地采用其中一種方案,也可以是采用其中兩種或者三種的結(jié)合,這樣可以達(dá)到更好的效果。
[0161]此外,在上述實(shí)施例三、實(shí)施例四和實(shí)施例五中,如果涉及到寫操作請求的話,那么所述緩存管理裝置在將即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知新緩存節(jié)點(diǎn)的同時,也需要將所述新緩存節(jié)點(diǎn)的位置信息告知舊緩存節(jié)點(diǎn)。
[0162]這樣,在緩存客戶端向所述新緩存節(jié)點(diǎn)發(fā)起寫操作請求時,所述新緩存節(jié)點(diǎn)會接收并保存所述緩存客戶端要求寫入的數(shù)據(jù);然后判斷所接收的數(shù)據(jù)是否屬于所述即將丟失數(shù)據(jù)的哈希段;如果數(shù)據(jù),則所述新緩存節(jié)點(diǎn)會根據(jù)所述舊緩存節(jié)點(diǎn)的位置信息將所述數(shù)據(jù)再轉(zhuǎn)發(fā)給所述舊緩存節(jié)點(diǎn)以進(jìn)行同步。同樣的,所述舊緩存節(jié)點(diǎn)在接收到屬于所述即將丟失數(shù)據(jù)的哈希段的數(shù)據(jù)時,也會根據(jù)所述新緩存節(jié)點(diǎn)的位置信息將數(shù)據(jù)轉(zhuǎn)發(fā)給所述新緩存節(jié)點(diǎn)以進(jìn)行同步,從而實(shí)現(xiàn)同一段hash段對應(yīng)的新、舊緩存節(jié)點(diǎn)之間的寫同步。
[0163]當(dāng)然,上述寫同步的過程也可以是限定在超時時間timeout內(nèi)進(jìn)行;如果超過了timeout,對數(shù)據(jù)進(jìn)行寫同步的操作仍未完成,所述新緩存節(jié)點(diǎn)也會停止數(shù)據(jù)同步的過程。
[0164]通過對同一 hash段對應(yīng)的新、舊緩存節(jié)點(diǎn)進(jìn)行寫同步,可以避免緩存節(jié)點(diǎn)位置變更后,對同一個“鍵”的讀寫不在同一個緩存節(jié)點(diǎn)的問題。
[0165]在上述實(shí)施例中,均是以“圓”的順時針作為正方向來對本發(fā)明實(shí)施例中提供的方案加以闡述的。不過,需要說明的是,以順時針作為“圓”的正方向只是本發(fā)明實(shí)施例中的一個示例;如果以逆時針方向作為所述“圓”的正方向的話,即按照逆時針方向來選擇保存數(shù)據(jù)的緩存節(jié)點(diǎn),其進(jìn)行負(fù)載均衡的過程同上述以順時針方向作為正方向時的方案的基本原理一致,因此,同樣屬于本發(fā)明的保護(hù)范圍之內(nèi)。
[0166]實(shí)施例六:
[0167]對應(yīng)于上述方法的實(shí)施例,一方面,在本實(shí)施例中提供了一種用于分布式緩存資源調(diào)度的緩存管理裝置,如圖13所示,包括判斷單元131、調(diào)整單元132以及監(jiān)控單元133 ;其中,
[0168]監(jiān)控單元133,用于對所述分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行監(jiān)控;
[0169]判斷單元131,用于根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;所述負(fù)載異常包括負(fù)載不均、負(fù)載過高或者負(fù)載過低;
[0170]調(diào)整單元132,用于在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,對所述分布式緩存系統(tǒng)中的緩存節(jié)點(diǎn)的布局進(jìn)行調(diào)整。
[0171]同前述的方法實(shí)施例中一樣,在本實(shí)施例的分布式緩存系統(tǒng)中各緩存節(jié)點(diǎn)分布在一個基于一致性哈希算法的“圓”上,并以數(shù)據(jù)的鍵到保存所述數(shù)據(jù)的緩存節(jié)點(diǎn)的方向作為所述虛擬圓的正方向;則,所述調(diào)整單元132包括:
[0172]移動模塊1321,用于移動緩存節(jié)點(diǎn)在所述虛擬圓上的位置;和/或,
[0173]增加模塊1322,用于在所述虛擬圓上增加緩存節(jié)點(diǎn);和/或,
[0174]移除模塊1323,用于從所述虛擬圓中移除緩存節(jié)點(diǎn)。
[0175]具體地,如圖14所示,所述移動模塊1321可以包括:
[0176]第一選取子模塊141,用于選取所述虛擬圓上負(fù)載差距最大的至少一對相鄰緩存節(jié)點(diǎn);
[0177]比較子模塊142,用于對所選出的每對相鄰緩存節(jié)點(diǎn)中的兩個緩存節(jié)點(diǎn)的負(fù)載值進(jìn)行比較;
[0178]移動子模塊143,用于在所選出的每對相鄰緩存節(jié)點(diǎn)中位于正方向的緩存節(jié)點(diǎn)的負(fù)載值較大時,將位于反方向的緩存節(jié)點(diǎn)沿正方向移動;在位于反方向的緩存節(jié)點(diǎn)的負(fù)載值較大時,將該緩存節(jié)點(diǎn)沿反方向移動。
[0179]如圖15所示,所述增加模塊1322可以包括:
[0180]第二選取子模塊151,用于選取所述虛擬圓上負(fù)載值最高的緩存節(jié)點(diǎn);
[0181]增設(shè)子模塊152,用于在所述負(fù)載值最高的緩存節(jié)點(diǎn)所對應(yīng)的哈希段的中間位置增設(shè)一緩存節(jié)點(diǎn)。
[0182]如圖16所示,所述移除模塊1323可以包括:
[0183]第三選取子模塊161,用于選取所述虛擬圓中總負(fù)載值最低的一對相鄰緩存節(jié)占.
[0184]移除子模塊162,用于將所述總負(fù)載值最低的一對相鄰緩存節(jié)點(diǎn)中位于反方向上的負(fù)載節(jié)點(diǎn)從所述分布式緩存系統(tǒng)中移除。
[0185]另一方面,本實(shí)施例中還提供了一種緩存節(jié)點(diǎn),如圖17所示,該緩存節(jié)點(diǎn)包括:
[0186]接收單元171,用于接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息;
[0187]獲取單元172,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù);
[0188]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0189]進(jìn)一步地,所述接收單元171接收到的通知消息中還包括:所述即將丟失數(shù)據(jù)的哈希段的范圍;那么,所述獲取單元172,可以包括:
[0190]判斷模塊1721,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,判斷所述緩存客戶端要讀取的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段;
[0191]獲取模塊1722,用于在所述判斷模塊的判斷結(jié)果為是時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù)。
[0192]如果當(dāng)前分布式緩存系統(tǒng)還涉及到寫操作的話,那么本實(shí)施例中的緩存節(jié)點(diǎn)中還可以包括:
[0193]保存單元173,用于接收并保存所述緩存客戶端或者所述舊緩存節(jié)點(diǎn)要求寫入的數(shù)據(jù);
[0194]判斷單元174,用于判斷所述緩存客戶端要求寫入的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段;
[0195]同步單元175,用于在所述判斷單元的判斷結(jié)果為是時,將所述緩存客戶端要求寫入的數(shù)據(jù)同步寫入到所述舊緩存節(jié)點(diǎn)上。
[0196]此外,如果所述接收單元171接收到的通知消息中還包括超時時間;那么,本實(shí)施例中的緩存節(jié)點(diǎn)還包括:
[0197]停止單元176,用于在超出所述超時時間后,停止數(shù)據(jù)獲取或者數(shù)據(jù)同步的操作。
[0198]此外,本實(shí)施例中還提供了一種分布式緩存系統(tǒng),如圖18所示,該分布式緩存系統(tǒng)包括:緩存管理裝置181、緩存客戶端182以及多個緩存節(jié)點(diǎn)183 ;其中,
[0199]所述緩存客戶端182,用于根據(jù)一致性哈希算法將數(shù)據(jù)分布到所述多個緩存節(jié)點(diǎn)183 上;
[0200]所述緩存管理裝置181,用于對分布式緩存系統(tǒng)中的各緩存節(jié)點(diǎn)183的負(fù)載值進(jìn)行監(jiān)控,并根據(jù)所述負(fù)載值判斷當(dāng)前分布式緩存系統(tǒng)中是否存在負(fù)載異常;若存在異常,則對所述多個緩存節(jié)點(diǎn)183的布局進(jìn)行調(diào)整;其中,所述負(fù)載異常包括負(fù)載不均、負(fù)載過高或者負(fù)載過低。
[0201]進(jìn)一步地,所述緩存管理裝置181,還用于在完成緩存節(jié)點(diǎn)183的布局調(diào)整后,向分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的新緩存節(jié)點(diǎn)發(fā)送一通知消息,該通知消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息;這樣,所述新緩存節(jié)點(diǎn)在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,就能夠根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù);
[0202]其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
[0203]本實(shí)施例中提供的分布式緩存資源調(diào)度的裝置及系統(tǒng),在當(dāng)前分布式緩存系統(tǒng)中存在負(fù)載異常時,通過移動緩存節(jié)點(diǎn)在分布式緩存系統(tǒng)的虛擬圓結(jié)構(gòu)上的位置、或者在所述虛擬圓結(jié)構(gòu)上添加或移除緩存節(jié)點(diǎn)來改變不同緩存節(jié)點(diǎn)所承擔(dān)的負(fù)載量,實(shí)現(xiàn)分布式緩存系統(tǒng)中資源分布的自動化調(diào)度,使所述分布式緩存系統(tǒng)的資源分布處于一種平衡狀態(tài);而且,在本實(shí)施例所提供的方案中,通過將某一段即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息告知該哈希段對應(yīng)的新緩存節(jié)點(diǎn),使得所述新緩存節(jié)點(diǎn)能夠根據(jù)所述位置信息訪問舊緩存節(jié)點(diǎn)以獲取相應(yīng)的數(shù)據(jù),進(jìn)而減少數(shù)據(jù)丟失的情況。
[0204]通過以上實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以全部通過硬件來實(shí)施?;谶@樣的理解,本發(fā)明的技術(shù)方案對【背景技術(shù)】做出貢獻(xiàn)的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0205]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種分布式緩存資源調(diào)度的方法,其特征在于,包括: 接收緩存管理裝置發(fā)送的通知消息,該通知消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息; 在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù); 其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通知消息中還包括:所述即將丟失數(shù)據(jù)的哈希段的范圍;則, 所述根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)來獲取并保存所述數(shù)據(jù),包括: 判斷所述緩存客戶端要讀取的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段; 如果屬于,則根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括: 接收并保存所述緩存客戶端或者所述舊緩存節(jié)點(diǎn)要求寫入的數(shù)據(jù); 判斷所述緩存客戶端要求寫入的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段; 如果屬于,則將所述緩存客戶端要求寫入的數(shù)據(jù)同步寫入到所述舊緩存節(jié)點(diǎn)上。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述通知消息中還包括超時時間;貝U,所述方法還包括: 在超出所述超時時間后,停止數(shù)據(jù)獲取或者數(shù)據(jù)同步的操作。
5.一種緩存節(jié)點(diǎn),其特征在于,包括: 接收單元,用于接收緩存管理裝置發(fā)送的通知消息,該消息中包含有分布式緩存系統(tǒng)的虛擬圓上即將丟失數(shù)據(jù)的哈希段對應(yīng)的舊緩存節(jié)點(diǎn)的位置信息; 獲取單元,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù); 其中,所述即將丟失數(shù)據(jù)的哈希段是所述分布式緩存系統(tǒng)的虛擬圓上出現(xiàn)緩存節(jié)點(diǎn)布局的調(diào)整后,所歸屬的緩存節(jié)點(diǎn)有改變的哈希段。
6.根據(jù)權(quán)利要求5所述的緩存節(jié)點(diǎn),其特征在于,所述通知消息中還包括:所述即將丟失數(shù)據(jù)的哈希段的范圍;則, 所述獲取單元,包括: 判斷模塊,用于在當(dāng)前緩存節(jié)點(diǎn)上不存在緩存客戶端要讀取的數(shù)據(jù)時,判斷所述緩存客戶端要讀取的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段; 獲取模塊,用于在所述判斷模塊的判斷結(jié)果為是時,根據(jù)所述位置信息訪問所述舊緩存節(jié)點(diǎn)以獲取并保存所述數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的緩存節(jié)點(diǎn),其特征在于,該緩存節(jié)點(diǎn)還包括: 保存單元,用于接收并保存所述緩存客戶端或者所述舊緩存節(jié)點(diǎn)要求寫入的數(shù)據(jù); 判斷單元,用于判斷所述緩存客戶端要求寫入的數(shù)據(jù)的鍵對應(yīng)的哈希值是否屬于所述即將丟失的數(shù)據(jù)的哈希段; 同步單元,用于在所述判斷單元的判斷結(jié)果為是時,將所述緩存客戶端要求寫入的數(shù)據(jù)同步寫入到所述舊緩存節(jié)點(diǎn)上。
8.根據(jù)權(quán)利要求5、6或7所述的緩存節(jié)點(diǎn),其特征在于,所述通知消息中還包括超時時間;則,所述緩存節(jié)點(diǎn)還包括: 停止單元,用于在超出所述超時時間后,停止數(shù)據(jù)獲取或者數(shù)據(jù)同步的操作。
【文檔編號】H04L12/24GK104202349SQ201410186164
【公開日】2014年12月10日 申請日期:2009年12月31日 優(yōu)先權(quán)日:2009年12月31日
【發(fā)明者】陳普 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1