一種Cache集群中刪除數(shù)據(jù)的方法及系統(tǒng)的制作方法【專利摘要】本申請公開了一種緩存(Cache)集群中刪除(Purge)數(shù)據(jù)的方法及系統(tǒng),包括對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),對設(shè)置有標(biāo)志的Cache數(shù)據(jù)進(jìn)行驗(yàn)證后訪問。本申請通過使用對遷移的Cache數(shù)據(jù)進(jìn)行置標(biāo)的方式,記錄了由于一致性哈希Cache集群狀態(tài)顛簸時(shí)引起Cache數(shù)據(jù)遷移的信息,而在由這些遷移的Cache數(shù)據(jù)提供服務(wù)時(shí),利用置標(biāo)信息對需要進(jìn)一步驗(yàn)證的該Cache數(shù)據(jù)進(jìn)行驗(yàn)證后再使用,防止了失效的Cache數(shù)據(jù)再提供服務(wù)的情況,保證了Cache集群訪問的高效準(zhǔn)確性?!緦@f明】一種Cache集群中刪除數(shù)據(jù)的方法及系統(tǒng)【
技術(shù)領(lǐng)域:
】[0001]本申請涉及內(nèi)容分發(fā)網(wǎng)絡(luò)技術(shù),尤指一種基于一致性哈希的Cache集群中刪除(Purge)數(shù)據(jù)的方法及系統(tǒng)。【
背景技術(shù):
】[0002]內(nèi)容分發(fā)網(wǎng)絡(luò)(O)N,ContentDeliveryNetwork),是通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的、在現(xiàn)有的互聯(lián)網(wǎng)(Internet)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò)。⑶N能夠?qū)崟r(shí)地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況,以及到用戶的距離和響應(yīng)時(shí)間等綜合信息,將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上。也就是說,CDN的目的是使用戶可就近取得所需內(nèi)容,以解決Internet網(wǎng)絡(luò)擁擠的狀況,從而提高用戶訪問網(wǎng)站的響應(yīng)速度。[0003]目前,⑶N已被廣泛運(yùn)用到各類中大型網(wǎng)站中,用以達(dá)到訪問速度的最優(yōu)化,從而方便分布廣泛的用戶的訪問。在CDN系統(tǒng)中,緩存(Cache)集群是基礎(chǔ)?!?br/>發(fā)明內(nèi)容】[0004]為了解決上述技術(shù)問題,本申請?zhí)峁┝艘环NCache集群中刪除數(shù)據(jù)的方法及系統(tǒng),能夠防止失效的Cache數(shù)據(jù)再提供服務(wù)的情況,保證Cache集群訪問的高效準(zhǔn)確性。[0005]為了達(dá)到本申請目的,本申請?zhí)峁┮环N緩存Cache集群中刪除數(shù)據(jù)的方法,包括:對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;[0006]訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。[0007]所述對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志包括:[0008]所述Cache集群接收到訪問請求;所述Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;[0009]在Cache設(shè)備比較出所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志。[0010]該方法還包括:在所述Cache設(shè)備比較出所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí),進(jìn)行正常處理。[0011]該方法之前還包括:[0012]在所述Cache設(shè)備系統(tǒng)初始化時(shí),建立用于存儲(chǔ)初始化的Cache設(shè)備的標(biāo)識(shí)的初始一致性哈希hash表;以及用于存儲(chǔ)當(dāng)前Cache設(shè)備檢測到的當(dāng)前Cache集群中其他存活的Cache設(shè)備的ID的當(dāng)前一致性hash表。[0013]所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與當(dāng)前Cache設(shè)備不一致,對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志具體包括:[0014]分析所述訪問請求的統(tǒng)一資源定位符URI信息,通過該URI計(jì)算purge請求一致性hash值;[0015]通過所述初始一致性hash表確定訪問請求分發(fā)的初始目標(biāo)Cache設(shè)備ID,通過當(dāng)前一致性hash表確定訪問請求分發(fā)的當(dāng)前目標(biāo)Cache設(shè)備ID;[0016]比較初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID是否一致,如果二者不一致,查找該Cache設(shè)備本地的Cache數(shù)據(jù)庫,[0017]在訪問的是不命中Miss時(shí),對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志,標(biāo)志信息為當(dāng)前時(shí)間。[0018]該方法進(jìn)一步包括:[0019]在所述訪問的是命中Hit時(shí),比較初始目標(biāo)Cache設(shè)備上一次宕機(jī)時(shí)間與當(dāng)前Cache設(shè)備的置標(biāo)時(shí)間,如果置標(biāo)時(shí)間晚于宕機(jī)時(shí)間,則直接提供服務(wù);如果置標(biāo)時(shí)間早于宕機(jī)時(shí)間,則從源服務(wù)器校驗(yàn)該Cache數(shù)據(jù)是否為最新的數(shù)據(jù)。[0020]如果訪問的是Miss,該方法還包括:從源服務(wù)器讀取數(shù)據(jù),并將數(shù)據(jù)寫入當(dāng)前Cache設(shè)備。[0021]如果訪問的是Hit,該方法還包括:讀取Cache數(shù)據(jù)提供服務(wù)。[0022]如果所述初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID—致,該方法還包括:按照現(xiàn)有Cache訪問流程進(jìn)行訪問。[0023]在出現(xiàn)Cache設(shè)備發(fā)生宕機(jī)、恢復(fù)服務(wù)時(shí),該方法還包括:同步更新所述當(dāng)前一致性hash表。[0024]所述訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)包括:[0025]所述Cache集群接收到訪問請求;所述Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;[0026]所述Cache設(shè)備判斷被訪問的Cache數(shù)據(jù)是否已被置標(biāo),如果被置標(biāo),進(jìn)一步確定是否已經(jīng)被驗(yàn)證過,如果未被驗(yàn)證過,則從源服務(wù)器驗(yàn)證該cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理;[0027]如果被訪問的Cache數(shù)據(jù)未被置標(biāo),則正常處理。[0028]所述確定是否已被驗(yàn)證過包括:對比所述被置標(biāo)的時(shí)間與宕機(jī)的Cache設(shè)備的恢復(fù)服務(wù)時(shí)間,如果置標(biāo)的時(shí)間晚于恢復(fù)服務(wù)時(shí)間,則表明已經(jīng)驗(yàn)證過;否則表明未被驗(yàn)證過。[0029]當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)宕機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí),該方法還包括:在該Cache設(shè)備上執(zhí)行歷史purge請求后,重新將其加入Cache集群中。[0030]當(dāng)所述Cache集群中的所有Cache設(shè)備正常服務(wù)狀態(tài)時(shí),該方法還包括:所述Cache集群按照現(xiàn)有一致性hash訪問,一致性hash存儲(chǔ);[0031]對接收到的purge請求,所述Cache集群接收到purge請求;所述Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備處理purge請求。[0032]當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)巖機(jī)狀態(tài)時(shí);或者,[0033]當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)宕機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí);或者,[0034]當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)巖機(jī)的Cache設(shè)備恢復(fù)后再巖機(jī)時(shí),該方法還包括:[0035]所述Cache集群接收到purge請求;所述Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備處理purge請求。[0036]—種Cache集群中刪除數(shù)據(jù)的系統(tǒng),包括位于Cache集群中的Cache設(shè)備;Cache設(shè)備,用于對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。[0037]所述Cache集群的Cache集群接口,用于接收訪問請求;進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;[0038]所述Cache設(shè)備,具體用于比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作;判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且未被驗(yàn)證過,則經(jīng)由所述Cache集群接口從源服務(wù)器驗(yàn)證該Cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理;[0039]其中,所述確定是否已被驗(yàn)證過包括:對比所述被置標(biāo)的時(shí)間與宕機(jī)的Cache設(shè)備的恢復(fù)服務(wù)時(shí)間,如果置標(biāo)的時(shí)間晚于恢復(fù)服務(wù)時(shí)間,則表明已經(jīng)驗(yàn)證過;否則表明未被驗(yàn)證過。[0040]所述Cache設(shè)備,還用于在Cache設(shè)備比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí);或者,在確定被訪問的Cache數(shù)據(jù)未被置標(biāo);或者,判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且已經(jīng)被驗(yàn)證過;則,正常處理。[0041]所述Cache設(shè)備,還用于執(zhí)行歷史purge請求,重新加入Cache集群中。[0042]所述Cache集群的Cache集群接口,還用于接收purge請求;進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;[0043]所述Cache設(shè)備,還用于處理purge請求。[0044]本申請?zhí)峁┑姆桨赴▽收螩ache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),對設(shè)置有標(biāo)志的Cache數(shù)據(jù)進(jìn)行驗(yàn)證后訪問。本申請方案通過使用對遷移的Cache數(shù)據(jù)進(jìn)行置標(biāo)的方式,記錄了由于一致性哈希Cache集群狀態(tài)顛簸時(shí)引起Cache數(shù)據(jù)遷移的信息,而在由這些遷移的Cache數(shù)據(jù)提供服務(wù)時(shí),利用置標(biāo)信息對需要進(jìn)一步驗(yàn)證的該Cache數(shù)據(jù)進(jìn)行驗(yàn)證后再使用,防止了失效的Cache數(shù)據(jù)再提供服務(wù)的情況,保證了Cache集群訪問的高效準(zhǔn)確性。[0045]本申請的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本申請而了解。本申請的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得?!緦@綀D】【附圖說明】[0046]附圖用來提供對本申請技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請的實(shí)施例一起用于解釋本申請的技術(shù)方案,并不構(gòu)成對本申請技術(shù)方案的限制。[0047]圖1為本申請Cache集群中刪除數(shù)據(jù)的方法的流程圖;[0048]圖2為本申請Cache集群中刪除數(shù)據(jù)的系統(tǒng)的組成結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】[0049]為使本申請的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對本申請的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。[0050]在本申請一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。[0051]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。[0052]計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。[0053]在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。[0054]一致性哈希(consistenthash)處理最基礎(chǔ)的思想即目標(biāo)就是:對對象(object)和Cache設(shè)備(Cachemachine)使用相同的哈希(hash)函數(shù)。這樣做的好處是能夠?qū)ache設(shè)備映射到一段區(qū)間(interval)上,而這段interval則會(huì)包含一定數(shù)目的對象的hash值。如果某臺(tái)Cache設(shè)備被移除,那么該Cache設(shè)備所映射到的interval被與該Cache設(shè)備相鄰的一個(gè)Cache設(shè)備托管,其他所有的Cache設(shè)備都不用變,這種情況在實(shí)際運(yùn)行環(huán)境中為常態(tài)。但是,在一個(gè)一致性哈希Cache集群中,如果Cache集群中的Cache設(shè)備發(fā)生故障,那么整個(gè)Cache集群就會(huì)發(fā)生顛簸,破壞Cache集群數(shù)據(jù)的冗余性(有一份數(shù)據(jù)同時(shí)存放在多臺(tái)Cache設(shè)備上)和及時(shí)性(Cache設(shè)備中存在的數(shù)據(jù)有可能是舊的)。[0055]因此,Cache集群系統(tǒng)需要?jiǎng)h除(purge)—些指定的Cache數(shù)據(jù),比如業(yè)務(wù)確定已經(jīng)過期的數(shù)據(jù)等,從而讓客戶不會(huì)再訪問到這些Cache數(shù)據(jù)。而如何高效準(zhǔn)確地purge這些Cache數(shù)據(jù)目前還沒有具體的實(shí)現(xiàn)方案。[0056]圖1為本申請Cache集群中刪除數(shù)據(jù)的方法的流程圖,如圖1所示,包括以下步驟:[0057]步驟100:對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志。[0058]本步驟中,當(dāng)Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)巖機(jī)狀態(tài)時(shí),原本訪問、存儲(chǔ)到當(dāng)前出現(xiàn)宕機(jī)狀態(tài)的Cache設(shè)備的Cache數(shù)據(jù)會(huì)遷移至能夠正常服務(wù)的其他Cache設(shè)備上,此時(shí),本申請?zhí)峁┑姆椒〞?huì)對遷移的Cache數(shù)據(jù)進(jìn)行置標(biāo)操作,即設(shè)置一個(gè)標(biāo)志,用于標(biāo)識(shí)該Cache數(shù)據(jù)是遷移的數(shù)據(jù)。[0059]本步驟包括:Cache集群接收到訪問請求;Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備,具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員的公知技術(shù),這里不再贅述;Cache設(shè)備比較該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身是否一致,在Cache設(shè)備比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),表明該轉(zhuǎn)發(fā)的Cache設(shè)備與當(dāng)前Cache設(shè)備是不同的Cache設(shè)備,則對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作。[0060]進(jìn)一步地,在Cache設(shè)備比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí),表明該轉(zhuǎn)發(fā)的Cache設(shè)備與當(dāng)前Cache設(shè)備是同一Cache設(shè)備,貝U退出本申請流程,進(jìn)行正常處理。[0061]其中,比較訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與當(dāng)前Cache設(shè)備是否一致的具體實(shí)現(xiàn)包括:[0062]在Cache設(shè)備系統(tǒng)初始化時(shí),建立兩張一致性hash表,一張為用于存儲(chǔ)初始化的Cache設(shè)備的標(biāo)識(shí)(ID)的初始一致性hash表(orig_hash_table);另一張為用于存儲(chǔ)當(dāng)前Cache設(shè)備檢測到的當(dāng)前Cache集群中其他存活的Cache設(shè)備的ID的當(dāng)前一致性hash表(now_hash_table)。其中,在出現(xiàn)Cache設(shè)備發(fā)生巖機(jī)、恢復(fù)服務(wù)時(shí),會(huì)同步觸發(fā)對當(dāng)前一致性hash表的更新。[0063]分析訪問請求的統(tǒng)一資源定位符(URI)信息,通過該URI計(jì)算該purge請求一致性hash值。通過orig_hash_table表確定訪問請求分發(fā)的初始目標(biāo)Cache設(shè)備ID,通過now_hash_table表確定訪問請求分發(fā)的當(dāng)前目標(biāo)Cache設(shè)備ID;比較初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID是否一致,如果二者不一致,表明初始目標(biāo)Cache設(shè)備和當(dāng)前目標(biāo)Cache設(shè)備不相同,此時(shí),說明被分配的處理當(dāng)前訪問請求的Cache設(shè)備發(fā)生了變化,查找該Cache設(shè)備本地的Cache數(shù)據(jù)庫,[0064]如果訪問的是不命中(Miss),那么,Cache設(shè)備對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作,標(biāo)志信息為當(dāng)前時(shí)間(遷移時(shí)間);同時(shí)從源站獲得數(shù)據(jù);[0065]如果訪問的是命中(Hit),那么,只需比較初始目標(biāo)Cache設(shè)備上一次宕機(jī)時(shí)間與當(dāng)前Cache設(shè)備的置標(biāo)時(shí)間,如果置標(biāo)時(shí)間晚于宕機(jī)時(shí)間,則直接提供服務(wù);如果置標(biāo)時(shí)間早于宕機(jī)時(shí)間,則從源服務(wù)器校驗(yàn)該Cache數(shù)據(jù)是否為最新的數(shù)據(jù);[0066]進(jìn)一步地,如果初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID—致,表明被分配的處理當(dāng)前訪問請求的Cache設(shè)備沒有發(fā)生變化,按照現(xiàn)有Cache訪問流程進(jìn)行訪問即可:如果訪問的是Miss,從源站讀取數(shù)據(jù),并將數(shù)據(jù)寫入當(dāng)前Cache設(shè)備;如果訪問的是Hit,則讀取Cache數(shù)據(jù)提供服務(wù)。[0067]步驟101:訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。[0068]在Cache集群中有一臺(tái)或者多臺(tái)宕機(jī)的Cache設(shè)備恢復(fù)后再宕機(jī)的狀態(tài)下,由于一臺(tái)或者多臺(tái)從宕機(jī)狀態(tài)恢復(fù)的Cache設(shè)備再次宕機(jī),使得用戶會(huì)重新訪問被遷移到另外一直正常服務(wù)的Cache設(shè)備的被置標(biāo)的Cache數(shù)據(jù)。而這部分Cache數(shù)據(jù)是沒有被purge過的,因此有可能是舊的內(nèi)容。因此,本步驟中,需要在訪問到這些被置標(biāo)的Cache數(shù)據(jù)時(shí),從源站服務(wù)器對其進(jìn)行驗(yàn)證,以保證訪問的Cache數(shù)據(jù)是最新的。具體包括:[0069]Cache集群接收到訪問請求;Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;Cache設(shè)備判斷被訪問的Cache數(shù)據(jù)是否已被置標(biāo),如果被置標(biāo),進(jìn)一步確定是否已經(jīng)被驗(yàn)證過,如果未被驗(yàn)證過,則從源服務(wù)器驗(yàn)證該cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理;如果被訪問的Cache數(shù)據(jù)未被置標(biāo),則正常處理。其中,確定是否已被驗(yàn)證過為:對比置標(biāo)的時(shí)間與宕機(jī)的Cache設(shè)備的恢復(fù)服務(wù)時(shí)間,如果置標(biāo)的時(shí)間晚于恢復(fù)服務(wù)時(shí)間,則表明已經(jīng)驗(yàn)證過;否則表明未被驗(yàn)證過。[0070]本申請方法通過使用對遷移的Cache數(shù)據(jù)進(jìn)行置標(biāo)的方式,記錄了由于一致性哈希Cache集群狀態(tài)顛簸時(shí)引起Cache數(shù)據(jù)遷移的信息,而在由這些遷移的Cache數(shù)據(jù)提供服務(wù)時(shí),利用置標(biāo)信息對需要進(jìn)一步驗(yàn)證的該Cache數(shù)據(jù)進(jìn)行驗(yàn)證后再使用,防止了失效的Cache數(shù)據(jù)再提供服務(wù)的情況,保證了Cache集群訪問的高效準(zhǔn)確性。[0071]本申請方法還包括:當(dāng)Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)巖機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí),正常服務(wù)的Cache設(shè)備中服務(wù)的Cache數(shù)據(jù)是最新的內(nèi)容。此時(shí),一臺(tái)或多臺(tái)宕機(jī)的Cache設(shè)備恢復(fù)提供服務(wù)時(shí),其原本被遷移的Cache數(shù)據(jù)會(huì)回遷,需要在該Cache設(shè)備上執(zhí)行歷史purge請求后,重新將其加入Cache集群中。其中,歷史purge請求指的是,在巖機(jī)的Cache設(shè)備發(fā)生巖機(jī)到該Cache設(shè)備恢復(fù)服務(wù)這段時(shí)間內(nèi),整個(gè)Cache集群接收到的所有的purge請求。[0072]本申請方法還包括:當(dāng)Cache集群中的所有Cache設(shè)備正常服務(wù)狀態(tài)時(shí),Cache集群按照現(xiàn)有一致性hash訪問,一致性hash存儲(chǔ)。因此,只要按照一致性hashpurge即能保證訪問到的內(nèi)容為最新。對purge請求的處理包括:Cache集群接收到purge請求;Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;Cache設(shè)備處理purge請求。具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員公知技術(shù),這里不再贅述。[0073]本申請方法還包括:當(dāng)Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)巖機(jī)狀態(tài)時(shí),或者,當(dāng)Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)宕機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí),或者,當(dāng)Cache集群中有一臺(tái)或者多臺(tái)巖機(jī)的Cache設(shè)備恢復(fù)后再巖機(jī)時(shí),對purge請求的處理包括:Cache集群接收到purge請求;Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;Cache設(shè)備處理purge請求。具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員公知技術(shù),這里不再贅述。[0074]圖2為本申請Cache集群中刪除數(shù)據(jù)的系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖2所示,包括位于Cache集群中的Cache設(shè)備;[0075]Cache設(shè)備,用于對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。[0076]具體地,[0077]Cache集群接口,用于接收訪問請求;進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;[0078]Cache設(shè)備,用于比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作;判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且未被驗(yàn)證過,則經(jīng)由Cache集群接口從源服務(wù)器驗(yàn)證該Cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理。[0079]Cache設(shè)備,還進(jìn)一步用于,在Cache設(shè)備比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí),進(jìn)行正常處理;在確定被訪問的Cache數(shù)據(jù)未被置標(biāo),則正常處理;判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且已經(jīng)被驗(yàn)證過,則正常處理。[0080]Cache設(shè)備,還進(jìn)一步用于,執(zhí)行歷史purge請求,重新加入Cache集群中。[0081]Cache集群接口,還用于接收purge請求;進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;Cache設(shè)備,還用于處理purge請求。[0082]下面結(jié)合實(shí)施例對本申請方法進(jìn)行詳細(xì)描述。當(dāng)整個(gè)Cache集群在系統(tǒng)發(fā)生顛簸時(shí),提供服務(wù)的Cache設(shè)備可以分為在線服務(wù)Cache設(shè)備和宕機(jī)恢復(fù)Cache設(shè)備。其中,[0083]在線服務(wù)Cache設(shè)備的工作流程包括:[0084](I)Cache設(shè)備系統(tǒng)初始化。建立兩張一致性hash表。一張為用于存儲(chǔ)初始化的Cache設(shè)備的標(biāo)識(shí)(ID)的初始一致性hash表(orig_hash_table);另一張為用于存儲(chǔ)當(dāng)前Cache設(shè)備檢測到的當(dāng)前Cache集群中其他存活的Cache設(shè)備的ID的當(dāng)前一致性hash表(now_hash_table)。其中,在出現(xiàn)Cache設(shè)備發(fā)生巖機(jī)、恢復(fù)服務(wù)時(shí),會(huì)同步觸發(fā)對當(dāng)前一致性hash表的更新。[0085](2)當(dāng)接收到訪問請求時(shí),通過分析訪問請求得到請求的URI信息,通過該URI信息計(jì)算該purge請求一致性hash值。Hash計(jì)算函數(shù)可以定義為無符號(hào)整形哈希值:unsignedintcompute_hash(char*uri);通過orig_hash_table表確定該請求分發(fā)的初始目標(biāo)Cache設(shè)備的ID即orig_hash_table[hash],通過now_hash_table表確定該訪問請求分發(fā)的當(dāng)前目標(biāo)Cache設(shè)備的ID即now_hash_table[hash];比較orig_hash_table[hash]和now_hash_table[hash]是否一致,如果二者一致,表明當(dāng)前目標(biāo)Cache設(shè)備與初始目標(biāo)Cache設(shè)備為同一個(gè)Cache設(shè)備,那么,由于被分配至的處理當(dāng)前訪問請求的Cache設(shè)備沒有發(fā)生變化,則按照現(xiàn)有Cache訪問流程進(jìn)行訪問即可:如果訪問的是Miss,從源站讀取數(shù)據(jù),并將數(shù)據(jù)寫入當(dāng)前Cache設(shè)備;如果訪問的是Hit,則讀取Cache數(shù)據(jù)提供服務(wù);[0086]如果比較出orig_hash_table[hash]和now_hash_table[hash]不一致,表明當(dāng)前目標(biāo)Cache設(shè)備和初始目標(biāo)Cache設(shè)備不是同一Cache設(shè)備,那么,由于被分配的處理當(dāng)前訪問請求的Cache設(shè)備發(fā)生變化,因此需要進(jìn)一步查找該Cache設(shè)備本地的Cache數(shù)據(jù)庫,如果訪問的是Miss,那么,Cache設(shè)備對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作,標(biāo)志信息為當(dāng)前時(shí)間(遷移時(shí)間);同時(shí)從源站獲得數(shù)據(jù);[0087]如果訪問的是Hit,那么,比較初始目標(biāo)Cache設(shè)備上一次巖機(jī)時(shí)間與當(dāng)前Cache設(shè)備的置標(biāo)時(shí)間,如果置標(biāo)時(shí)間晚于宕機(jī)時(shí)間,則直接提供服務(wù);如果置標(biāo)時(shí)間早于宕機(jī)時(shí)間,則從源校驗(yàn)該Cache是否為最新的數(shù)據(jù)。[0088]當(dāng)接收到訪問請求purge請求時(shí),根據(jù)分析purge請求得到的請求相關(guān)輸入字符串,計(jì)算該purge請求一致性hash。通過now_hash_table表確定該purge請求分發(fā)的目標(biāo)Cache設(shè)備;發(fā)送該purge請求至目標(biāo)Cache設(shè)備;目標(biāo)Cache設(shè)備執(zhí)行purge數(shù)據(jù)處理;[0089](3)對于宕機(jī)后恢復(fù)的Cache設(shè)備,在宕機(jī)后恢復(fù)的Cache設(shè)備提供服務(wù)之前,獲取該Cache設(shè)備的巖機(jī)期間的purge歷史;根據(jù)purge歷史,對該巖機(jī)后恢復(fù)的Cache設(shè)備進(jìn)行purge處理;purge處理完成后,重新將該巖機(jī)后恢復(fù)的Cache設(shè)備加入Cache集群,開始提供服務(wù)。其中,purge歷史即歷史purge請求,指的是在巖機(jī)的Cache設(shè)備發(fā)生巖機(jī)到該Cache設(shè)備恢復(fù)服務(wù)這段時(shí)間內(nèi),整個(gè)Cache集群接收到的所有的purge請求。歷史purge請求一般保存于Purge系統(tǒng)的額外部分,由purge系統(tǒng)的業(yè)務(wù)系統(tǒng)提供(指明哪些數(shù)據(jù)已經(jīng)失效),具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員慣用手段,并不屬于本申請的保護(hù)范圍,這里不再贅述。[0090]本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本申請實(shí)施例所提供的裝置的各組成部分,以及方法中的各步驟,它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上??蛇x地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn)。從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本申請不限制于任何特定的硬件和軟件結(jié)合。[0091]雖然本申請所揭露的實(shí)施方式如上,但所述的內(nèi)容僅為便于理解本申請而采用的實(shí)施方式,并非用以限定本申請。任何本申請所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本申請所揭露的精神和范圍的前提下,可以在實(shí)施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本申請的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)?!緳?quán)利要求】1.一種緩存Cache集群中刪除數(shù)據(jù)的方法,其特征在于,包括:對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志包括:所述Cache集群接收到訪問請求;所述Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;在Cache設(shè)備比較出所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法還包括:在所述Cache設(shè)備比較出所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí),進(jìn)行正常處理。4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,該方法之前還包括:在所述Cache設(shè)備系統(tǒng)初始化時(shí),建立用于存儲(chǔ)初始化的Cache設(shè)備的標(biāo)識(shí)的初始一致性哈希hash表;以及用于存儲(chǔ)當(dāng)前Cache設(shè)備檢測到的當(dāng)前Cache集群中其他存活的Cache設(shè)備的ID的當(dāng)前一致性hash表。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述訪問請求原本轉(zhuǎn)發(fā)的Cache設(shè)備與當(dāng)前Cache設(shè)備不一致,對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志具體包括:分析所述訪問請求的統(tǒng)一資源定位符URI信息,通過該URI計(jì)算purge請求一致性hash值;通過所述初始一致性hash表確定訪問請求分發(fā)的初始目標(biāo)Cache設(shè)備ID,通過當(dāng)前一致性hash表確定訪問請求分發(fā)的當(dāng)前目標(biāo)Cache設(shè)備ID;比較初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID是否一致,如果二者不一致,查找該Cache設(shè)備本地的Cache數(shù)據(jù)庫,在訪問的是不命中Miss時(shí),對所述遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志,標(biāo)志信息為當(dāng)前時(shí)間。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法進(jìn)一步包括:在所述訪問的是命中Hit時(shí),比較初始目標(biāo)Cache設(shè)備上一次巖機(jī)時(shí)間與當(dāng)前Cache設(shè)備的置標(biāo)時(shí)間,如果置標(biāo)時(shí)間晚于宕機(jī)時(shí)間,則直接提供服務(wù);如果置標(biāo)時(shí)間早于宕機(jī)時(shí)間,則從源服務(wù)器校驗(yàn)該Cache數(shù)據(jù)是否為最新的數(shù)據(jù)。7.根據(jù)權(quán)利要求5所述的方法,其特征在于,如果訪問的是Miss,該方法還包括:從源服務(wù)器讀取數(shù)據(jù),并將數(shù)據(jù)寫入當(dāng)前Cache設(shè)備。8.根據(jù)權(quán)利要求6所述的方法,其特征在于,如果訪問的是Hit,該方法還包括:讀取Cache數(shù)據(jù)提供服務(wù)。9.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,如果所述初始目標(biāo)Cache設(shè)備ID與當(dāng)前目標(biāo)Cache設(shè)備ID—致,該方法還包括:按照現(xiàn)有Cache訪問流程進(jìn)行訪問。10.根據(jù)權(quán)利要求4所述的方法,其特征在于,在出現(xiàn)Cache設(shè)備發(fā)生宕機(jī)、恢復(fù)服務(wù)時(shí),該方法還包括:同步更新所述當(dāng)前一致性hash表。11.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)包括:所述Cache集群接收到訪問請求;所述Cache集群進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備判斷被訪問的Cache數(shù)據(jù)是否已被置標(biāo),如果被置標(biāo),進(jìn)一步確定是否已經(jīng)被驗(yàn)證過,如果未被驗(yàn)證過,則從源服務(wù)器驗(yàn)證該cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理;如果被訪問的Cache數(shù)據(jù)未被置標(biāo),則正常處理。12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述確定是否已被驗(yàn)證過包括:對比所述被置標(biāo)的時(shí)間與宕機(jī)的Cache設(shè)備的恢復(fù)服務(wù)時(shí)間,如果置標(biāo)的時(shí)間晚于恢復(fù)服務(wù)時(shí)間,則表明已經(jīng)驗(yàn)證過;否則表明未被驗(yàn)證過。13.根據(jù)權(quán)利要求1、2或11所述的方法,其特征在于,當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)宕機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí),該方法還包括:在該Cache設(shè)備上執(zhí)行歷史purge請求后,重新將其加入Cache集群中。14.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述Cache集群中的所有Cache設(shè)備正常服務(wù)狀態(tài)時(shí),該方法還包括:所述Cache集群按照現(xiàn)有一致性hash訪問,一致性hash存儲(chǔ);對接收到的purge請求,所述Cache集群接收到purge請求;所述Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備處理purge請求。15.根據(jù)權(quán)利要求1、2或11所述的方法,其特征在于,當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)巖機(jī)狀態(tài)時(shí);或者,當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)Cache設(shè)備出現(xiàn)宕機(jī)后恢復(fù)提供服務(wù)狀態(tài)時(shí);或者,當(dāng)所述Cache集群中有一臺(tái)或者多臺(tái)巖機(jī)的Cache設(shè)備恢復(fù)后再巖機(jī)時(shí),該方法還包括:所述Cache集群接收到purge請求;所述Cache集群進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備處理purge請求。16.—種Cache集群中刪除數(shù)據(jù)的系統(tǒng),其特征在于,包括位于Cache集群中的Cache設(shè)備;Cache設(shè)備,用于對故障Cache設(shè)備遷移的Cache數(shù)據(jù)設(shè)置標(biāo)志;訪問Cache集群中的Cache數(shù)據(jù)時(shí),驗(yàn)證設(shè)置有標(biāo)志的Cache數(shù)據(jù)。17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述Cache集群的Cache集群接口,用于接收訪問請求;進(jìn)行一致性哈希處理,將訪問請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備,具體用于比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身不一致時(shí),對Cache數(shù)據(jù)進(jìn)行置標(biāo)操作;判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且未被驗(yàn)證過,則經(jīng)由所述Cache集群接口從源服務(wù)器驗(yàn)證該Cache數(shù)據(jù),如果已被經(jīng)驗(yàn)證過,則正常處理;其中,所述確定是否已被驗(yàn)證過包括:對比所述被置標(biāo)的時(shí)間與宕機(jī)的Cache設(shè)備的恢復(fù)服務(wù)時(shí)間,如果置標(biāo)的時(shí)間晚于恢復(fù)服務(wù)時(shí)間,則表明已經(jīng)驗(yàn)證過;否則表明未被驗(yàn)證過。18.根據(jù)權(quán)利要求17所述的系統(tǒng),其特征在于,所述Cache設(shè)備,還用于在Cache設(shè)備比較出該訪問請求原本該轉(zhuǎn)發(fā)的Cache設(shè)備與自身一致時(shí);或者,在確定出被訪問的Cache數(shù)據(jù)未被置標(biāo);或者,判斷出被訪問的Cache數(shù)據(jù)已被置標(biāo)且已經(jīng)被驗(yàn)證過;則,正常處理。19.根據(jù)權(quán)利要求17或18所述的系統(tǒng),其特征在于,所述Cache設(shè)備,還用于執(zhí)行歷史purge請求,重新加入Cache集群中。20.根據(jù)權(quán)利要求16?18任一項(xiàng)所述的系統(tǒng),其特征在于,所述Cache集群的Cache集群接口,還用于接收purge請求;進(jìn)行一致性哈希處理,將purge請求轉(zhuǎn)發(fā)給對應(yīng)的Cache設(shè)備;所述Cache設(shè)備,還用于處理purge請求?!疚臋n編號(hào)】H04L29/08GK104301345SQ201310300828【公開日】2015年1月21日申請日期:2013年7月17日優(yōu)先權(quán)日:2013年7月17日【發(fā)明者】陳斌申請人:阿里巴巴集團(tuán)控股有限公司