專(zhuān)利名稱(chēng):分布式緩存系統(tǒng)及基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種分布式緩存系統(tǒng)及基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法。
背景技術(shù):
云計(jì)算(Cloud Computing)是網(wǎng)格計(jì)算(Grid Computing)、分布式計(jì)算(Distributed Computing)、并行計(jì)算(Parallel Computing)、效用計(jì)算(UtilityComputing)、網(wǎng)絡(luò)存儲(chǔ)(Network Storage Technologies)、虛擬化(Virtualization)、負(fù)載均衡(Load Balance)等傳統(tǒng)計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。它旨在通過(guò)網(wǎng)絡(luò)把多個(gè)成本相對(duì)較低的計(jì)算實(shí)體整合成一個(gè)具有強(qiáng)大計(jì)算能力的系統(tǒng)。分布式緩存是云計(jì)算范疇中的一個(gè)領(lǐng)域,其作用是提供海量數(shù)據(jù)的分布式存儲(chǔ)服務(wù)以及高速讀寫(xiě)訪問(wèn)的能力。該分布式緩存系統(tǒng)是由若干服務(wù)器節(jié)點(diǎn)和客戶(hù)端互相連接構(gòu)成的。一般來(lái)說(shuō),寫(xiě)入的數(shù)據(jù)不可能只保存在單個(gè)服務(wù)器節(jié)點(diǎn)上,而是在多臺(tái)節(jié)點(diǎn)上保存同一個(gè)數(shù)據(jù)的副本,互為備份。數(shù)據(jù)由鍵(Key)和值(Value)兩部分構(gòu)成,其中,Key相當(dāng)于數(shù)據(jù)的索引,Value是Key所代表的數(shù)據(jù)內(nèi)容。邏輯上Key和Value是一對(duì)一的關(guān)系。服務(wù)器節(jié)點(diǎn)負(fù)責(zé)在內(nèi)存和磁盤(pán)中存儲(chǔ)和管理數(shù)據(jù),并在多個(gè)服務(wù)器節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)的多個(gè)副本,用來(lái)保證部分服務(wù)器節(jié)點(diǎn)宕機(jī)后,整個(gè)系統(tǒng)仍能使用其他副本數(shù)據(jù)繼續(xù)為應(yīng)用提供正常服務(wù);客戶(hù)端可以對(duì)服務(wù)器節(jié)點(diǎn)做數(shù)據(jù)的寫(xiě)入、讀取、更新、刪除等操作。在分布式緩存系統(tǒng)中,某個(gè)服務(wù)器節(jié)點(diǎn)故障宕機(jī)后,會(huì)丟失數(shù)據(jù),該節(jié)點(diǎn)宕機(jī)期間無(wú)法存儲(chǔ)新產(chǎn)生的數(shù)據(jù),這樣就會(huì)造成不同服務(wù)器節(jié)點(diǎn)所存儲(chǔ)的副本數(shù)據(jù)不一致,會(huì)造成應(yīng)用訪問(wèn)到錯(cuò)誤的數(shù)據(jù),這是個(gè)比較難以解決的技術(shù)問(wèn)題。
發(fā)明內(nèi)容
針對(duì)相關(guān)技術(shù)中分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后,會(huì)丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存數(shù)據(jù)不一致的問(wèn)題,本發(fā)明提供了一種分布式緩存系統(tǒng)及基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法,以至少解決上述問(wèn)題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法。根據(jù)本發(fā)明的基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法包括:在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,并執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,第一數(shù)據(jù)信息包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;在第一數(shù)據(jù)信息發(fā)送完時(shí),一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,并執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,第二數(shù)據(jù)信息包括:從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信肩、O
在上述方法中,一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息之前,還包括:主服務(wù)節(jié)點(diǎn)記錄一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求。在上述方法中,主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求之后,還包括:主服務(wù)節(jié)點(diǎn)記錄從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信肩、O在上述方法中,一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。在上述方法中,一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。 在上述方法中,在一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息之后,還包括:主服務(wù)節(jié)點(diǎn)向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)信息發(fā)送完畢的消息,并將當(dāng)前時(shí)刻記錄為第一時(shí)刻;主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息,并將當(dāng)前時(shí)刻記錄為第二時(shí)刻;主服務(wù)節(jié)點(diǎn)判斷從第一時(shí)刻至第二時(shí)刻期間,是否還存在沒(méi)有發(fā)送給一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;如果有,則繼續(xù)向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息,如果沒(méi)有,則直接向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。在上述方法中,一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)包括以下至少之一:內(nèi)存數(shù)據(jù)、磁盤(pán)數(shù)據(jù)。在上述方法中,一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息包括:磁盤(pán)數(shù)據(jù)變更信息。根據(jù)本發(fā)明的另一方面,提供了一種分布式緩存系統(tǒng)。根據(jù)本發(fā)明的分布式緩存系統(tǒng)包括:一個(gè)主服務(wù)節(jié)點(diǎn)和至少一個(gè)從服務(wù)節(jié)點(diǎn);從服務(wù)節(jié)點(diǎn)包括:第一接收模塊,用于在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,其中,第一數(shù)據(jù)信息包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;第一重構(gòu)模塊,用于執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作;第二接收模塊,用于在第一數(shù)據(jù)信息發(fā)送完時(shí),接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,其中,第二數(shù)據(jù)信息包括:從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;第二重構(gòu)模塊,用于執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作。在上述系統(tǒng)中,主服務(wù)節(jié)點(diǎn)包括:第一記錄模塊,用于記錄一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;第三接收模塊,用于接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求。在上述系統(tǒng)中,主服務(wù)節(jié)點(diǎn)還包括:第二記錄模塊,用于記錄從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信息。在上述系統(tǒng)中,第一重構(gòu)模塊包括:第一保存單元,用于將接收到的第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存;第一執(zhí)行單元,用于按照第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。在上述系統(tǒng)中,第二重構(gòu)模塊包括:第二保存單元,用于將接收到的第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存;第二執(zhí)行單元,用于按照第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。在上述系統(tǒng)中,主服務(wù)節(jié)點(diǎn)還包括:第一發(fā)送模塊,用于向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)信息發(fā)送完畢的消息;第三記錄模塊,用于將當(dāng)前時(shí)刻記錄為第一時(shí)刻;第四接收模塊,用于接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息;第四記錄模塊,用于將當(dāng)前時(shí)刻記錄為第二時(shí)刻;判斷模塊,用于主服務(wù)節(jié)點(diǎn)判斷從第一時(shí)刻至第二時(shí)刻期間,是否還存在沒(méi)有發(fā)送給一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;第二發(fā)送模塊,用于在判斷模塊輸出為是時(shí),繼續(xù)向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送第一時(shí)刻至第二時(shí)刻期間獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;在判斷模塊輸出為否時(shí),直接向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。通過(guò)本發(fā)明,解決了分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存的數(shù)據(jù)不一致的問(wèn)題,進(jìn)而達(dá)到了故障節(jié)點(diǎn)與其他正常工作節(jié)點(diǎn)的數(shù)據(jù)保持一致,大大提高了分布式緩存系統(tǒng)可用性的效果。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:圖1是根據(jù)本發(fā)明實(shí)施例的由服務(wù)器節(jié)點(diǎn)和客戶(hù)端構(gòu)成的分布式緩存系統(tǒng)示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法的流程圖;圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的分布式緩存系統(tǒng)的結(jié)構(gòu)框圖;圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布式緩存系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。圖1是根據(jù)本發(fā)明實(shí)施例的由服務(wù)器節(jié)點(diǎn)和客戶(hù)端構(gòu)成的分布式緩存系統(tǒng)示意圖。如圖1所示,在上述分布式緩存系統(tǒng)中配置多個(gè)服務(wù)器節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)和數(shù)據(jù)的副本,客戶(hù)端與分布式緩存系統(tǒng)中的多個(gè)集群服務(wù)節(jié)點(diǎn)建立連接,集群服務(wù)節(jié)點(diǎn)中的各個(gè)服務(wù)器節(jié)點(diǎn)間互相建立連接并且運(yùn)行正常。對(duì)某一個(gè)特定數(shù)據(jù)的Key,邏輯上可以根據(jù)一定的優(yōu)先級(jí)把服務(wù)器集群中某幾臺(tái)服務(wù)器節(jié)點(diǎn)看作一個(gè)協(xié)同服務(wù)器(也可以稱(chēng)為主服務(wù)節(jié)點(diǎn))和多個(gè)副本服務(wù)器(也可以稱(chēng)為從服務(wù)節(jié)點(diǎn)),不同的Key可能有不同的協(xié)同服務(wù)器和副本服務(wù)器。協(xié)同器負(fù)責(zé)處理來(lái)自客戶(hù)端的請(qǐng)求,并將數(shù)據(jù)寫(xiě)入其他幾個(gè)副本服務(wù)器。需要說(shuō)明的是,協(xié)同服務(wù)器的選取需要根據(jù)當(dāng)時(shí)的網(wǎng)絡(luò)條件。圖2是根據(jù)本發(fā)明實(shí)施例的基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法的流程圖。如圖2所示,該方法主要包括以下處理:步驟S202:在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,并執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,第一數(shù)據(jù)信息包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;步驟S204:在第一數(shù)據(jù)信息發(fā)送完時(shí),一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,并執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,第二數(shù)據(jù)信息包括:從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息。相關(guān)技術(shù)中,在分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后,會(huì)丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存數(shù)據(jù)不一致的問(wèn)題,采用如圖2所示的方法,解決了分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存的數(shù)據(jù)不一致的問(wèn)題,進(jìn)而達(dá)到了故障節(jié)點(diǎn)與其他正常工作節(jié)點(diǎn)的數(shù)據(jù)保持一致,大大提高了分布式緩存系統(tǒng)可用性的效果。優(yōu)選地,在上述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息之前,還可以包括以下處理:(I)主服務(wù)節(jié)點(diǎn)記錄一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;在優(yōu)選實(shí)施過(guò)程中,故障節(jié)點(diǎn)存儲(chǔ)的任何一條記錄,至少還有一個(gè)或多個(gè)副本數(shù)據(jù)存儲(chǔ)在其他服務(wù)節(jié)點(diǎn)上,當(dāng)故障節(jié)點(diǎn)發(fā)生故障后,主服務(wù)節(jié)點(diǎn)發(fā)送到故障節(jié)點(diǎn)的數(shù)據(jù)變更請(qǐng)求(例如:寫(xiě)入數(shù)據(jù)或刪除數(shù)據(jù))均執(zhí)行失敗,主服務(wù)節(jié)點(diǎn)會(huì)將這些變更失敗的信息記錄下來(lái),便于讓故障節(jié)點(diǎn)恢復(fù)數(shù)據(jù)信息;(2)主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求;在優(yōu)選實(shí)施過(guò)程中,一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)可以包括但不限于以下至少之一:內(nèi)存數(shù)據(jù)、磁盤(pán)數(shù)據(jù)。在優(yōu)選實(shí)施過(guò)程中,一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息可以包括但不限于:磁盤(pán)數(shù)據(jù)變更信息。例如,如果故障節(jié)點(diǎn)請(qǐng)求重構(gòu)內(nèi)存數(shù)據(jù),則向主服務(wù)節(jié)點(diǎn)發(fā)送獲取全部?jī)?nèi)存副本數(shù)據(jù)請(qǐng)求;如果故障節(jié)點(diǎn)請(qǐng)求重構(gòu)磁盤(pán)數(shù)據(jù),則先判斷故障節(jié)點(diǎn)是否因磁盤(pán)故障而替換磁盤(pán)導(dǎo)致數(shù)據(jù)全部丟失;如果是,則向主服務(wù)節(jié)點(diǎn)請(qǐng)獲取該磁盤(pán)存儲(chǔ)的全部副本數(shù)據(jù);如果不是,則只向主服務(wù)節(jié)點(diǎn)請(qǐng)求獲取故障節(jié)點(diǎn)在發(fā)生故障后產(chǎn)生的副本數(shù)據(jù)變更信息。需要說(shuō)明的是,只有在磁盤(pán)故障,而被更換了新的磁盤(pán)時(shí),磁盤(pán)數(shù)據(jù)才會(huì)全部丟失,此種情況下,需要向其他節(jié)點(diǎn)獲取全部的磁盤(pán)數(shù)據(jù),進(jìn)行數(shù)據(jù)重構(gòu);而如果磁盤(pán)本身沒(méi)有故障,數(shù)據(jù)文件仍然存在,比如只是程序異常終止服務(wù),則只需要向其他節(jié)點(diǎn)獲取在故障節(jié)點(diǎn)發(fā)生故障后,其他節(jié)點(diǎn)接收到的數(shù)據(jù)變更信息,并執(zhí)行這些數(shù)據(jù)變更操作,以此保證和其他服務(wù)節(jié)點(diǎn)副本數(shù)據(jù)一致,從而大大提高故障節(jié)點(diǎn)數(shù)據(jù)重構(gòu)的速度。優(yōu)選地,在上述主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求之后,還可以包括以下處理:主服務(wù)節(jié)點(diǎn)記錄從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信息。需要說(shuō)明的是,故障節(jié)點(diǎn)從其他服務(wù)節(jié)點(diǎn)接收和存儲(chǔ)副本數(shù)據(jù)需要一個(gè)過(guò)程,這段時(shí)間分布式緩存系統(tǒng)仍然會(huì)接收到來(lái)自UE的寫(xiě)入和/或刪除請(qǐng)求,故障節(jié)點(diǎn)可按照主服務(wù)節(jié)點(diǎn)記錄在日志中的數(shù)據(jù)變更信息,將重構(gòu)期間發(fā)送到主服務(wù)節(jié)點(diǎn)的操作重做一遍,保證上述數(shù)據(jù)變更信息全部在故障節(jié)點(diǎn)得到執(zhí)行,由此保證了故障節(jié)點(diǎn)重構(gòu)后的副本數(shù)據(jù)和其他服務(wù)節(jié)點(diǎn)是完全一致的。優(yōu)選地,上述一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作可以進(jìn)一步包括以下處理:一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。優(yōu)選地,上述一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作也可以進(jìn)一步包括以下處理:一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。優(yōu)選地,在上述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息之后,還可以包括以下處理:(I)主服務(wù)節(jié)點(diǎn)向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送第二數(shù)據(jù)信息發(fā)送完畢的消息,并將當(dāng)前時(shí)刻記錄為第一時(shí)刻(Tl);(2)主服務(wù)節(jié)點(diǎn)接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息,并將當(dāng)前時(shí)刻記錄為第二時(shí)刻(T2)。(3)主服務(wù)節(jié)點(diǎn)判斷從Tl至T2期間,是否還存在沒(méi)有發(fā)送給一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;如果有,則繼續(xù)向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息,如果沒(méi)有,則直接向一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。下面結(jié)合圖3對(duì)上述優(yōu)選實(shí)施方式做進(jìn)一步描述。圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布式緩存系統(tǒng)中的數(shù)據(jù)重構(gòu)方法的流程圖。如圖3所示,該方法可以包括以下處理步驟:步驟S302:故障節(jié)點(diǎn)故障,退出分布式緩存系統(tǒng);步驟S304:在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)發(fā)生故障后,分布式緩存系統(tǒng)中與故障節(jié)點(diǎn)存儲(chǔ)有相同數(shù)據(jù)并且充當(dāng)協(xié)同器角色的服務(wù)器節(jié)點(diǎn)(即,上述主服務(wù)節(jié)點(diǎn)),開(kāi)始記錄故障節(jié)點(diǎn)處理失敗的數(shù)據(jù)變更信息,包括刪除記錄信息和新寫(xiě)入數(shù)據(jù)信息,便于故障節(jié)點(diǎn)根據(jù)該信息恢復(fù)故障期間的數(shù)據(jù)變更;需要說(shuō)明的是,當(dāng)主服務(wù)節(jié)點(diǎn)發(fā)生故障后,會(huì)有另外一個(gè)從服務(wù)節(jié)點(diǎn)來(lái)充當(dāng)協(xié)同器角色的服務(wù)器節(jié)點(diǎn),成為新的主服務(wù)節(jié)點(diǎn),接收來(lái)自于UE的數(shù)據(jù)變更信息。步驟S306:故障節(jié)點(diǎn)排除故障、重新啟用后,先不進(jìn)行服務(wù),將節(jié)點(diǎn)當(dāng)前的狀態(tài)設(shè)置為正在進(jìn)行數(shù)據(jù)重構(gòu);步驟S308:故障節(jié)點(diǎn)向存儲(chǔ)有其相同副本數(shù)據(jù)的協(xié)同器服務(wù)器節(jié)點(diǎn)發(fā)送消息,請(qǐng)求獲取副本數(shù)據(jù)和故障后數(shù)據(jù)變更信息;步驟S310:協(xié)同器服務(wù)器節(jié)點(diǎn),收到故障節(jié)點(diǎn)的請(qǐng)求后,啟動(dòng)日志記錄,開(kāi)始記錄后續(xù)該服務(wù)器節(jié)點(diǎn)處理的來(lái)自于UE的寫(xiě)入和/或刪除操作;步驟S312:協(xié)同器服務(wù)器節(jié)點(diǎn),響應(yīng)故障節(jié)點(diǎn)獲取數(shù)據(jù)請(qǐng)求,如果故障節(jié)點(diǎn)要獲取全部?jī)?nèi)存數(shù)據(jù),則逐條遍歷獲取內(nèi)存存儲(chǔ)數(shù)據(jù),并發(fā)送到故障節(jié)點(diǎn),直到遍歷完畢;如果故障節(jié)點(diǎn)要獲取全部磁盤(pán)副本數(shù)據(jù),逐個(gè)讀取數(shù)據(jù)文件并將讀出的數(shù)據(jù)發(fā)送到故障節(jié)點(diǎn),直到遍歷完畢;如果故障節(jié)點(diǎn)要獲取故障時(shí)間點(diǎn)以后的副本數(shù)據(jù)變更信息,則根據(jù)故障時(shí)間,逐個(gè)讀取故障發(fā)生后的數(shù)據(jù)變更信息,并將讀出的數(shù)據(jù)發(fā)送至故障節(jié)點(diǎn);步驟S314:故障節(jié)點(diǎn)接收所有數(shù)據(jù),并進(jìn)行存儲(chǔ)和處理;步驟S316:協(xié)同器服務(wù)器節(jié)點(diǎn)讀取日志信息;步驟S318:協(xié)同器服務(wù)器節(jié)點(diǎn),發(fā)送數(shù)據(jù)重構(gòu)期間記錄的日志信息至故障節(jié)點(diǎn);步驟S320:故障節(jié)點(diǎn)接收到日志信息,執(zhí)行寫(xiě)入和/或刪除操作;步驟S322:協(xié)同器服務(wù)器節(jié)點(diǎn),發(fā)送完當(dāng)前日志消息后,記錄當(dāng)前時(shí)刻為T(mén)l ;步驟S324:向故障節(jié)點(diǎn)發(fā)送日志信息已發(fā)送完畢的通知消息;步驟S326:故障節(jié)點(diǎn)收到日志信息發(fā)送完畢消息后,開(kāi)始提供正常服務(wù),處理讀出、寫(xiě)入和/或刪除數(shù)據(jù)等請(qǐng)求;步驟S328:向協(xié)同器服務(wù)器節(jié)點(diǎn)發(fā)送本節(jié)點(diǎn)已開(kāi)始正常運(yùn)行的通知消息;步驟S330:協(xié)同器服務(wù)器節(jié)點(diǎn)收到故障節(jié)點(diǎn)已開(kāi)始正常運(yùn)行的消息后,記錄當(dāng)前時(shí)刻為T(mén)2 ;步驟S332:協(xié)同器服務(wù)器節(jié)點(diǎn)判斷Tl時(shí)刻至T2時(shí)刻期間是否仍有新的日志信息產(chǎn)生,如果有,則繼續(xù)執(zhí)行步驟S334,如果沒(méi)有,則轉(zhuǎn)到步驟S338 ;步驟S334:發(fā)送日志信息到故障節(jié)點(diǎn),直到日志信息發(fā)送完畢;步驟S336:故障節(jié)點(diǎn)繼續(xù)接收和處理來(lái)自正常運(yùn)行時(shí)間最長(zhǎng)服務(wù)器節(jié)點(diǎn)的日志信息,直至收到重構(gòu)數(shù)據(jù)已發(fā)送完畢的消息;步驟S338:協(xié)同器服務(wù)器節(jié)點(diǎn)發(fā)送重構(gòu)數(shù)據(jù)已發(fā)送完畢的消息;步驟S340:故障節(jié)點(diǎn)清除重構(gòu)狀態(tài)標(biāo)記,完成數(shù)據(jù)重構(gòu)。圖4是根據(jù)本發(fā)明實(shí)施例的分布式緩存系統(tǒng)的結(jié)構(gòu)框圖。如圖4所示,該分布式緩存系統(tǒng)可以包括:一個(gè)主服務(wù)節(jié)點(diǎn)10和至少一個(gè)從服務(wù)節(jié)點(diǎn)20 ;從服務(wù)節(jié)點(diǎn)20包括:第一接收模塊200,用于在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,其中,第一數(shù)據(jù)信息包括:一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;第一重構(gòu)模塊202,用于執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作;第二接收模塊204,用于在第一數(shù)據(jù)信息發(fā)送完時(shí),接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,其中,第二數(shù)據(jù)信息包括:從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;第二重構(gòu)模塊206,用于執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作。采用如圖4所示的分布式緩存系統(tǒng),解決了分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存的數(shù)據(jù)不一致的問(wèn)題,進(jìn)而實(shí)現(xiàn)了故障節(jié)點(diǎn)與其他正常工作節(jié)點(diǎn)的數(shù)據(jù)保持一致,大大提高了分布式緩存系統(tǒng)的可用性。優(yōu)選地,如圖5所示,主服務(wù)節(jié)點(diǎn)10可以包括:第一記錄模塊100,用于記錄一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息;第三接收模塊102,用于接收來(lái)自于一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取第一數(shù)據(jù)信息的請(qǐng)求。優(yōu)選地,如圖5所示,主服務(wù)節(jié)點(diǎn)10還可以包括:第二記錄模塊104,用于記錄從一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信息。
優(yōu)選地,如圖5所示,上述從服務(wù)節(jié)點(diǎn)20的第一重構(gòu)模塊202可以進(jìn)一步包括:第一保存單元(圖中未示出),用于將接收到的第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存;第一執(zhí)行單元(圖中未示出),用于按照第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。優(yōu)選地,如圖5所示,上述從服務(wù)節(jié)點(diǎn)20的第二重構(gòu)模塊206可以進(jìn)一步包括 第二保存單元(圖中未示出),用于將接收到的第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存;第二執(zhí)行單元(圖中未示出),用于按照第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。優(yōu)選地,如圖5所示,主服務(wù)節(jié)點(diǎn)10還可以包括:第一發(fā)送模塊106,用于向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述第二數(shù)據(jù)信息發(fā)送完畢的消息;第三記錄模塊108,用于將當(dāng)前時(shí)刻記錄為第一時(shí)刻;第四接收模塊110,用于接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息;第四記錄模塊112,用于將當(dāng)前時(shí)刻記錄為第二時(shí)刻;判斷模塊114,用于所述主服務(wù)節(jié)點(diǎn)判斷從所述第一時(shí)刻至所述第二時(shí)刻期間,是否還存在沒(méi)有發(fā)送給所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;第二發(fā)送模塊116,用于在所述判斷模塊輸出為是時(shí),繼續(xù)向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述第一時(shí)刻至所述第二時(shí)刻期間獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;在所述判斷模塊輸出為否時(shí),直接向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。優(yōu)選地,上述一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)可以包括但不限于以下至少之一:內(nèi)存數(shù)據(jù)、磁盤(pán)數(shù)據(jù)。優(yōu)選地,上述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息可以包括但不限于:磁盤(pán)數(shù)據(jù)變更信息。從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:分布式緩存系統(tǒng)的部分服務(wù)器節(jié)點(diǎn)發(fā)生故障宕機(jī)后丟失數(shù)據(jù),在該故障服務(wù)器節(jié)點(diǎn)排除故障再次加入系統(tǒng)后,與其他服務(wù)器節(jié)點(diǎn)保存的數(shù)據(jù)一致,大大提 高了分布式緩存系統(tǒng)的可用性。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法,所述分布式緩存系統(tǒng)包括:一個(gè)主服務(wù)節(jié)點(diǎn)和至少一個(gè)從服務(wù)節(jié)點(diǎn),其特征在于,包括: 在所述從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,并執(zhí)行與所述第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,所述第一數(shù)據(jù)信息包括:所述一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息; 在所述第一數(shù)據(jù)信息發(fā)送完時(shí),所述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,并執(zhí)行與所述第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作,其中,所述第二數(shù)據(jù)信息包括:從所述一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,所述主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息之前,還包括: 所述主服務(wù)節(jié)點(diǎn)記錄所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息; 所述主服務(wù)節(jié)點(diǎn)接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取所述第一數(shù)據(jù)信息的請(qǐng)求。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述主服務(wù)節(jié)點(diǎn)接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取所述第一數(shù)據(jù)信息的請(qǐng)求之后,還包括: 所述主服務(wù)節(jié)點(diǎn)記錄從所述一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與所述第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作包括: 所述一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的所述第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照所述第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)執(zhí)行與所述第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作包括: 所述一個(gè)或多個(gè)故障節(jié)點(diǎn)將接收到的所述第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存,和/或按照所述第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)記錄的所述第二數(shù)據(jù)信息之后,還包括: 所述主服務(wù)節(jié)點(diǎn)向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述第二數(shù)據(jù)信息發(fā)送完畢的消息,并將當(dāng)前時(shí)刻記錄為第一時(shí)刻; 所述主服務(wù)節(jié)點(diǎn)接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息,并將當(dāng)前時(shí)刻記錄為第二時(shí)刻; 所述主服務(wù)節(jié)點(diǎn)判斷從所述第一時(shí)刻至所述第二時(shí)刻期間,是否還存在沒(méi)有發(fā)送給所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;如果有,則繼續(xù)向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息,如果沒(méi)有,則直接向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的方法,其特征在于,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)包括以下至少之一:內(nèi)存數(shù)據(jù)、磁盤(pán)數(shù)據(jù)。
8.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的方法,其特征在于,所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息包括:磁盤(pán)數(shù)據(jù)變更信息。
9.一種分布式緩存系統(tǒng),其特征在于,所述分布式緩存系統(tǒng)包括:一個(gè)主服務(wù)節(jié)點(diǎn)和至少一個(gè)從服務(wù)節(jié)點(diǎn); 所述從服務(wù)節(jié)點(diǎn)包括: 第一接收模塊,用于在所述從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,其中,所述第一數(shù)據(jù)信息包括:所述一個(gè)或多個(gè)故障節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)和/或所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息; 第一重構(gòu)模塊,用于執(zhí)行與所述第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作; 第二接收模塊,用于在所述第一數(shù)據(jù)信息發(fā)送完時(shí),接收來(lái)自于所述主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,其中,所述第二數(shù)據(jù)信息包括:從所述一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始,所述主服務(wù)節(jié)點(diǎn)獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息; 第二重構(gòu)模塊,用于執(zhí)行與所述第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述主服務(wù)節(jié)點(diǎn)包括: 第一記錄模塊,用于記錄所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)生故障后至重新啟用期間的數(shù)據(jù)變更信息; 第三接收模塊,用于接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的獲取所述第一數(shù)據(jù)信息的請(qǐng)求。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述主服務(wù)節(jié)點(diǎn)還包括: 第二記錄模塊,用于記錄從所述一個(gè)或多個(gè)故障節(jié)點(diǎn)重新啟用開(kāi)始的數(shù)據(jù)變更信息。
12.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述第一重構(gòu)模塊包括: 第一保存單元,用于將接收到的所述第一數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存; 第一執(zhí)行單元,用于按照所述第一數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述第二重構(gòu)模塊包括: 第二保存單元,用于將接收到的所述第二數(shù)據(jù)信息中的數(shù)據(jù)進(jìn)行保存; 第二執(zhí)行單元,用于按照所述第二數(shù)據(jù)信息中的數(shù)據(jù)變更信息執(zhí)行寫(xiě)入和/或刪除操作。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述主服務(wù)節(jié)點(diǎn)還包括: 第一發(fā)送模塊,用于向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述第二數(shù)據(jù)信息發(fā)送完畢的消息; 第三記錄模塊,用于將當(dāng)前時(shí)刻記錄為第一時(shí)刻; 第四接收模塊,用于接收來(lái)自于所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的恢復(fù)正常服務(wù)的應(yīng)答消息; 第四記錄模塊,用于將當(dāng)前時(shí)刻記錄為第二時(shí)刻; 判斷模塊,用于所述主服務(wù)節(jié)點(diǎn)判斷從所述第一時(shí)刻至所述第二時(shí)刻期間,是否還存在沒(méi)有發(fā)送給所述一個(gè)或多個(gè)故障節(jié)點(diǎn)的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息; 第二發(fā)送模塊,用于在所述判斷模塊輸出為是時(shí),繼續(xù)向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送所述第一時(shí)刻至所述第二時(shí)刻期間獲取到的數(shù)據(jù)和/或記錄的數(shù)據(jù)變更信息;在所述判斷模塊輸出為否時(shí), 直接向所述一個(gè)或多個(gè)故障節(jié)點(diǎn)發(fā)送數(shù)據(jù)重構(gòu)完畢的消息。
全文摘要
本發(fā)明公開(kāi)了一種分布式緩存系統(tǒng)及基于分布式緩存系統(tǒng)的數(shù)據(jù)重構(gòu)方法,在上述方法中,在從服務(wù)節(jié)點(diǎn)中的一個(gè)或多個(gè)故障節(jié)點(diǎn)消除故障并重新啟用后,一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)的第一數(shù)據(jù)信息,并執(zhí)行與第一數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作;在第一數(shù)據(jù)信息發(fā)送完時(shí),一個(gè)或多個(gè)故障節(jié)點(diǎn)接收來(lái)自于主服務(wù)節(jié)點(diǎn)記錄的第二數(shù)據(jù)信息,并執(zhí)行與第二數(shù)據(jù)信息對(duì)應(yīng)的數(shù)據(jù)重構(gòu)操作。根據(jù)本發(fā)明提供的技術(shù)方案,達(dá)到了故障節(jié)點(diǎn)與其他正常工作節(jié)點(diǎn)的數(shù)據(jù)保持一致,大大提高了分布式緩存系統(tǒng)可用性的效果。
文檔編號(hào)H04L29/08GK103095767SQ20111034359
公開(kāi)日2013年5月8日 申請(qǐng)日期2011年11月3日 優(yōu)先權(quán)日2011年11月3日
發(fā)明者李豪偉, 陳典強(qiáng), 郭斌 申請(qǐng)人:中興通訊股份有限公司