一種緩存控制方法和系統(tǒng)的制作方法
【專利摘要】一種緩存控制方法,包括:將包含多個服務(wù)器的集群形成層級網(wǎng)絡(luò)結(jié)構(gòu);該結(jié)構(gòu)中每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連接而成;每一第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;最底層包括一個或多個第一結(jié)構(gòu),集群中的每個服務(wù)器作為最底層的第一結(jié)構(gòu)中的一個節(jié)點;第一結(jié)構(gòu)由每n個節(jié)點按預(yù)定規(guī)則形成:n個節(jié)點中的每個節(jié)點和該n個節(jié)點中的k個節(jié)點相連,0<k<n,n>1;判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至頂層的第一結(jié)構(gòu),逐層轉(zhuǎn)發(fā)至最底層的第一結(jié)構(gòu),直到最底層的第一結(jié)構(gòu)的每個節(jié)點獲取更新通知,以使集群中的各服務(wù)器更新緩存數(shù)據(jù)。本申請還提供一種緩存控制系統(tǒng)。本申請保證集群中的各服務(wù)器的本地緩存的及時更新和同步。
【專利說明】一種緩存控制方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機領(lǐng)域,尤其涉及一種緩存控制方法和系統(tǒng)。
【背景技術(shù)】
[0002] 現(xiàn)有技術(shù)中,一般存在兩種緩存方法:
[0003] -種是本地緩存:數(shù)據(jù)保存在本地服務(wù)器的內(nèi)存上,訪問時走的僅是系統(tǒng)總線,速 度快。如開源的EhCache、googel MemCached、OSCache。本地緩存與應(yīng)用一起部署,會占用 應(yīng)用服務(wù)器較多內(nèi)存空間。
[0004] 另一種是分布式緩存:應(yīng)用把需緩存的數(shù)據(jù)通過網(wǎng)絡(luò),存放在分布式緩存服務(wù)器 上。也可以建立緩存服務(wù)器集群,緩存空間理論上足夠大;并且不占用應(yīng)用服務(wù)器內(nèi)存空 間。分布式緩存需要通過網(wǎng)絡(luò)進行交互,占用網(wǎng)絡(luò)帶寬,另外,有序列化數(shù)據(jù)的計算性能消 耗,性能較差。
[0005] 對于本地緩存,數(shù)據(jù)發(fā)生變更時,一般的實現(xiàn)都是通過消息通知讓集群內(nèi)所有 CACHE(緩存)中的相關(guān)數(shù)據(jù)失效。當(dāng)再次需要相關(guān)數(shù)據(jù)時,各服務(wù)器到數(shù)據(jù)源獲取數(shù)據(jù),并 放入CACHE中。該方法不能實現(xiàn)緩存數(shù)據(jù)的及時更新和保證事務(wù)(集群模式)的同步。
【發(fā)明內(nèi)容】
[0006] 本申請要解決的技術(shù)問題是提供一種緩存控制方法和系統(tǒng),實現(xiàn)緩存數(shù)據(jù)的及時 更新和事務(wù)同步。
[0007] 為了解決上述問題,本申請?zhí)峁┝艘环N緩存控制方法,包括:
[0008] 將包含多個服務(wù)器的集群形成層級網(wǎng)絡(luò)結(jié)構(gòu);
[0009] 其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連接而 成;每一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級網(wǎng)絡(luò)結(jié)構(gòu) 的最底層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最 底層的第一結(jié)構(gòu)中的一個節(jié)點;
[0010] 所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所述預(yù)定規(guī)則包括:所述η個節(jié)點中 的每個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η, η > 1 ; toon] 判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié) 構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié) 構(gòu)的每個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所述更新通知,以使所述 集群中的各服務(wù)器更新緩存數(shù)據(jù)。
[0012] 上述方法還可具有以下特點,所述發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第 一結(jié)構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第 一結(jié)構(gòu)的每個節(jié)點獲取所述更新通知包括:
[0013] 每個所述第一結(jié)構(gòu)中設(shè)定一主節(jié)點;
[0014] 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點;
[0015] 每個節(jié)點接收到所述更新通知后,進行如下轉(zhuǎn)發(fā)處理:
[0016] 將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點;以及,如果所述節(jié)點非最 底層節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一結(jié)構(gòu)中的主節(jié)點。
[0017] 上述方法還可具有以下特點,所述方法還包括:每個節(jié)點接收到所述更新通知后, 進行所述轉(zhuǎn)發(fā)處理前,判斷是否已處理所述更新通知,如果已處理,則丟棄該更新通知,如 果沒有,才進行所述轉(zhuǎn)發(fā)處理。
[0018] 上述方法還可具有以下特點,所述方法還包括:所述服務(wù)器獲取所述更新通知并 接收新的緩存數(shù)據(jù)后,更新原緩存數(shù)據(jù)。
[0019] 上述方法還可具有以下特點,所述η為10,所述k為3,所述第一結(jié)構(gòu)為Petersen 圖。
[0020] 上述方法還可具有以下特點,所述方法還包括:
[0021] 將應(yīng)用的緩存數(shù)據(jù)存儲到分布式緩存中,以及,將使用頻率和/或大小滿足預(yù)定 條件的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的本地緩存中;
[0022] 接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中 不存在所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述一個或多個應(yīng)用請 求訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述一個或多個 應(yīng)用,并將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中。
[0023] 上述方法還可具有以下特點,所述預(yù)定條件包括:
[0024] 使用頻率大于第一閾值且占用的緩存空間小于第二閾值;
[0025] 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
[0026] 上述方法還可具有以下特點,所述方法還包括:
[0027] 接收到應(yīng)用的緩存數(shù)據(jù)訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起 所述緩存數(shù)據(jù)訪問請求的服務(wù)器的本地緩存或者位于所述分布式緩存中,則從所述本地緩 存或所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
[0028] 上述方法還可具有以下特點,所述從所述本地緩存或所述分布式緩存中獲取所述 應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用包括:
[0029] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù)據(jù)訪問 請求的服務(wù)器的本地緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用;
[0030] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用請求訪問 的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存中是否存在所述應(yīng)用請求訪問的 緩存數(shù)據(jù),如果存在,則從所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所 述應(yīng)用。
[0031] 上述方法還可具有以下特點,所述方法還包括:
[0032] 每個所述服務(wù)器上布置有中央控制裝置,且不同服務(wù)器上的中央控制裝置之間相 互通信;
[0033] 所述接收到多個應(yīng)用的訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中 不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存 數(shù)據(jù),將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個應(yīng)用,并將所述多個應(yīng)用請求 訪問的緩存數(shù)據(jù)更新到所述分布式緩存中包括:
[0034] 多個中央控制裝置分別接收到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪 問請求后,如果所述分布式緩存中不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個 中央控制裝置從所述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā)送給所述其所在 的服務(wù)器上的應(yīng)用,并將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中,以 及,將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個中央控制裝置中其他中央控制裝 置由所述其他中央控制裝置發(fā)送給各自所在的服務(wù)器上的應(yīng)用。
[0035] 本申請還提供一種緩存控制系統(tǒng),所述系統(tǒng)包括:集群以及中央控制裝置,所述中 央控制裝置包括配置模塊和更新模塊,其中:
[0036] 所述集群包括多個服務(wù)器,每一服務(wù)器包含本地緩存系統(tǒng);
[0037] 所述配置模塊用于,將所述集群的所述多個服務(wù)器形成層級網(wǎng)絡(luò)結(jié)構(gòu),記錄所述 層級網(wǎng)絡(luò)結(jié)構(gòu):其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連 接而成;每一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級網(wǎng)絡(luò) 結(jié)構(gòu)的最底層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò)結(jié)構(gòu) 的最底層的第一結(jié)構(gòu)中的一個節(jié)點;所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所述預(yù) 定規(guī)則包括:所述η個節(jié)點中的每個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η,η > 1 ;
[0038] 所述更新模塊用于:判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié) 構(gòu)的頂層的第一結(jié)構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所 述最底層的第一結(jié)構(gòu)的每個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所述更 新通知,以使所述集群中的各服務(wù)器更新緩存數(shù)據(jù)。
[0039] 上述系統(tǒng)還可具有以下特點,所述配置模塊還用于:在每個所述第一結(jié)構(gòu)中設(shè)定 一主節(jié)點;
[0040] 所述更新模塊發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由所述頂層 的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每個節(jié)點獲 取所述更新通知包括:
[0041] 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點;每個節(jié)點接收到所述更新 通知后,進行如下轉(zhuǎn)發(fā)處理:將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點,以及, 如果所述節(jié)點非最底層節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一 結(jié)構(gòu)中的主節(jié)點。
[0042] 上述系統(tǒng)還可具有以下特點,所述更新模塊還用于:每個節(jié)點接收到所述更新通 知后,進行所述轉(zhuǎn)發(fā)處理前,判斷是否已處理所述更新通知,如果已處理,則丟棄該更新通 知,如果沒有,才進行所述轉(zhuǎn)發(fā)處理。
[0043] 上述系統(tǒng)還可具有以下特點,所述服務(wù)器還用于:獲取所述更新通知并接收新的 緩存數(shù)據(jù)后,使用所述新的緩存數(shù)據(jù)更新原緩存數(shù)據(jù)。
[0044] 上述系統(tǒng)還可具有以下特點,所述η為10,所述k為3,所述第一結(jié)構(gòu)為Petersen 圖。
[0045] 上述系統(tǒng)還可具有以下特點,所述系統(tǒng)還包括:分布式緩存系統(tǒng);所述中央控制 裝置還包括存儲控制模塊和訪問控制模塊,其中:
[0046] 所述存儲控制模塊用于,將應(yīng)用的緩存數(shù)據(jù)存儲到所述分布式緩存系統(tǒng)中,以及, 將使用頻率和/或大小滿足預(yù)定條件的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的本地緩存 系統(tǒng)中;
[0047] 所述訪問控制模塊用于,接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求 后,如果所述分布式緩存系統(tǒng)中不存在所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù) 據(jù)源獲取所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用請求訪問的 緩存數(shù)據(jù)發(fā)送給所述一個或多個應(yīng)用,并將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新 到所述分布式緩存系統(tǒng)中。
[0048] 上述系統(tǒng)還可具有以下特點,所述預(yù)定條件包括:
[0049] 使用頻率大于第一閾值且占用的緩存空間小于第二閾值;
[0050] 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
[0051] 上述系統(tǒng)還可具有以下特點,所述訪問控制模塊還用于,接收到應(yīng)用的緩存數(shù)據(jù) 訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起所述緩存數(shù)據(jù)訪問請求的服務(wù)器 的本地緩存系統(tǒng)或者位于所述分布式緩存系統(tǒng)中,則從所述本地緩存系統(tǒng)或所述分布式緩 存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
[0052] 上述系統(tǒng)還可具有以下特點,所述訪問控制模塊從所述本地緩存系統(tǒng)或所述分布 式緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用包括:
[0053] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存系統(tǒng)中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù) 據(jù)訪問請求的服務(wù)器的本地緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng) 用;
[0054] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存系統(tǒng)中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用請求 訪問的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存系統(tǒng)中是否存在所述應(yīng)用請 求訪問的緩存數(shù)據(jù),如果存在,則從所述分布式緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存 數(shù)據(jù),發(fā)送給所述應(yīng)用。
[0055] 上述系統(tǒng)還可具有以下特點,每個所述服務(wù)器上布置有所述中央控制裝置,且不 同服務(wù)器上的所述中央控制裝置之間相互通信;
[0056] 所述訪問控制模塊還用于,當(dāng)多個服務(wù)器上的中央控制裝置的訪問控制模塊分別 接收到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存系 統(tǒng)中不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個中央控制裝置的訪問控制模塊 從所述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā)送給所述其所在的服務(wù)器上的 應(yīng)用;并通知所述更新模塊將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存系 統(tǒng)中,以及,將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個中央控制裝置中其他中 央控制裝置的訪問控制模塊,由所述其他中央控制裝置的訪問控制模塊發(fā)送給各自所在的 服務(wù)器上的應(yīng)用。
[0057] 本申請包括以下優(yōu)點:
[0058] 1、同時使用本地緩存和分布式緩存,提升系統(tǒng)性能,也避免本地內(nèi)存占用過多。
[0059] 2、數(shù)據(jù)除可存放在本地緩存中外,對于大數(shù)據(jù)也可存放于本地磁盤中,避免過多 占用本地內(nèi)存,另外,大數(shù)據(jù)直接從本地獲取,可以避免大對象數(shù)據(jù)網(wǎng)絡(luò)傳輸和序列化的損 耗。
[0060] 3、通過多個節(jié)點組成第一結(jié)構(gòu)進行更新通知,實現(xiàn)P2P模式的集群內(nèi)本地緩存同 步,保證集群中的各服務(wù)器的本地緩存的及時更新和同步。相對于現(xiàn)有技術(shù)中的廣播式更 新通知方式,本申請中由于更新通知存在冗余(以Petersen圖為例,每個節(jié)點接收到3次 通知),可以避免僅通知1次時造成部分應(yīng)用服務(wù)器無法被通知到的問題。另外,廣播式更 新通知方式中,發(fā)起更新通知的單個應(yīng)用服務(wù)器需要和集群中其余服務(wù)器之間進行交互, 交互操作過多,對單個服務(wù)器性能要求高,本申請實施例中單個服務(wù)器只需接收三次更新 通知,發(fā)送三次更新通知,對單個服務(wù)器性能要求低。
[0061] 4、通過中央控制裝置的二段提交策略,控制同步的事務(wù)性。
[0062] 當(dāng)然,實施本申請的任一產(chǎn)品并不一定需要同時達到以上所述的所有優(yōu)點。
【專利附圖】
【附圖說明】
[0063] 圖1是本申請實施例緩存控制系統(tǒng)示意圖;
[0064] 圖2是本申請實施例Petersen圖示意圖;
[0065] 圖3是本申請緩存控制系統(tǒng)框圖。
【具體實施方式】
[0066] 為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本申請 的實施例進行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中 的特征可以相互任意組合。
[0067] 另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的 順序執(zhí)行所示出或描述的步驟。
[0068] 本申請中,通過中央控制裝置統(tǒng)一管理緩存數(shù)據(jù),應(yīng)用需要訪問緩存數(shù)據(jù)時,向中 央控制裝置發(fā)送訪問請求,由中央控制裝置將緩存數(shù)據(jù)返回給應(yīng)用,以及,通過將集群中的 服務(wù)器組成層級網(wǎng)絡(luò)結(jié)構(gòu),實現(xiàn)P2P模式的集群內(nèi)本地緩存同步,保證集群中的各服務(wù)器 的本地緩存的及時更新和同步。
[0069] 本申請實施例提供一種緩存控制方法,包括:
[0070] 將包含多個服務(wù)器的集群形成層級網(wǎng)絡(luò)結(jié)構(gòu);
[0071 ] 其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連接而 成;每一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級網(wǎng)絡(luò)結(jié)構(gòu) 的最底層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最 底層的第一結(jié)構(gòu)中的一個節(jié)點;
[0072] 所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所述預(yù)定規(guī)則包括:所述η個節(jié)點中 的每個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η, η > 1 ;
[0073] 判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié) 構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié) 構(gòu)的每個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所述更新通知,以使所述 集群中的各服務(wù)器更新緩存數(shù)據(jù)。
[0074] 在本實施例的一種備選方案中,層級網(wǎng)絡(luò)結(jié)構(gòu)的一種配置過程為:
[0075] 將集群中的每個應(yīng)用服務(wù)器作為一個節(jié)點,每η個節(jié)點按預(yù)定規(guī)則進行連接,生 成所述層級網(wǎng)絡(luò)結(jié)構(gòu)中的最底層的第一結(jié)構(gòu),且每η個節(jié)點生成一個所述第一結(jié)構(gòu);
[0076] 如果所述最底層的第一結(jié)構(gòu)只有1個,該層極網(wǎng)絡(luò)結(jié)構(gòu)的最底層即為最頂層,配 置結(jié)束;
[0077] 如果最底層的第一結(jié)構(gòu)大于1個,則將最底層的每個第一結(jié)構(gòu)作為當(dāng)前層(即最 底層的上一層)中的一個節(jié)點,所述當(dāng)前層網(wǎng)絡(luò)結(jié)構(gòu)的每η個節(jié)點按所述預(yù)定規(guī)則進行連 接,生成新的第一結(jié)構(gòu);
[0078] 繼續(xù)判斷當(dāng)前層中的第一結(jié)構(gòu)數(shù)量是否大于1個,如果只有1個,則配置結(jié)束;如 果大于1個,則將當(dāng)前層中的每個第一結(jié)構(gòu)作為當(dāng)前層的上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點, 并將所述節(jié)點按所述預(yù)定規(guī)則進行連接,生成新的第一結(jié)構(gòu);重復(fù)該步驟,直到所述層級網(wǎng) 絡(luò)結(jié)構(gòu)中的最頂層只有1個第一結(jié)構(gòu)生成;其中,生成每個第一結(jié)構(gòu)時,如果剩余的節(jié)點數(shù) 少于η個,則缺少的節(jié)點用空節(jié)點替代,以再生成第一結(jié)構(gòu)。
[0079] 在本實施例的一種備選方案中,所述發(fā)送更新通知至所述頂層的第一結(jié)構(gòu),由所 述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每個 節(jié)點獲取所述更新通知包括:
[0080] 所述發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由所述頂層的第一結(jié) 構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每個節(jié)點獲取所述更 新通知包括:
[0081] 每個所述第一結(jié)構(gòu)中可以設(shè)定一主節(jié)點;
[0082] 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點;
[0083] 每個節(jié)點接收到所述更新通知后,進行如下轉(zhuǎn)發(fā)處理:
[0084] 將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點;以及,如果所述節(jié)點非最 底層節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一結(jié)構(gòu)中的主節(jié)點。 [0085] 所述方法還包括:每個節(jié)點接收到所述更新通知后,進行所述轉(zhuǎn)發(fā)處理前,還可判 斷是否已處理所述更新通知,如果已處理,則丟棄該更新通知,如果沒有,才進行所述轉(zhuǎn)發(fā) 處理。
[0086] 在本實施例的一種備選方案中,還包括:所述服務(wù)器獲取所述更新通知并接收新 的緩存數(shù)據(jù)后,更新原緩存數(shù)據(jù)。
[0087] 在本實施例的一種備選方案中,在所述服務(wù)器獲取所述更新通知并接收新的緩存 數(shù)據(jù)后,通知所述服務(wù)器進行變更生效,服務(wù)器接收到變更生效的指令后,使用所述新的緩 存數(shù)據(jù)更新原緩存數(shù)據(jù)。
[0088] 在本實施例的一種備選方案中,所述第一結(jié)構(gòu)為Petersen圖,所述η為10,所述k 為3。當(dāng)然,n,k也可以取其它值,第一結(jié)構(gòu)也可以是其他結(jié)構(gòu),比如,η = 5, k = 2,第一結(jié) 構(gòu)為一五邊形,等等。
[0089] 在本實施例的一種備選方案中,還包括:
[0090] 將應(yīng)用的緩存數(shù)據(jù)存儲到分布式緩存中,以及,將使用頻率和/或大小滿足預(yù)定 條件的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的本地緩存中;
[0091] 接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中 不存在所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述一個或多個應(yīng)用請 求訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述一個或多個 應(yīng)用,并將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中。
[0092] 預(yù)定條件可以根據(jù)需要設(shè)定,在本實施例的一種備選方案中,所述預(yù)定條件包 括:
[0093] 使用頻率大于第一閾值且占用的緩存空間小于第二閾值;
[0094] 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
[0095] 在本實施例的一種備選方案中,還包括:
[0096] 接收到應(yīng)用的緩存數(shù)據(jù)訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起 所述緩存數(shù)據(jù)訪問請求的服務(wù)器的本地緩存或者位于所述分布式緩存中,則從所述本地緩 存或所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
[0097] 在本實施例的一種備選方案中,所述從所述本地緩存或所述分布式緩存中獲取所 述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用包括:
[0098] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù)據(jù)訪問 請求的服務(wù)器的本地緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用;
[0099] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用請求訪問 的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存中是否存在所述應(yīng)用請求訪問的 緩存數(shù)據(jù),如果存在,則從所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所 述應(yīng)用。
[0100] 在本實施例的一種備選方案中,還包括:
[0101] 每個所述服務(wù)器上布置有中央控制裝置,且不同服務(wù)器上的中央控制裝置之間相 互通信;
[0102] 所述接收到多個應(yīng)用的訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中 不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存 數(shù)據(jù),將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個應(yīng)用,并將所述多個應(yīng)用請求 訪問的緩存數(shù)據(jù)更新到所述分布式緩存中包括:
[0103] 多個中央控制裝置分別接收到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪 問請求后,如果所述分布式緩存中不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個 中央控制裝置從所述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā)送給所述其所在 的服務(wù)器上的應(yīng)用,并將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中,以 及,將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個中央控制裝置中其他中央控制裝 置由所述其他中央控制裝置發(fā)送給各自所在的服務(wù)器上的應(yīng)用。
[0104] 在本實施例的一種備選方案中,將滿足所述預(yù)定條件的數(shù)據(jù)存儲到所述應(yīng)用的應(yīng) 用服務(wù)器的本地緩存中包括:
[0105] 將滿足第一子條件的數(shù)據(jù)放入所述應(yīng)用的應(yīng)用服務(wù)器的本地緩存的第一區(qū)間中 存儲;
[0106] 將所述滿足第二子條件的數(shù)據(jù)存入所述應(yīng)用的應(yīng)用服務(wù)器的或以文件方式存儲, 將滿足第二子條件的數(shù)據(jù)的索引表存入所述應(yīng)用的應(yīng)用服務(wù)器的本地緩存的第二區(qū)間,所 述索引表指示滿足所述第二子條件的數(shù)據(jù)的存儲位置。
[0107] 中央控制裝置從所述本地緩存或分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù) 據(jù)并發(fā)送給所述應(yīng)用分兩種情況,根據(jù)請求訪問的數(shù)據(jù)是否滿足預(yù)定條件分別處理。由于 滿足預(yù)定條件的緩存數(shù)據(jù)也存儲在本地緩存中,因此,如果要求訪問滿足預(yù)定條件的緩存 數(shù)據(jù),則中央控制裝置先查找本地緩存,如果本地緩存沒有要求訪問的緩存數(shù)據(jù),則查找分 布式緩存,如果分布式緩存中也沒有要求訪問的緩存數(shù)據(jù),則去數(shù)據(jù)源獲取要求訪問的緩 存數(shù)據(jù)。如果要求訪問不滿足預(yù)定條件的緩存數(shù)據(jù),則直接查找分布式緩存,如果分布式緩 存中沒有要求訪問的緩存數(shù)據(jù),則去數(shù)據(jù)源獲取要求訪問的緩存數(shù)據(jù),具體的:
[0108] 1)當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件時,判斷發(fā)起所述緩存數(shù)據(jù) 訪問請求的應(yīng)用服務(wù)器的本地緩存中是否存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),如果存在, 從發(fā)起所述緩存數(shù)據(jù)訪問請求的應(yīng)用服務(wù)器的本地緩存中獲取所述應(yīng)用請求訪問的緩存 數(shù)據(jù),發(fā)送給所述應(yīng)用;如果發(fā)起所述緩存數(shù)據(jù)訪問請求的應(yīng)用服務(wù)器的本地緩存中不存 在所述應(yīng)用請求訪問的緩存數(shù)據(jù),則判斷所述分布式緩存中是否存在所述應(yīng)用請求訪問的 緩存數(shù)據(jù),如果存在,則從所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所 述應(yīng)用;
[0109] 2)當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存 中是否存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),如果存在,則從所述分布式緩存中獲取所述應(yīng) 用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用。
[0110] 上述方案中,結(jié)合分布式緩存和本地緩存存儲所述緩存數(shù)據(jù),相對于只使用單一 緩存的方式,提升了系統(tǒng)性能,也避免過多占用本地內(nèi)存。另外,通過中央控制裝置統(tǒng)一管 理緩存數(shù)據(jù),應(yīng)用需要訪問緩存數(shù)據(jù)時,統(tǒng)一由中央控制裝置去獲取,避免多個服務(wù)器同時 訪問數(shù)據(jù)源造成系統(tǒng)阻塞甚至雪崩。
[0111] 下面通過一具體實施例進一步說明本申請。
[0112] 除分布式緩存中存放全量的緩存數(shù)據(jù)外,對緩存數(shù)據(jù)進行分類,按數(shù)據(jù)的大小和 使用頻率,把部分?jǐn)?shù)據(jù)在本地緩存中也存放一份,應(yīng)用運行時對這部分?jǐn)?shù)據(jù)優(yōu)先從本地緩 存中獲取數(shù)據(jù)。
[0113] 本實施例中,將需緩存的數(shù)據(jù)分為如下四類:
[0114] A類:占用緩存空間大于第五閾值,但指定時段內(nèi)的使用頻率小于第六閾值的數(shù) 據(jù)。如:商品數(shù)據(jù)。
[0115] B類:使用頻率大于第一閾值,占用緩存空間小于第二閾值。如:系統(tǒng)運行時的參 數(shù)數(shù)據(jù)。
[0116] C類:占用緩存空間大于第三閾值,使用頻率大于第四閾值。
[0117] D類:占用緩存空間大于第三閾值,使用頻率小于等于第四閾值。
[0118] 本實施例中,上述B類和C類數(shù)據(jù)為滿足前述預(yù)定條件的數(shù)據(jù),A類和D類數(shù)據(jù)為 不滿足預(yù)定條件的數(shù)據(jù),因此,A類、D類數(shù)據(jù)僅需存放在分布式緩存上,B類和C類除在分 布式緩存中存放外,同時需在本地緩存存放副本。
[0119] 本實施例的緩存控制系統(tǒng)基于圖2所示架構(gòu),如圖2所示,包括:中央控制裝置 101,分布式緩存102,應(yīng)用A集群103,數(shù)據(jù)源(Datastore) 104,以及應(yīng)用B105,中央控制裝 置101為邏輯實體,本實例中為了示意方便單獨繪出,物理上中央控制裝置101可以部署在 應(yīng)用A集群103中的各應(yīng)用服務(wù)器上,其中:
[0120] 中央控制裝置101 :用于對集群環(huán)境下的本地緩存進行管理,對不同應(yīng)用間的共 享緩存數(shù)據(jù)進行管理,對同一應(yīng)用的本地緩存和分布式緩存中的B、c類數(shù)據(jù)進行同步管 理。中央控制裝置可以與應(yīng)用一起部署在應(yīng)用服務(wù)器上,與應(yīng)用沒有網(wǎng)絡(luò)通信之類的損耗。 該中央控制裝置可以是一個JAR (Java Archive, Java歸檔文件)包或者dll程序庫等。
[0121] 分布式緩存(center cache) 102,用于根據(jù)中央控制裝置的控制,存儲所有緩存 數(shù)據(jù),包括上述A、B、C、D四類數(shù)據(jù);其中,可以基于分布式哈希表算法進行分布緩存,如 memcache、tair 等。
[0122] 應(yīng)用A集群103 :是應(yīng)用A的一個集群環(huán)境,每一臺服務(wù)器上都部署應(yīng)用A,并且每 臺服務(wù)器上都含有一個本地緩存(如ehCache\googel MemCached)。應(yīng)用A集群內(nèi)各服務(wù) 器本地緩存中的數(shù)據(jù)都是分布式緩存中數(shù)據(jù)的子集,各服務(wù)器根據(jù)中央控制裝置的控制, 緩存上述B類、C類數(shù)據(jù)。
[0123] 數(shù)據(jù)源104中存儲應(yīng)用所需數(shù)據(jù)的真實來源,一般為數(shù)據(jù)庫或文件系統(tǒng),如 mysql、TFS(Taobao File System,淘寶文件系統(tǒng))。
[0124] 應(yīng)用B105 :也可是集群環(huán)境或單機環(huán)境,為方便描述,本實施例中為單機環(huán)境。
[0125] 應(yīng)用A與應(yīng)用B的場景關(guān)系:應(yīng)用A使用者是普通用戶;應(yīng)用B是給管理員進行使 用,用來配置應(yīng)用A運行相關(guān)參數(shù)。
[0126] 該實施例中,應(yīng)用A集群中的各服務(wù)器中的本地緩存可以分為兩區(qū)間,第一區(qū)間 中存放中央控制裝置分發(fā)的B類數(shù)據(jù);第二區(qū)間存放中央控制裝置分發(fā)的C類數(shù)據(jù)的索引 表,C類數(shù)據(jù)以文件方式或在內(nèi)存另外保存,索引表中指示C類數(shù)據(jù)的存儲位置。
[0127] 中央控制裝置可以根據(jù)FIF0(First Input First Output,先入先出)和最多使用 次數(shù)等算法,把C類數(shù)據(jù)放入第二區(qū)間進行管理,從而避免大數(shù)據(jù)網(wǎng)絡(luò)傳輸和序列化的損 耗。
[0128] 中央控制裝置會管理一張應(yīng)用配置的第一區(qū)間數(shù)據(jù)表和第二區(qū)間數(shù)據(jù)表(比方 某個配置參數(shù)需經(jīng)常用,那么在表中配置此參數(shù)的名稱),在表中標(biāo)記過的數(shù)據(jù)就會從本地 緩存中獲取,獲取不到時,才會到分布式緩存102中獲取,在分布式緩存102中獲取不到時 則到數(shù)據(jù)源104獲取。
[0129] A、D類數(shù)據(jù)都會由中央控制裝置直接到分布式緩存102中去獲取,在分布式緩存 102中獲取不到時則到數(shù)據(jù)源104獲取。
[0130] 應(yīng)用A集群環(huán)境第一次啟動時,第一臺啟動的服務(wù)器會通過中央控制裝置陸續(xù)先 加載所有B、C類數(shù)據(jù),放置到分布式緩存和本地緩存中,接下來其他服務(wù)器啟動時通過中 央控制裝置就可以直接從分布式緩存中加載數(shù)據(jù)到本地緩存中了。
[0131] 外部應(yīng)用修改了 B、C類數(shù)據(jù)時,向中央控制裝置發(fā)送通知,觸發(fā)基于Petersen圖 算法的P2P模式數(shù)據(jù)同步過程,保證所有服務(wù)的本地緩存都是同一份鏡像。
[0132] 如圖2所示,為Petersen圖的結(jié)構(gòu),包括10個節(jié)點,每個節(jié)點都會與其他三個節(jié) 點連接。
[0133] 對應(yīng)用集群的本地緩存之間進行同步管理的機制可以是P2P模式,基于Petersen 圖算法來實現(xiàn)。
[0134] 假設(shè)應(yīng)用A集群中包含N臺服務(wù)器。
[0135] 將所述集群按如下方式配置為基于Petersen圖的層級網(wǎng)絡(luò)結(jié)構(gòu):
[0136] 其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以Petersen圖的形式連接而成;每 一包含多個節(jié)點的Petersen圖構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的節(jié)點;所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最底 層包括一個或多個Petersen圖,集群中的每個服務(wù)器作為最底層的Petersen圖中的一個 節(jié)點。
[0137] 在Petersen圖中,包含10個節(jié)點,每個節(jié)點與同一 Petersen圖中的其他3個節(jié) 點連接。如果在同一層結(jié)構(gòu)中生成不止1個Petersen圖,把當(dāng)前生成的每個Petersen圖 當(dāng)作一個節(jié)點,然后每10個節(jié)點再組成一個Petersen圖;重復(fù)執(zhí)行該步驟,直到最終生成 一個Petersen圖,在生成Petersen圖的過程中,如果生成某個Petersen圖時,節(jié)點數(shù)少于 10個,用特定的空節(jié)點(null)頂替,組成10個節(jié)點后再生成Petersen圖。
[0138] 其中,每個Petersen圖可以指定一個節(jié)點作為該Petersen圖的主節(jié)點。
[0139] 通過上述步驟,生成了一個嵌套的Petersen圖,最底層的Petersen圖是由實際的 服務(wù)器節(jié)點構(gòu)成,最頂層是一個Petersen圖。上述生成的基于Petersen圖的層級網(wǎng)絡(luò)結(jié) 構(gòu)的方法也可應(yīng)用于生成具有非Petersen圖的第一結(jié)構(gòu)的層級網(wǎng)絡(luò)結(jié)構(gòu)。
[0140] 基于上述Petersen圖的P2P模式的緩存同步步驟如下:
[0141] 步驟401,將緩存數(shù)據(jù)更新通知傳給所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最頂層Petersen圖的主 節(jié)點。
[0142] 步驟402,每個節(jié)點收到更新通知后,先判斷是否處理過該更新通知,如果沒有處 理過,將給更新通知轉(zhuǎn)發(fā)給同層的相鄰三個節(jié)點。
[0143] 具體的,頂層Petersen圖的主節(jié)點收到更新通知后,通知同層的相鄰節(jié)點,同層 的相鄰節(jié)點接收到更新通知后,如果沒有處理過,則繼續(xù)轉(zhuǎn)發(fā)更新通知給同層的相鄰三個 節(jié)點,依次類推,該更新通知會轉(zhuǎn)發(fā)到同層的所有節(jié)點。
[0144] 這樣同一層的每個節(jié)點最多會接到三次通知,但只需處理第一次通知。這樣的處 理方式,使得節(jié)點僅在第一次接收到更新通知的時候進行處理,避免冗余操作。
[0145] 步驟403,如果節(jié)點還是Petersen圖,而不是服務(wù)器,那么再通知這個Petersen圖 的主節(jié)點,直到通知到達最底層Petersen圖的服務(wù)器節(jié)點;
[0146] 步驟404,服務(wù)器節(jié)點收到更新通知后,把newData讀到內(nèi)存中,并且通知中央控 制裝置已成功接收數(shù)據(jù)完成。
[0147] 步驟405,所有服務(wù)器都通知中央控制裝置接收數(shù)據(jù)成功后,中央控制裝置通知所 有服務(wù)器進行變更生效,各服務(wù)器使用newData覆蓋原數(shù)據(jù),再通知中央控制裝置激活成 功。
[0148] 步驟406,所有服務(wù)器都通知激活成功時,整個過程結(jié)束。
[0149] 除最底層的Petersen圖的節(jié)點為服務(wù)器外,其他節(jié)點均為邏輯節(jié)點,邏輯節(jié)點處 理更新通知的操作由中央控制裝置完成,直到更新通知到達最底層的服務(wù)器節(jié)點。各服務(wù) 器上的中央控制裝置進行交互,完成通知操作。
[0150] 現(xiàn)有技術(shù)中,對于集群環(huán)境,各服務(wù)器之間緩存數(shù)據(jù)同步一般是由一臺服務(wù)器廣 播消息通知其他服務(wù)器的緩存失效。其他服務(wù)器下次訪問數(shù)據(jù)時先請求到緩存,如果未命 中,才到真實數(shù)據(jù)源獲取數(shù)據(jù)再同時更新緩存。該方法不能及時和保證事務(wù)(集群模式) 的同步。本實施例中,一個應(yīng)用服務(wù)器更新緩存數(shù)據(jù)后,通過基于Petersen圖的P2P模式 同步更新其他應(yīng)用服務(wù)器的緩存數(shù)據(jù),保證了緩存更新的效率。
[0151] 如果有應(yīng)用服務(wù)器同步更新未成功,可由中央控制裝置直接與失敗的服務(wù)器通 信,進行更新;或者是直接把失敗的應(yīng)用服務(wù)器的本地緩存失效,依靠被動模式更新,被動 模式更新是指僅使數(shù)據(jù)失效,在后續(xù)需要用到失效的緩存數(shù)據(jù)時,從數(shù)據(jù)源獲取新的緩存 數(shù)據(jù),更新失效的緩存數(shù)據(jù);或者由中央控制裝置通知所有應(yīng)用服務(wù)器進行回滾操作,本實 施例中,回滾操作是指恢復(fù)到進行緩存數(shù)據(jù)更新之前的狀態(tài),提供了滿足更多的業(yè)務(wù)特性 需求的選擇。
[0152] 上述方案具有如下優(yōu)點:
[0153] 1、利用Petersen圖的特點,使用P2P模式病毒式的傳播消息和新的緩存數(shù)據(jù)包。
[0154] 2、每臺服務(wù)器只會固定收到緩存更新的通知和發(fā)出緩存更新的通知三次,簡單可 控。
[0155] 3、利用二段提交方式,本申請中的二段提交方式即服務(wù)器收到更新通知后,把新 的緩存數(shù)據(jù)讀到內(nèi)存中,并且通知中央控制裝置已成功接收數(shù)據(jù)完成,所有服務(wù)器都通知 中央控制裝置接收數(shù)據(jù)成功后,中央控制裝置通知所有服務(wù)器進行變更生效,各服務(wù)器使 用新的緩存數(shù)據(jù)覆蓋原緩存數(shù)據(jù),各服務(wù)器再通知中央控制裝置激活成功,從而保證事務(wù) 的一致性,讓集群內(nèi)各服務(wù)器本地緩存中的數(shù)據(jù)都一致。相對于現(xiàn)有技術(shù)中,對于集群環(huán) 境,各服務(wù)器之間緩存數(shù)據(jù)同步一般是由一臺服務(wù)器廣播消息通知其他服務(wù)器的緩存失 效。其他服務(wù)器下次訪問數(shù)據(jù)時先請求到緩存,如果未命中,才到數(shù)據(jù)源獲取數(shù)據(jù)并同時更 新緩存的方式,本申請能及時進行緩存數(shù)據(jù)更新和并保證事務(wù)(集群模式)的同步。
[0156] 本申請實施例還提供一種緩存控制系統(tǒng),如圖3所示,包括:
[0157] 集群301以及中央控制裝置302,所述集群301包括多個服務(wù)器3011,每一服務(wù)器 包含本地緩存系統(tǒng)3012 ;所述中央控制裝置302包括配置模塊3021和更新模塊3022,其中
[0158] 所述配置模塊3021用于,將所述集群的所述多個服務(wù)器形成層級網(wǎng)絡(luò)結(jié)構(gòu),記錄 所述層級網(wǎng)絡(luò)結(jié)構(gòu):其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形 式連接而成;每一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級 網(wǎng)絡(luò)結(jié)構(gòu)的最底層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò) 結(jié)構(gòu)的最底層的第一結(jié)構(gòu)中的一個節(jié)點;所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所 述預(yù)定規(guī)則包括:所述η個節(jié)點中的每個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η, η > 1 ;
[0159] 所述更新模塊3022用于:判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng) 絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直 到所述最底層的第一結(jié)構(gòu)的每個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所 述更新通知,以使所述集群中的各服務(wù)器更新緩存數(shù)據(jù)。
[0160] 所述配置模塊3021還用于:在每個所述第一結(jié)構(gòu)中設(shè)定一主節(jié)點;
[0161] 所述更新模塊3022發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由所 述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每個 節(jié)點獲取所述更新通知包括:
[0162] 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點;每個節(jié)點接收到所述更新 通知后,進行如下轉(zhuǎn)發(fā)處理:將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點,以及, 如果所述節(jié)點非最底層節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一 結(jié)構(gòu)中的主節(jié)點。
[0163] 在本實施例的一種備選方案中,所述更新模塊3022還用于:每個節(jié)點接收到所述 更新通知后,進行所述轉(zhuǎn)發(fā)處理前,判斷是否已處理所述更新通知,如果已處理,則丟棄該 更新通知,如果沒有,才進行所述轉(zhuǎn)發(fā)處理。
[0164] 在本實施例的一種備選方案中,所述服務(wù)器3011還用于:獲取所述更新通知并接 收新的緩存數(shù)據(jù)后,使用所述新的緩存數(shù)據(jù)更新原緩存數(shù)據(jù)。
[0165] 在本實施例的一種備選方案中,所述η為10,所述k為3,所述第一結(jié)構(gòu)為 Petersen 圖。
[0166] 在本實施例的一種備選方案中,所述系統(tǒng)還包括:分布式緩存系統(tǒng)303 ;所述中央 控制裝置302還包括存儲控制模塊3023和訪問控制模塊3024,其中:
[0167] 所述存儲控制模塊3023用于,將應(yīng)用的緩存數(shù)據(jù)存儲到所述分布式緩存系統(tǒng)303 中,以及,將使用頻率和/或大小滿足預(yù)定條件的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的 本地緩存系統(tǒng)3012中;
[0168] 所述訪問控制模塊3024用于,接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問 請求后,如果所述分布式緩存系統(tǒng)303中不存在所述一個或多個應(yīng)用請求訪問的緩存數(shù) 據(jù),則向數(shù)據(jù)源獲取所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用 請求訪問的緩存數(shù)據(jù)發(fā)送給所述一個或多個應(yīng)用,并將所述一個或多個應(yīng)用請求訪問的緩 存數(shù)據(jù)更新到所述分布式緩存系統(tǒng)303中。
[0169] 在本實施例的一種備選方案中,所述預(yù)定條件包括:
[0170] 使用頻率大于第一閾值且占用的緩存空間小于第二閾值;
[0171] 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
[0172] 在本實施例的一種備選方案中,所述訪問控制模塊3024還用于,接收到應(yīng)用的緩 存數(shù)據(jù)訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起所述緩存數(shù)據(jù)訪問請求的 服務(wù)器的本地緩存系統(tǒng)3012或者位于所述分布式緩存系統(tǒng)303中,則從所述本地緩存系統(tǒng) 3012或所述分布式緩存系統(tǒng)303中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
[0173] 在本實施例的一種備選方案中,所述訪問控制模塊3024從所述本地緩存系統(tǒng) 3012或所述分布式緩存系統(tǒng)303中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用 包括:
[0174] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存系統(tǒng)中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù)據(jù) 訪問請求的服務(wù)器的本地緩存系統(tǒng)3012中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所 述應(yīng)用;
[0175] 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請 求的服務(wù)器的本地緩存系統(tǒng)3012中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用 請求訪問的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存系統(tǒng)303中是否存在所 述應(yīng)用請求訪問的緩存數(shù)據(jù),如果存在,則從所述分布式緩存系統(tǒng)303中獲取所述應(yīng)用請 求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用。
[0176] 在本實施例的一種備選方案中,每個所述服務(wù)器3011上布置有所述中央控制裝 置302,且不同服務(wù)器上的所述中央控制裝置302之間相互通信;
[0177] 所述訪問控制模塊3024還用于,當(dāng)多個服務(wù)器上的中央控制裝置302的訪問控制 模塊3024分別接收到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所 述分布式緩存系統(tǒng)303中不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個中央控制 裝置302的訪問控制模塊3024從所述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā) 送給所述其所在的服務(wù)器上的應(yīng)用,并通知所述更新模塊3022將所述多個應(yīng)用請求訪問 的緩存數(shù)據(jù)更新到所述分布式緩存系統(tǒng)303中,以及,將所述多個應(yīng)用請求訪問的緩存數(shù) 據(jù)發(fā)送給所述多個中央控制裝置中剩余其他中央控制裝置的訪問控制模塊,由所述其他中 央控制裝置的訪問控制模塊發(fā)送給各自所在的服務(wù)器上的應(yīng)用。
[0178] 本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng) 地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的 形式實現(xiàn)。本申請不限制于任何特定形式的硬件和軟件的結(jié)合。
【權(quán)利要求】
1. 一種緩存控制方法,其特征在于,包括: 將包含多個服務(wù)器的集群形成層級網(wǎng)絡(luò)結(jié)構(gòu); 其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連接而成;每 一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最底 層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最底層的 第一結(jié)構(gòu)中的一個節(jié)點; 所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所述預(yù)定規(guī)則包括:所述η個節(jié)點中的每 個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η, η > 1 ; 判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由 所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每 個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所述更新通知,以使所述集群中 的各服務(wù)器更新緩存數(shù)據(jù)。
2. 如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的 頂層的第一結(jié)構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最 底層的第一結(jié)構(gòu)的每個節(jié)點獲取所述更新通知包括: 每個所述第一結(jié)構(gòu)中設(shè)定一主節(jié)點; 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點; 每個節(jié)點接收到所述更新通知后,進行如下轉(zhuǎn)發(fā)處理: 將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點;以及,如果所述節(jié)點非最底層 節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一結(jié)構(gòu)中的主節(jié)點。
3. 如權(quán)利要求2所述的方法,其特征在于,所述方法還包括:每個節(jié)點接收到所述更新 通知后,進行所述轉(zhuǎn)發(fā)處理前,判斷是否已處理所述更新通知,如果已處理,則丟棄該更新 通知,如果沒有,才進行所述轉(zhuǎn)發(fā)處理。
4. 如權(quán)利要求1所述的方法,其特征在于,所述方法還包括:所述服務(wù)器獲取所述更新 通知并接收新的緩存數(shù)據(jù)后,更新原緩存數(shù)據(jù)。
5. 如權(quán)利要求1至4任一所述的方法,其特征在于,所述η為10,所述k為3,所述第一 結(jié)構(gòu)為Petersen圖。
6. 如權(quán)利要求1至4任一所述的方法,其特征在于,所述方法還包括: 將應(yīng)用的緩存數(shù)據(jù)存儲到分布式緩存中,以及,將使用頻率和/或大小滿足預(yù)定條件 的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的本地緩存中; 接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中不 存在所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述一個或多個應(yīng)用請求 訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述一個或多個應(yīng) 用,并將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中。
7. 如權(quán)利要求6所述的方法,其特征在于,所述預(yù)定條件包括: 使用頻率大于第一閾值且占用的緩存空間小于第二閾值; 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
8. 如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 接收到應(yīng)用的緩存數(shù)據(jù)訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起所述 緩存數(shù)據(jù)訪問請求的服務(wù)器的本地緩存或者位于所述分布式緩存中,則從所述本地緩存或 所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
9. 如權(quán)利要求8所述的方法,其特征在于,所述從所述本地緩存或所述分布式緩存中 獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用包括: 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請求的 服務(wù)器的本地緩存中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù)據(jù)訪問請求 的服務(wù)器的本地緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用; 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請求的 服務(wù)器的本地緩存中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用請求訪問的緩 存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存中是否存在所述應(yīng)用請求訪問的緩存 數(shù)據(jù),如果存在,則從所述分布式緩存中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng) 用。
10. 如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 每個所述服務(wù)器上布置有中央控制裝置,且不同服務(wù)器上的中央控制裝置之間相互通 信; 所述接收到多個應(yīng)用的訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存中不 存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù) 據(jù),將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個應(yīng)用,并將所述多個應(yīng)用請求訪 問的緩存數(shù)據(jù)更新到所述分布式緩存中包括: 多個中央控制裝置分別接收到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請 求后,如果所述分布式緩存中不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個中央 控制裝置從所述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā)送給所述其所在的服 務(wù)器上的應(yīng)用,并將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存中,以及,將 所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個中央控制裝置中其他中央控制裝置由 所述其他中央控制裝置發(fā)送給各自所在的服務(wù)器上的應(yīng)用。
11. 一種緩存控制系統(tǒng),其特征在于,所述系統(tǒng)包括:集群以及中央控制裝置,所述中 央控制裝置包括配置模塊和更新模塊,其中: 所述集群包括多個服務(wù)器,每一服務(wù)器包含本地緩存系統(tǒng); 所述配置模塊用于,將所述集群的所述多個服務(wù)器形成層級網(wǎng)絡(luò)結(jié)構(gòu),記錄所述層級 網(wǎng)絡(luò)結(jié)構(gòu):其中,所述層級網(wǎng)絡(luò)結(jié)構(gòu)的每一層由多個節(jié)點以設(shè)定的第一結(jié)構(gòu)的形式連接而 成;每一包含多個節(jié)點的第一結(jié)構(gòu)構(gòu)成上一層網(wǎng)絡(luò)結(jié)構(gòu)中的一個節(jié)點;所述層級網(wǎng)絡(luò)結(jié)構(gòu) 的最底層包括一個或多個第一結(jié)構(gòu),所述集群中的每個服務(wù)器作為所述層級網(wǎng)絡(luò)結(jié)構(gòu)的最 底層的第一結(jié)構(gòu)中的一個節(jié)點;所述第一結(jié)構(gòu)由每η個節(jié)點按預(yù)定規(guī)則形成,所述預(yù)定規(guī) 則包括:所述η個節(jié)點中的每個節(jié)點和該η個節(jié)點中的k個節(jié)點相連,0 < k < η, η > 1 ; 所述更新模塊用于:判斷緩存數(shù)據(jù)發(fā)生更新時,發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的 頂層的第一結(jié)構(gòu),由所述頂層的第一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最 底層的第一結(jié)構(gòu)的每個節(jié)點獲取所述更新通知,即所述集群中的各服務(wù)器獲取所述更新通 知,以使所述集群中的各服務(wù)器更新緩存數(shù)據(jù)。
12. 如權(quán)利要求11所述的系統(tǒng),其特征在于, 所述配置模塊還用于:在每個所述第一結(jié)構(gòu)中設(shè)定一主節(jié)點; 所述更新模塊發(fā)送更新通知至所述層級網(wǎng)絡(luò)結(jié)構(gòu)的頂層的第一結(jié)構(gòu),由所述頂層的第 一結(jié)構(gòu)逐層轉(zhuǎn)發(fā)至所述最底層的第一結(jié)構(gòu),直到所述最底層的第一結(jié)構(gòu)的每個節(jié)點獲取所 述更新通知包括: 將所述更新通知發(fā)送至所述頂層的第一結(jié)構(gòu)的主節(jié)點;每個節(jié)點接收到所述更新通知 后,進行如下轉(zhuǎn)發(fā)處理:將所述更新通知發(fā)送給處于同一第一結(jié)構(gòu)的相鄰節(jié)點,以及,如果 所述節(jié)點非最底層節(jié)點,將所述更新通知發(fā)送給該層級網(wǎng)絡(luò)結(jié)構(gòu)中對應(yīng)的下一層第一結(jié)構(gòu) 中的主節(jié)點。
13. 如權(quán)利要求12所述的系統(tǒng),其特征在于,所述更新模塊還用于:每個節(jié)點接收到所 述更新通知后,進行所述轉(zhuǎn)發(fā)處理前,判斷是否已處理所述更新通知,如果已處理,則丟棄 該更新通知,如果沒有,才進行所述轉(zhuǎn)發(fā)處理。
14. 如權(quán)利要求11所述的系統(tǒng),其特征在于,所述服務(wù)器還用于:獲取所述更新通知并 接收新的緩存數(shù)據(jù)后,使用所述新的緩存數(shù)據(jù)更新原緩存數(shù)據(jù)。
15. 如權(quán)利要求11至14任一所述的系統(tǒng),其特征在于,所述η為10,所述k為3,所述 第一結(jié)構(gòu)為Petersen圖。
16. 如權(quán)利要求11至14任一所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括:分布式緩存 系統(tǒng);所述中央控制裝置還包括存儲控制模塊和訪問控制模塊,其中: 所述存儲控制模塊用于,將應(yīng)用的緩存數(shù)據(jù)存儲到所述分布式緩存系統(tǒng)中,以及,將使 用頻率和/或大小滿足預(yù)定條件的緩存數(shù)據(jù)存儲到所述集群中的服務(wù)器的本地緩存系統(tǒng) 中; 所述訪問控制模塊用于,接收到一個或多個應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如 果所述分布式緩存系統(tǒng)中不存在所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù),則向數(shù)據(jù)源獲 取所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)后,將所述一個或多個應(yīng)用請求訪問的緩存數(shù) 據(jù)發(fā)送給所述一個或多個應(yīng)用,并將所述一個或多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述 分布式緩存系統(tǒng)中。
17. 如權(quán)利要求16所述的系統(tǒng),其特征在于,所述預(yù)定條件包括: 使用頻率大于第一閾值且占用的緩存空間小于第二閾值; 和/或,使用頻率大于第四閾值且占用的緩存空間大于第三閾值。
18. 如權(quán)利要求16所述的系統(tǒng),其特征在于,所述訪問控制模塊還用于,接收到應(yīng)用的 緩存數(shù)據(jù)訪問請求后,如果所述應(yīng)用請求訪問的緩存數(shù)據(jù)位于發(fā)起所述緩存數(shù)據(jù)訪問請求 的服務(wù)器的本地緩存系統(tǒng)或者位于所述分布式緩存系統(tǒng)中,則從所述本地緩存系統(tǒng)或所述 分布式緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用。
19. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述訪問控制模塊從所述本地緩存系統(tǒng) 或所述分布式緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù)并發(fā)送給所述應(yīng)用包括: 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請求的 服務(wù)器的本地緩存系統(tǒng)中存在所述應(yīng)用請求訪問的緩存數(shù)據(jù)時,從發(fā)起所述緩存數(shù)據(jù)訪問 請求的服務(wù)器的本地緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù),發(fā)送給所述應(yīng)用; 當(dāng)所述應(yīng)用請求訪問的緩存數(shù)據(jù)滿足所述預(yù)定條件且發(fā)起所述緩存數(shù)據(jù)訪問請求的 服務(wù)器的本地緩存系統(tǒng)中不存在所述應(yīng)用請求訪問的緩存數(shù)據(jù),或者,所述應(yīng)用請求訪問 的緩存數(shù)據(jù)不滿足所述預(yù)定條件時,判斷所述分布式緩存系統(tǒng)中是否存在所述應(yīng)用請求訪 問的緩存數(shù)據(jù),如果存在,則從所述分布式緩存系統(tǒng)中獲取所述應(yīng)用請求訪問的緩存數(shù)據(jù), 發(fā)送給所述應(yīng)用。
20.如權(quán)利要求16所述的系統(tǒng),其特征在于, 每個所述服務(wù)器上布置有所述中央控制裝置,且不同服務(wù)器上的所述中央控制裝置之 間相互通信; 所述訪問控制模塊還用于,當(dāng)多個服務(wù)器上的中央控制裝置的訪問控制模塊分別接收 到其所在的服務(wù)器上的應(yīng)用訪問同一緩存數(shù)據(jù)的訪問請求后,如果所述分布式緩存系統(tǒng)中 不存在所述多個應(yīng)用請求訪問的緩存數(shù)據(jù),由其中一個中央控制裝置的訪問控制模塊從所 述數(shù)據(jù)源獲取所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)后發(fā)送給所述其所在的服務(wù)器上的應(yīng)用; 并通知所述更新模塊將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)更新到所述分布式緩存系統(tǒng)中, 以及,將所述多個應(yīng)用請求訪問的緩存數(shù)據(jù)發(fā)送給所述多個中央控制裝置中其他中央控制 裝置的訪問控制模塊,由所述其他中央控制裝置的訪問控制模塊發(fā)送給各自所在的服務(wù)器 上的應(yīng)用。
【文檔編號】G06F12/08GK104142896SQ201310172568
【公開日】2014年11月12日 申請日期:2013年5月10日 優(yōu)先權(quán)日:2013年5月10日
【發(fā)明者】楊琦 申請人:阿里巴巴集團控股有限公司