專利名稱:分布式緩存管理系統(tǒng)和實現(xiàn)分布式緩存管理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式緩存管理技術(shù)領(lǐng)域,具體而言,涉及一種分布式緩存管理系統(tǒng)和一種實現(xiàn)分布式緩存管理的方法。
背景技術(shù):
在B2C電商實踐中,為了改善用戶瀏覽圖片的速度,但同時減少圖片存儲服務(wù)器的訪問壓力,采用了 Memcached (分布式內(nèi)存對象緩存服務(wù)器)實現(xiàn)cache (高速緩沖存儲器)集群,達(dá)到分擔(dān)來自前端的請求。在運營的過程中,隨著Memcached中實例的不斷增加,開始出現(xiàn)以下問題I · η臺分布的Memcached做實際數(shù)據(jù)的存儲,每臺Memcached存放數(shù)據(jù)總量的一個子集(分布算法Key映射整數(shù)值,再根據(jù)已有server數(shù)取模),隨著Memcached實例數(shù)量的增加,管理、維護的難度也相應(yīng)增加; 2.新增X臺Memcached進(jìn)行擴容,已有數(shù)據(jù)需要作大規(guī)模遷移,且同時一定時間內(nèi)cache命中較低;3.如有Memcached服務(wù)異常退出,如不能迅速拉起,會影響前端訪問的體驗,或者可能導(dǎo)致數(shù)據(jù)分布的重計算,使得Memcached的SLA(Service-Level Agreement,服務(wù)等級協(xié)議)級別較低;4.因為缺乏統(tǒng)一分配、管理機制,可能會存在數(shù)據(jù)在多個Memcached存在實例的情況,導(dǎo)致數(shù)據(jù)不一致或不同版本數(shù)據(jù)沖突的情況。因此,需要一種新的分布式緩存管理技術(shù),可以對分布式內(nèi)存對象緩存服務(wù)器中的數(shù)據(jù)進(jìn)行有效管理,提高請求響應(yīng)和數(shù)據(jù)處理的效率。
發(fā)明內(nèi)容
本發(fā)明正是基于上述問題,提出了一種新的分布式緩存管理技術(shù),可以對分布式內(nèi)存對象緩存服務(wù)器中的數(shù)據(jù)進(jìn)行有效管理,提高請求響應(yīng)和數(shù)據(jù)處理的效率。有鑒于此,本發(fā)明提出了一種分布式緩存管理系統(tǒng),包括索引服務(wù)器和分布式內(nèi)存對象緩存服務(wù)器,其中,所述索引服務(wù)器包括索引建立單元,用于根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引;數(shù)據(jù)獲取單元,用于根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,在分布式內(nèi)存對象緩存服務(wù)器的前端設(shè)置索引服務(wù)器,通過為緩存的數(shù)據(jù)建立索引,當(dāng)用戶希望獲取某個數(shù)據(jù)時,能夠由索引服務(wù)器根據(jù)索引及時準(zhǔn)確地查找到該數(shù)據(jù),在緩存的數(shù)據(jù)量較大時,依然能夠?qū)γ總€數(shù)據(jù)進(jìn)行有效管理,并提高數(shù)據(jù)查找效率。在由多臺分布式內(nèi)存對象緩存服務(wù)器構(gòu)成服務(wù)器集群時,其中的部分服務(wù)器出現(xiàn)問題時,不會對其他的服務(wù)器造成影響,使得整個系統(tǒng)保持高可用性。在上述技術(shù)方案中,優(yōu)選地,所述索引服務(wù)器還包括數(shù)據(jù)判斷單元,用于根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則進(jìn)一步判斷所述需要緩存的數(shù)據(jù)的版本號是否高于所述已緩存數(shù)據(jù)的版本號;數(shù)據(jù)替換單元,用于在所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號的情況下,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。在該技術(shù)方案中,通過對數(shù)據(jù)版本號的比較,實現(xiàn)對于數(shù)據(jù)的更新,并避免出現(xiàn)低版本的數(shù)據(jù)對高版本數(shù)據(jù)的覆蓋。在上述任一技術(shù)方案中,優(yōu)選地,所述索引服務(wù)器還包括時間記錄單元,用于記錄建立索引的時間;以及存儲控制單元,用于在所述分布式內(nèi)存對象緩存服務(wù)器中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值的情況下,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,對于已使用內(nèi)存容量不足的情況下,根據(jù)建立時間進(jìn)行新老替換,從而可以比較好地處理索引數(shù)量的不斷增加與有限的內(nèi)存容量之間的供需矛盾。在上述任一技術(shù)方案中,優(yōu)選地,所述分布式內(nèi)存對象緩存服務(wù)器的數(shù)量為多個, 則所述索引服務(wù)器還包括位置確定單元,用于根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其中,所述實時狀態(tài)包括以下至少之一或其組合所述分布式內(nèi)存對象緩存服務(wù)器的個數(shù)、容量、內(nèi)存空閑程度。在該技術(shù)方案中,不再按照Key取模的方式進(jìn)行處理,從而實現(xiàn)更好的負(fù)載均衡分配。在上述任一技術(shù)方案中,優(yōu)選地,通過多臺索引服務(wù)器實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器的管理,其中,所述多臺索引服務(wù)器包括主服務(wù)器和從服務(wù)器在所述主服務(wù)器正常工作的情況下,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備;在所述主服務(wù)器出現(xiàn)故障的情況下,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及在所述主服務(wù)器恢復(fù)正常的情況下,從指定的索引服務(wù)器上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。在該技術(shù)方案中,通過設(shè)置主從式的索引服務(wù)器集群,從而在主服務(wù)器出現(xiàn)問題時,可以由從服務(wù)器進(jìn)行頂替;而主服務(wù)器在恢復(fù)正常后,也能夠及時通過對最新索引狀態(tài)信息的獲取,最快地重新恢復(fù)工作,把對系統(tǒng)運行和用戶體驗的影響降至最小。根據(jù)本發(fā)明的又一方面,還提出了一種實現(xiàn)分布式緩存管理的方法,包括步驟202,根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引;步驟204,根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,在分布式內(nèi)存對象緩存服務(wù)器的前端設(shè)置索引服務(wù)器,通過為緩存的數(shù)據(jù)建立索引,當(dāng)用戶希望獲取某個數(shù)據(jù)時,能夠由索引服務(wù)器根據(jù)索引及時準(zhǔn)確地查找到該數(shù)據(jù),在緩存的數(shù)據(jù)量較大時,依然能夠?qū)γ總€數(shù)據(jù)進(jìn)行有效管理,并提高數(shù)據(jù)查找效率。在由多臺分布式內(nèi)存對象緩存服務(wù)器構(gòu)成服務(wù)器集群時,其中的部分服務(wù)器出現(xiàn)問題時,不會對其他的服務(wù)器造成影響,使得整個系統(tǒng)保持高可用性。在上述技術(shù)方案中,優(yōu)選地,所述步驟202還包括根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則當(dāng)所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號時,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。在該技術(shù)方案中,通過對數(shù)據(jù)版本號的比較,實現(xiàn)對于數(shù)據(jù)的更新,并避免出現(xiàn)低版本的數(shù)據(jù)對高版本數(shù)據(jù)的覆蓋。在上述任一技術(shù)方案中,優(yōu)選地,所述步驟202還包括記錄建立索引的時間;以及在所述分布式內(nèi)存對象緩存服務(wù)器中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值時,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,對于已使用內(nèi)存容量不足的情況下,根據(jù)建立時間進(jìn)行新老替換,從而可以比較好地處理索引數(shù)量的不斷增加與有限的內(nèi)存容量之間的供需矛盾。在上述任一技術(shù)方案中,優(yōu)選地,所述分布式內(nèi)存對象緩存服務(wù)器的數(shù)量為多個,則根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其 中,所述實時狀態(tài)包括以下至少之一或其組合所述分布式內(nèi)存對象緩存服務(wù)器的個數(shù)、容量、內(nèi)存空閑程度。在該技術(shù)方案中,不再按照Key取模的方式進(jìn)行處理,從而實現(xiàn)更好的負(fù)載均衡分配。在上述任一技術(shù)方案中,優(yōu)選地,通過多臺索引服務(wù)器實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器的管理,其中,所述多臺索引服務(wù)器包括主服務(wù)器和從服務(wù)器當(dāng)所述主服務(wù)器正常工作時,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備;當(dāng)所述主服務(wù)器出現(xiàn)故障時,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及當(dāng)所述主服務(wù)器恢復(fù)正常時,從指定的索引服務(wù)器上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。在該技術(shù)方案中,通過設(shè)置主從式的索引服務(wù)器集群,從而在主服務(wù)器出現(xiàn)問題時,可以由從服務(wù)器進(jìn)行頂替;而主服務(wù)器在恢復(fù)正常后,也能夠及時通過對最新索引狀態(tài)信息的獲取,最快地重新恢復(fù)工作,把對系統(tǒng)運行和用戶體驗的影響降至最小。通過以上技術(shù)方案,可以對分布式內(nèi)存對象緩存服務(wù)器中的數(shù)據(jù)進(jìn)行有效管理,提高請求響應(yīng)和數(shù)據(jù)處理的效率。
圖IA和圖IB示出了根據(jù)本發(fā)明的實施例的分布式緩存管理系統(tǒng)的框圖;圖2示出了根據(jù)本發(fā)明的實施例的實現(xiàn)分布式緩存管理的方法的流程圖;圖3示出了根據(jù)本發(fā)明的實施例的分布式緩存管理系統(tǒng)的結(jié)構(gòu)示意圖;圖4A示出了根據(jù)本發(fā)明的實施例的主索引服務(wù)器的索引服務(wù)的運行時的示意圖;圖4B示出了根據(jù)本發(fā)明的實施例的從索引服務(wù)器的索引服務(wù)的運行時的示意圖;圖5A示出了根據(jù)本發(fā)明的實施例的建立索引的流程示意圖;圖5B示出了根據(jù)本發(fā)明的實施例的讀取數(shù)據(jù)的流程示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式
對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。圖IA和圖IB示出了根據(jù)本發(fā)明的實施例的分布式緩存管理系統(tǒng)的框圖。如圖IA所示,根據(jù)本發(fā)明的實施例的分布式緩存管理系統(tǒng)100,包括索引服務(wù)器100A和分布式內(nèi)存對象緩存服務(wù)器100B,其中,所述索引服務(wù)器100A包括索引建立單元102,用于根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器100B中,并為緩存的數(shù)據(jù)建立索引;數(shù)據(jù)獲取單元104,用于根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器100B中獲取對應(yīng)的數(shù) 據(jù)。在該技術(shù)方案中,在分布式內(nèi)存對象緩存服務(wù)器100B的前端設(shè)置索引服務(wù)器100A,通過為緩存的數(shù)據(jù)建立索引,當(dāng)用戶希望獲取某個數(shù)據(jù)時,能夠由索引服務(wù)器100A根據(jù)索引及時準(zhǔn)確地查找到該數(shù)據(jù),在緩存的數(shù)據(jù)量較大時,依然能夠?qū)γ總€數(shù)據(jù)進(jìn)行有效管理,并提高數(shù)據(jù)查找效率。在由多臺分布式內(nèi)存對象緩存服務(wù)器100B構(gòu)成服務(wù)器集群時,其中的部分服務(wù)器出現(xiàn)問題時,不會對其他的服務(wù)器造成影響,使得整個系統(tǒng)保持高可用性。在上述技術(shù)方案中,優(yōu)選地,所述索引服務(wù)器100A還包括數(shù)據(jù)判斷單元106,用于根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則進(jìn)一步判斷所述需要緩存的數(shù)據(jù)的版本號是否高于所述已緩存數(shù)據(jù)的版本號;數(shù)據(jù)替換單元108,用于在所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號的情況下,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。在該技術(shù)方案中,通過對數(shù)據(jù)版本號的比較,實現(xiàn)對于數(shù)據(jù)的更新,并避免出現(xiàn)低版本的數(shù)據(jù)對高版本數(shù)據(jù)的覆蓋。在上述任一技術(shù)方案中,優(yōu)選地,所述索引服務(wù)器100A還包括時間記錄單元110,用于記錄建立索引的時間;以及存儲控制單元112,用于在所述分布式內(nèi)存對象緩存服務(wù)器100B中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值的情況下,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,對于已使用內(nèi)存容量不足的情況下,根據(jù)建立時間進(jìn)行新老替換,從而可以比較好地處理索引數(shù)量的不斷增加與有限的內(nèi)存容量之間的供需矛盾。如圖IB所示,優(yōu)選地,所述分布式內(nèi)存對象緩存服務(wù)器100B的數(shù)量為多個,則所述索引服務(wù)器100A包含除了圖IA中所示的各單元外,還包括位置確定單元114,用于根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器100B的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其中,所述實時狀態(tài)包括以下至少之一或其組合所述分布式內(nèi)存對象緩存服務(wù)器100B的個數(shù)、容量、內(nèi)存空閑程度。在該技術(shù)方案中,不再按照Key取模的方式進(jìn)行處理,從而實現(xiàn)更好的負(fù)載均衡分配。在上述技術(shù)方案中,優(yōu)選地,通過多臺索引服務(wù)器100A實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器100B的管理,其中,所述多臺索引服務(wù)器100A包括主服務(wù)器和從服務(wù)器在所述主服務(wù)器正常工作的情況下,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備;在所述主服務(wù)器出現(xiàn)故障的情況下,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及在所述主服務(wù)器恢復(fù)正常的情況下,從指定的索引服務(wù)器100A上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。在該技術(shù)方案中,通過設(shè)置主從式的索引服務(wù)器集群,從而在主服務(wù)器出現(xiàn)問題時,可以由從服務(wù)器進(jìn)行頂替;而主服務(wù)器在恢復(fù)正常后,也能夠及時通過對最新索引狀態(tài)信息的獲取,最快地重新恢復(fù)工作,把對系統(tǒng)運行和用戶體驗的影響降至最小。圖2示出了根據(jù)本發(fā)明的實施例的實現(xiàn)分布式緩存管理的方法的流程圖。
如圖2所示,根據(jù)本發(fā)明的實施例的實現(xiàn)分布式緩存管理的方法,包括步驟202,根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引;步驟204,根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,在分布式內(nèi)存對象緩存服務(wù)器的前端設(shè)置索引服務(wù)器,通過為緩存的數(shù)據(jù)建立索引,當(dāng)用戶希望獲取某個數(shù)據(jù)時,能夠由索引服務(wù)器根據(jù)索引及時準(zhǔn)確地查找到該數(shù)據(jù),在緩存的數(shù)據(jù)量較大時,依然能夠?qū)γ總€數(shù)據(jù)進(jìn)行有效管理,并提高數(shù)據(jù)查找效率。在由多臺分布式內(nèi)存對象緩存服務(wù)器構(gòu)成服務(wù)器集群時,其中的部分服務(wù)器出現(xiàn)問題時,不會對其他的服務(wù)器造成影響,使得整個系統(tǒng)保持高可用性。在上述技術(shù)方案中,優(yōu)選地,所述步驟202還包括根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則當(dāng)所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號時,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。在該技術(shù)方案中,通過對數(shù)據(jù)版本號的比較,實現(xiàn)對于數(shù)據(jù)的更新,并避免出現(xiàn)低版本的數(shù)據(jù)對高版本數(shù)據(jù)的覆蓋。在上述任一技術(shù)方案中,優(yōu)選地,所述步驟202還包括記錄建立索引的時間;以及在所述分布式內(nèi)存對象緩存服務(wù)器中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值時,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。在該技術(shù)方案中,對于已使用內(nèi)存容量不足的情況下,根據(jù)建立時間進(jìn)行新老替換,從而可以比較好地處理索引數(shù)量的不斷增加與有限的內(nèi)存容量之間的供需矛盾。在上述任一技術(shù)方案中,優(yōu)選地,所述分布式內(nèi)存對象緩存服務(wù)器的數(shù)量為多個,則根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其中,所述實時狀態(tài)包括以下至少之一或其組合所述分布式內(nèi)存對象緩存服務(wù)器的個數(shù)、容量、內(nèi)存空閑程度。在該技術(shù)方案中,不再按照Key取模的方式進(jìn)行處理,從而實現(xiàn)更好的負(fù)載均衡分配。在上述任一技術(shù)方案中,優(yōu)選地,通過多臺索引服務(wù)器實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器的管理,其中,所述多臺索引服務(wù)器包括主服務(wù)器和從服務(wù)器當(dāng)所述主服務(wù)器正常工作時,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備;當(dāng)所述主服務(wù)器出現(xiàn)故障時,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及當(dāng)所述主服務(wù)器恢復(fù)正常時,從指定的索引服務(wù)器上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。在該技術(shù)方案中,通過設(shè)置主從式的索引服務(wù)器集群,從而在主服務(wù)器出現(xiàn)問題時,可以由從服務(wù)器進(jìn)行頂替;而主服務(wù)器在恢復(fù)正常后,也能夠及時通過對最新索引狀態(tài)信息的獲取,最快地重新恢復(fù)工作,把對系統(tǒng)運行和用戶體驗的影響降至最小。圖3示出了根據(jù)本發(fā)明的實施例的分布式緩存管理系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,分布式緩存管理系統(tǒng)包括索引服務(wù)器和MemcachedlOOB,其中,索引服務(wù)器包括主索引服務(wù)器100A1和從索引服務(wù)器100A2。應(yīng)用服務(wù)器300通過主 索引服務(wù)器100A1進(jìn)行數(shù)據(jù)的Set (緩存并建立對應(yīng)的索引)/Get (讀取),并由主索引服務(wù)器100A1對MemcachedlOOB進(jìn)行訪問,而應(yīng)用服務(wù)器300自身并不直接對MemcachedlOOB進(jìn)行訪問。索引服務(wù)器以MemcachedlOOB緩存索引數(shù)據(jù),將來自應(yīng)用服務(wù)器300的數(shù)據(jù)分配到具體的MemcachedlOOB位置,并記錄對應(yīng)的索引信息。索引服務(wù)器以FIFtXFirst InputFirst Output,先入先出隊列)方式進(jìn)行淘汰,并作為應(yīng)用服務(wù)器300和MemcachedlOOB之間的Proxy (代理服務(wù)器)角色進(jìn)行數(shù)據(jù)的傳輸??蓪⒍鄠€索引服務(wù)器配置在一起構(gòu)成一個索引集群。如該圖所示,在同一個索引集群中,索引信息在各個索引服務(wù)器之前互為拷貝,保證索引表的一致性,這一特性使用索引集群具有高可用性。具體地,索引集群中的索引服務(wù)器分為主索引服務(wù)器100A1和從索引服務(wù)器100A2,其中,從索引服務(wù)器100A2不進(jìn)行實際的Set/Get操作,只是對主索引服務(wù)器100A1的一份熱備。當(dāng)主索引服務(wù)器100A1出現(xiàn)異常時,從索引服務(wù)器100A2可承擔(dān)處理應(yīng)用的請求,而原來已經(jīng)異常的主索引服務(wù)器100A1變?yōu)閺?,把對?yīng)用產(chǎn)生的影響降至最小。主索引服務(wù)器100A1出現(xiàn)異常時,通過配置中心進(jìn)行服務(wù)路由切換,那么從索引服務(wù)器100A2將由從變?yōu)橹?,所有的Set/Get請求落在該從索引服務(wù)器100A2上,待故障的主索引服務(wù)器100A1恢復(fù)并重新啟動時,會向集群中指定IP的索引服務(wù)器請求當(dāng)前最新的狀態(tài)信息,這些信息包括Memcached服務(wù)列表信息、索引數(shù)據(jù)的全量信息等,從而重新由從變回主,對數(shù)據(jù)進(jìn)行處理。索引服務(wù)器后端的MemcachedlOOB構(gòu)成實際的存儲信息集群,每個MemcachedlOOB保存一部分?jǐn)?shù)據(jù),索引服務(wù)器對已有的存儲資源進(jìn)行分配,并實時地將索引信息同步到索引集群中的其他索引服務(wù)器上去。在MemcachedlOOB中,數(shù)據(jù)的實際存儲位置的分配,不再按照Key取模的方式,而是根據(jù)后端MemcachedlOOB的個數(shù)及容量、內(nèi)存空閑程度等進(jìn)行負(fù)載均衡分配。當(dāng)對MemcachedlOOB進(jìn)行擴容時,不會對已存儲的信息造成影響,也不存在擴容時的數(shù)據(jù)遷移問題,因為所有的數(shù)據(jù)都已經(jīng)通過索引建立了具體的對應(yīng)關(guān)系,只需要對之后繼續(xù)緩存的數(shù)據(jù)繼續(xù)建立索引即可;同時,單個或部分MemcachedlOOB的失效也不會影響到整個Memcached群集的可用性。
在建立索引的過程中,對于同一索引Key的數(shù)據(jù),根據(jù)已緩存的數(shù)據(jù)和待緩存的數(shù)據(jù)的版本號進(jìn)行區(qū)分,從而避免了低版本數(shù)據(jù)覆蓋高版本數(shù)據(jù)的問題。通過上述分布式緩存管理系統(tǒng)及相應(yīng)的處理過程,使得Memcached實例的SLA級別相比于不使用索引時得到較大的提升。對于圖3所示的分布式緩存管理系統(tǒng),其具體的框架及運行時的情況,下面結(jié)合圖4A和圖4B進(jìn)行說明,其中,圖4A示出了根據(jù)本發(fā)明的實施例的主索引服務(wù)器的索引服務(wù)的運行時的示意圖;圖48示出了根據(jù)本發(fā)明的實施例的從索引服務(wù)器的索引服務(wù)的運行時的示意圖。如圖4A和圖4B所示,索引服務(wù)器主要包括配置代理模塊(Config-agent)、本地索引控制器(Loc Index Controller)、數(shù)據(jù)傳輸裝置(Reactor NetIO)、通信管理線程(JgroupsMsg Manager Thread)、工作池(WorkersPool)分發(fā)器、Worker 線程等實現(xiàn)索引建 立、數(shù)據(jù)獲取等功能,其中本地索引控制器中還設(shè)置有定時器模塊(Timer-Module)和Memcached列表(Memcached List),配置代理模塊與定時器模塊之間實現(xiàn)JAVA本地調(diào)用(jni, Java NativeInterface),而定時器模塊與Memcached列表實現(xiàn)數(shù)據(jù)傳輸。數(shù)據(jù)傳輸裝置中包含有請求單元(request)和響應(yīng)單元(response)。通信管理線程與應(yīng)用服務(wù)器通過多播信息(多播Pkg)實現(xiàn)數(shù)據(jù)交互。Worker 線程包括隊列、索引圖(Index Map)、Memcached 連接池(Memcached conpool),每個Worker線程分別與Memcached集群連接,實現(xiàn)數(shù)據(jù)交互。如圖4A所示,在建立索引的過程中,主要包括以下步驟I、請求單元將請求發(fā)送至工作池分發(fā)器。2、工作池分發(fā)器根據(jù)請求中的Key取Worker線程數(shù)模進(jìn)行分發(fā)。3、Worker線程處理完成后返回數(shù)據(jù)包。如圖4B所示,在讀取數(shù)據(jù)的過程中,主要包括以下步驟I、通過通信管理線程接收到應(yīng)用服務(wù)器發(fā)送的多播信息。2、通信管理線程將多播信息發(fā)送至工作池分發(fā)器。3、工作池分發(fā)器將消息分給具體的Worker線程進(jìn)行處理。對于圖4A和圖4B對應(yīng)的具體的建立索引和讀取數(shù)據(jù)的流程,下面結(jié)合圖5A和圖5B進(jìn)行詳細(xì)說明,其中,圖5A示出了根據(jù)本發(fā)明的實施例的建立索引的流程示意圖;圖58示出了根據(jù)本發(fā)明的實施例的讀取數(shù)據(jù)的流程示意圖。如圖5A所示,建立索引的流程包括I.使用者發(fā)出的設(shè)置(Set)請求通過前端的應(yīng)用服務(wù)器發(fā)送至數(shù)據(jù)傳輸裝置。2.數(shù)據(jù)傳輸裝置讀取請求包,并判斷請求包是否已經(jīng)讀取完整。3.若請求包讀取完整,則數(shù)據(jù)傳輸裝置將請求包發(fā)送至工作池。4.由工作池分發(fā)器選擇一個Worker線程,將請求包放入該線程對應(yīng)的緩存隊列,并喚醒該Woker線程進(jìn)行處理。5. Worker處理線程判斷當(dāng)前Set數(shù)據(jù)是否有效,并判斷Key是否已經(jīng)存在Index記錄,且版本信息高于當(dāng)前請求值,若是,需拒絕當(dāng)前Set請求。否則,從目前有效的Memcached中,隨機選擇一個作為存儲入口(根據(jù)Memcached容量信息來隨機選擇,可以設(shè)置為大容量Memcached具有大的當(dāng)選概率)。6.通過上述存儲入口,將對應(yīng)的數(shù)據(jù)緩存至Memcached,其中,如果當(dāng)前選擇中Memcached的已使用內(nèi)存容量大于預(yù)設(shè)閾值(比如接近最大值),那么從索引map中找到最老節(jié)點(距離當(dāng)前時間最長),并使用新的數(shù)據(jù)替換之。這樣就可以比較好的處理索引不斷增多和有限的內(nèi)存容量之間的供需矛盾。7. Woker線程將Index更新信息保存在Jgroups通知緩存隊列中。8.待Jgroups-msg-snder (通信線程)發(fā)送更新消息,通知到索引集群內(nèi)其他索引服務(wù)器。Worker處理線程根據(jù)獲取到的Memcached入口信息,獲取到此Memcached的長連接,保存應(yīng)用應(yīng)用數(shù)據(jù)。若保存失敗,需刪除相應(yīng)Index信息。9. Worker處理線程拼裝Set響應(yīng)信息,通過NetIO. RespDispatcher找到對應(yīng)的前 端應(yīng)用連接入口,將響應(yīng)包緩存到響應(yīng)緩存隊列。10.數(shù)據(jù)傳輸裝置將響應(yīng)包發(fā)送至應(yīng)用前端。如圖5B所示,讀取數(shù)據(jù)的流程包括I.使用者發(fā)出的設(shè)置(Get)請求通過前端的應(yīng)用服務(wù)器發(fā)送至數(shù)據(jù)傳輸裝置。2.數(shù)據(jù)傳輸裝置讀取請求包,并判斷請求包是否已經(jīng)讀取完整。3.若請求包讀取完整,則數(shù)據(jù)傳輸裝置發(fā)送至工作池。4.由工作池分發(fā)器選擇一個Worker線程,將請求包放入該線程對應(yīng)的緩存隊列,并喚醒該Woker線程進(jìn)行處理。5. Worker處理線程首先判斷Key是否在本地索引表中存在記錄,若無則直接通知前端應(yīng)用Get失敗。另外,還可以判斷索引是否已經(jīng)超時,或?qū)?yīng)的后端Memcached是否當(dāng)前有效。6. Worker處理線程根據(jù)獲取到的Memcached入口信息,獲取到此Memcached的長連接,查詢應(yīng)用應(yīng)用數(shù)據(jù)。若查詢失敗,需刪除相應(yīng)Index信息。7. Worker處理線程拼裝Get響應(yīng)信息,通過Netio. RespDispatcher找到對應(yīng)的前端應(yīng)用連接入口,將響應(yīng)包緩存到響應(yīng)緩存隊列。8.數(shù)據(jù)傳輸裝置將響應(yīng)包發(fā)送至應(yīng)用前端。以上結(jié)合附圖詳細(xì)說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中無法很好地對分布式內(nèi)存對象進(jìn)行有效管理,因此,本發(fā)明提供了一種分布式緩存管理系統(tǒng)和一種實現(xiàn)分布式緩存管理的方法,可以對分布式內(nèi)存對象緩存服務(wù)器中的數(shù)據(jù)進(jìn)行有效管理,提高請求響應(yīng)和數(shù)據(jù)處理的效率。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種分布式緩存管理系統(tǒng),其特征在于,包括索引服務(wù)器和分布式內(nèi)存對象緩存服務(wù)器,其中, 所述索引服務(wù)器包括 索引建立單元,用于根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引; 數(shù)據(jù)獲取單元,用于根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的分布式緩存管理系統(tǒng),其特征在于,所述索引服務(wù)器還包括 數(shù)據(jù)判斷單元,用于根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則進(jìn)一步判斷所述需要緩存的數(shù)據(jù)的版本號是否高于所述已緩存數(shù)據(jù)的版本號; 數(shù)據(jù)替換單元,用于在所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號的情況下,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。
3.根據(jù)權(quán)利要求I所述的分布式緩存管理系統(tǒng),其特征在于,所述索引服務(wù)器還包括 時間記錄單元,用于記錄建立索引的時間;以及 存儲控制單元,用于在所述分布式內(nèi)存對象緩存服務(wù)器中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值的情況下,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。
4.根據(jù)權(quán)利要求I至3中任一項所述的分布式緩存管理系統(tǒng),其特征在于,所述分布式內(nèi)存對象緩存服務(wù)器的數(shù)量為多個,則所述索引服務(wù)器還包括 位置確定單元,用于根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其中,所述實時狀態(tài)包括以下至少之一或其組合 所述分布式內(nèi)存對象緩存服務(wù)器的個數(shù)、容量、內(nèi)存空閑程度。
5.根據(jù)權(quán)利要求I至3中任一項所述的分布式緩存管理系統(tǒng),其特征在于,通過多臺索引服務(wù)器實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器的管理,其中,所述多臺索引服務(wù)器包括主服務(wù)器和從服務(wù)器 在所述主服務(wù)器正常工作的情況下,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備; 在所述主服務(wù)器出現(xiàn)故障的情況下,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及 在所述主服務(wù)器恢復(fù)正常的情況下,從指定的索引服務(wù)器上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。
6.一種實現(xiàn)分布式緩存管理的方法,其特征在于,包括 步驟202,根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引; 步驟204,根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的實現(xiàn)分布式緩存管理的方法,其特征在于,所述步驟202還包括根據(jù)需要緩存的數(shù)據(jù)的關(guān)鍵字以及已建立的索引,判斷是否存在相同的已緩存數(shù)據(jù),若存在,則當(dāng)所述需要緩存的數(shù)據(jù)的版本號高于所述已緩存數(shù)據(jù)的版本號時,將所述需要緩存的數(shù)據(jù)替換所述已緩存數(shù)據(jù),否則拒絕所述數(shù)據(jù)緩存請求。
8.根據(jù)權(quán)利要求6所述的實現(xiàn)分布式緩存管理的方法,其特征在于,所述步驟202還包括 記錄建立索引的時間;以及 在所述分布式內(nèi)存對象緩存服務(wù)器中的已使用內(nèi)存容量大于或等于預(yù)設(shè)的容量閾值時,利用新建立的索引及對應(yīng)的數(shù)據(jù)替換建立時間最早的已建立索引及對應(yīng)的數(shù)據(jù)。
9.根據(jù)權(quán)利要求6至8中任一項所述的實現(xiàn)分布式緩存管理的方法,其特征在于,所述分布式內(nèi)存對象緩存服務(wù)器的數(shù)量為多個,則根據(jù)所述分布式內(nèi)存對象緩存服務(wù)器的實時狀態(tài),確定需要緩存的數(shù)據(jù)的存儲位置,其中,所述實時狀態(tài)包括以下至少之一或其組合 所述分布式內(nèi)存對象緩存服務(wù)器的個數(shù)、容量、內(nèi)存空閑程度。
10.根據(jù)權(quán)利要求6至8中任一項所述的實現(xiàn)分布式緩存管理的方法,其特征在于,通過多臺索引服務(wù)器實現(xiàn)對所述分布式內(nèi)存對象緩存服務(wù)器的管理,其中,所述多臺索引服務(wù)器包括主服務(wù)器和從服務(wù)器 當(dāng)所述主服務(wù)器正常工作時,所述主服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng),所述從服務(wù)器實現(xiàn)對所述主服務(wù)器的熱備; 當(dāng)所述主服務(wù)器出現(xiàn)故障時,由所述從服務(wù)器實現(xiàn)對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng);以及 當(dāng)所述主服務(wù)器恢復(fù)正常時,從指定的索引服務(wù)器上獲取最新索引狀態(tài)信息,以獲取對所述數(shù)據(jù)緩存請求和所述數(shù)據(jù)獲取請求的響應(yīng)。
全文摘要
本發(fā)明提供了一種分布式緩存管理系統(tǒng),包括索引服務(wù)器和分布式內(nèi)存對象緩存服務(wù)器,其中,所述索引服務(wù)器包括索引建立單元,用于根據(jù)接收到的數(shù)據(jù)緩存請求,將對應(yīng)的數(shù)據(jù)存儲至分布式內(nèi)存對象緩存服務(wù)器中,并為緩存的數(shù)據(jù)建立索引;數(shù)據(jù)獲取單元,用于根據(jù)接收到的數(shù)據(jù)獲取請求,獲取對應(yīng)的索引,并利用該索引從所述分布式內(nèi)存對象緩存服務(wù)器中獲取對應(yīng)的數(shù)據(jù)。本發(fā)明還提供了一種實現(xiàn)分布式緩存管理的方法。通過本發(fā)明的技術(shù)方案,可以對分布式內(nèi)存對象緩存服務(wù)器中的數(shù)據(jù)進(jìn)行有效管理,提高請求響應(yīng)和數(shù)據(jù)處理的效率。
文檔編號H04L29/08GK102833352SQ20121034562
公開日2012年12月19日 申請日期2012年9月17日 優(yōu)先權(quán)日2012年9月17日
發(fā)明者孫為, 田睿, 吳振宇, 張弛 申請人:深圳中興網(wǎng)信科技有限公司