分布式緩存系統、數據的緩存方法及緩存數據的查詢方法
2023-04-23 18:29:01
專利名稱:分布式緩存系統、數據的緩存方法及緩存數據的查詢方法
技術領域:
本發明涉及網際網路數據緩存領域,尤其涉及一種分布式緩存系統、數據的緩存方 法及緩存數據的查詢方法。
背景技術:
在網際網路應用領域中,數據緩存技術至關重要,不僅要保證數據緩存的可擴展性, 還要保證數據緩存的性能、可靠性。同類緩存系統大都可以解決擴展性問題,但是無法很好 地解決緩存的可靠性,而對於常用數據、會話等信息的緩存,需要很高的可靠性。一種緩存架構如圖1所示,TOB伺服器和緩存伺服器是一體的,也即是將數據緩存 在內存中的,不需要網絡通信,這樣當WEB伺服器需要重新啟動時,客戶端的緩存數據也丟 失了 ;不僅如此,由於相同的數據要在不同的WEB伺服器上面進行緩存,這樣命中率(命中 率=命中數/[命中數+沒有命中數])也比較低。經過改進的緩存架構是將Cache伺服器(緩存伺服器)和WEB伺服器分離,如圖 2所示,分離後的WEB伺服器可以將緩存數據存入到緩存伺服器節點中,在查詢時從節點中 查找緩存數據,如果找不到緩存數據。從資料庫查詢,然後再將數據寫入到這個節點。這樣 的優勢是可緩存的數據量可以通過增加緩存伺服器來進行擴展,命中率高,並且重啟單臺 WEB伺服器也不會影響緩存服務。但是以上架構在某臺緩存伺服器宕機時還是會影響服務,如果緩存的是常用數據 庫內容信息,會導致瞬間並發量增加,導致資料庫宕機;如果緩存的是用戶會話數據,則會 導致用戶會話永久丟失,用戶還需要重新登錄,WEB服務質量大打折扣。
發明內容
本發明的實施例旨在提供一種分布式緩存系統及寫入緩存數據的方法,以解決在 寫入緩存數據時的可靠性問題。為實現上述目的,本發明的實施例提供了一種分布式緩存系統,包括至少兩個緩存伺服器群;其中每個緩存伺服器群具有至少一個緩存伺服器節點;其中所述至少兩個緩存伺服器群中的一個緩存伺服器群以及該一個緩存伺服器 群中的一個緩存伺服器節點分別作為緩存數據的主緩存伺服器群和主緩存伺服器節點,其 它緩存伺服器群以及其中的一個緩存伺服器節點作為所述緩存數據的備份緩存伺服器群 和備份緩存伺服器節點;其中所述主緩存伺服器節點與所述備份緩存伺服器節點存有相同的緩存數據。根據本發明的一個實施例,所述主緩存伺服器群和所述主緩存伺服器節點由所述 緩存數據的key而定。根據本發明的一個實施例,所述備份緩存伺服器節點與所述主緩存伺服器節點具 有對應關係。
本發明還提供一種可靠的數據的緩存方法,所述方法為Sl 在至少兩個緩存伺服器群的主緩存伺服器群的主緩存伺服器節點中緩存數 據;S2 將所述數據緩存到備份緩存伺服器群的備份緩存伺服器節點中。根據本發明的一個實施例,所述步驟Sl中包括SlOl 根據所述數據的key,獲取所述數據的主緩存伺服器群;S102 根據所述數據的key,在所述主緩存伺服器群中獲取所述數據待緩存的主 緩存伺服器節點;S103 將所述數據和所述key存入到所述獲取到的主緩存伺服器節點中。根據本發明的一個實施例,所述方法還包括在存入所述數據時,寫入所述數據存 入的過期時間。相應於上述數據的緩存方法,本發明還提供一種緩存數據的查詢方法,所述 方法為S3:在至少兩個緩存伺服器群的主緩存伺服器群的主緩存伺服器節點中查找緩存 數據;S4 若未找到,則在備份緩存伺服器群的備份緩存伺服器節點中查找緩存數據。根據本發明的一個實施例,所述步驟S3包括S31 根據待查詢的緩存數據的key,查找所述緩存數據所存入的主緩存伺服器 群;S32:根據所述key,在所述查找到的主緩存伺服器群中查找所述緩存數據存入的 主緩存伺服器節點;S33:根據所述key,在所述查找到的主緩存伺服器節點查詢所述緩存數據,若找 到,直接返回查找到的緩存數據。根據本發明的一個實施例,所述步驟S31中,通過所述key的hash code (哈希碼) 模除所述緩存伺服器群的個數,來查找所述緩存數據存入的主緩存伺服器群的群號。根據本發明的一個實施例,所述步驟S32中,通過所述key的hash code模除所述 主緩存伺服器群內的緩存伺服器節點的數量,來查找所述緩存數據存入的主緩存伺服器節 點的節點號。根據本發明的一個實施例,所述方法還包括步驟S5 若在所述備份緩存伺服器群的備份緩存伺服器節點內查詢到所述緩存數據,將查 找到的緩存數據和所述key重新緩存到所述主緩存伺服器節點中。根據本發明的一個實施例,所述方法還包括S6 將所述查找到緩存數據中的過期 時間寫入到所述主緩存伺服器節點中。由上述技術方案可知,本發明的實施例通過主備緩存伺服器群中的對應伺服器節 點,使每個緩存數據都能緩存到多個伺服器群中的對應節點,即使有一個集群的伺服器宕 機,還可以通過其他集群對應節點找到該宕機的伺服器中的緩存數據,從而保證存入到緩 存伺服器中緩存數據的高可靠性,並且這種方案不同於傳統的主備伺服器,根據不同的緩 存數據的key不同,具有不同的主集群和節點,所以每個集群每個節點都在承擔著相對均 衡的業務請求,使緩存伺服器得到充分的使用,從而提高網絡的服務質量。
圖1為一種緩存系統的結構框圖;圖2為一種改進的緩存系統的結構框圖;圖3為根據本發明的一個實施例的分布式緩存系統的結構框圖;圖4為根據本發明的一個實施例的緩存數據的寫入方法的主要流程圖;圖5為根據本發明的一個實施例的緩存數據的查詢方法的主要流程圖。
具體實施例方式下面將詳細描述本發明的具體實施例。應當注意,這裡描述的實施例只用於舉例 說明,並不用於限制本發明。本發明的構思在於改進緩存伺服器和TOB伺服器之間的架構,將多個緩存伺服器 分成至少兩個伺服器群,將待緩存的緩存數據分別存入到這至少兩個緩存伺服器群內的對 應節點中。根據本發明的一個實施例,本發明的分布式緩存系統的架構如圖3所示,多個緩 存伺服器分成m個伺服器群,m> 1,即可以分成兩個伺服器群或者兩個以上的伺服器群,而 其中每個服務群中都具有至少一個伺服器節點,每個緩存伺服器群的緩存伺服器節點彼此 之間可以相同,也可以不同,只要每個緩存伺服器群之間的緩存伺服器節點滿足對應關係 皆可。本發明優選為具有相同的緩存伺服器節點。圖3中所示為m個緩存伺服器群,每個 緩存伺服器群的節點數均為η個,其中η為正整數,m個緩存伺服器群的η個緩存伺服器節 點相互之間一一對應,用來存儲相同的緩存數據。在上述架構的緩存系統中,多個緩存伺服器群中的一個緩存伺服器群會作為某待 緩存的緩存數據的主緩存伺服器群,然後該主緩存伺服器群中的某一個緩存伺服器節點會 進一步作為該緩存數據的主緩存伺服器節點,同時其它的緩存伺服器群就會作為該緩存數 據的備份緩存伺服器群,相應於主緩存伺服器節點的其它緩存伺服器群中的緩存伺服器節 點作為緩存數據的備份緩存伺服器節點。根據本發明的一個實施例,結合上述緩存架構,本發明的數據的緩存方法為Sl 在至少兩個緩存伺服器群的主緩存伺服器群的主緩存伺服器節點中緩存數 據;在該步驟Sl中,在緩存數據時,根據本發明的一個實施例,可以通過如下步驟來 獲知該數據待緩存的主緩存伺服器群以及其中的主緩存伺服器節點,從而將待緩存的數據 存入到獲知的伺服器節點中SlOl 根據待緩存的數據的key,獲取所述緩存數據要寫入的主緩存伺服器群。這裡是將所述緩存伺服器群中的一個緩存伺服器群作為待緩存的數據的主緩存 伺服器群,而其它緩存伺服器群作為該緩存數據的備份緩存伺服器群;根據本發明的一個實施例,獲取主緩存伺服器群的方法可以為根據緩存數據的 key來進行運算以獲得其要寫入的主緩存伺服器群的群號。這裡所述的key可以為緩存數 據的URL(統一資源定位符),例如,將頁面內容緩存到緩存伺服器時,將該頁面內容對應的 URL地址作為key,根據該URL來獲取頁面內容所要存入的主緩存伺服器群。這裡所述的運算方式,可以為將所述key的hash code (哈希碼)對緩存伺服器群的個數進行模除,也即模除m,取餘數從而獲得主緩存伺服器群的群號。S102 根據待緩存的數據的key,在所述獲取到的主緩存伺服器群內獲取所述待 緩存的數據所要寫入的主緩存伺服器節點。根據本發明的一個實施例,步驟S102可以具體為根據緩存數據的key來進行運算 以獲得其要寫入的節點號,這裡所述的運算方式,可以為將所述key的hash code對緩存 伺服器節點的數量進行模除,也即模除n,取餘數從而獲得所要寫入的主緩存伺服器的節點號。S103 將所述待緩存的數據以及所述key存入到所述獲取到的主緩存伺服器節點中。根據本發明的一個實施例,本發明的將緩存數據寫入到所述獲取到的主緩存服務 器群的主緩存伺服器節點中時還要同時寫入該緩存數據的過期時間,以便在一定時間內如 果該緩存數據沒有被訪問查詢就會將該數據釋放掉。S2 將所述待緩存的數據以及所述key存入(例如可以是異步寫入)到所述備份 緩存伺服器群的備份緩存伺服器節點中;這裡待緩存的數據既存入到主緩存伺服器群的主緩存伺服器節點,也存入到備份 緩存伺服器群內的備份緩存伺服器節點中,從而可以使數據同時緩存到多個緩存伺服器裡 面的多個節點中,即使有一個緩存伺服器群中的伺服器宕機,在後續的查詢中還可以通過 其它的緩存伺服器群中的伺服器節點找到數據。根據本發明的一個實施例,主緩存伺服器群的主緩存伺服器節點與備份緩存服務 器群的備份緩存伺服器節點具有對應關係,比如說具有相同的節點號,當然本發明的也不 局限於此,可以具有不同的節點號,只要主緩存伺服器群的緩存伺服器節點與備份緩存服 務器群的緩存伺服器節點滿足預設的對應規則即可。如圖4所示,上述寫入方法的一個實施方式為2. a客戶端根據待緩存數據的key的hash code模除集群數量,取餘數,計算出所 在集群;2. b客戶端根據待緩存數據的key的hash code模除節點數量,取餘數,計算出所 在節點;2. c客戶端將待緩存數據以及所述key放入計算出的節點,並在待緩存的數據裡面將過期時間寫入;2. d客戶端異步將待緩存的數據以及所述key放入到其他集群對應節點;相應於上述數據的緩存方法,本發明還提供一種緩存數據的查詢方法,同樣地,也 是結合上述緩存架構,該查詢方法為在至少兩個緩存伺服器群的主緩存伺服器群的主緩存 伺服器節點中查找緩存數據,若未找到,則在備份緩存伺服器群的備份緩存伺服器節點中 查找緩存數據。根據本發明的一個實施例,該查詢方法具體為Sll 根據待查詢的緩存數據的key,查找所述緩存數據所存入的主緩存伺服器 群;同寫入方法一樣,可以通過要查詢的緩存數據的key的hash code模除所述緩存 伺服器群的個數,來查找所述緩存數據存入的主緩存伺服器群的群號。
S12:根據所述key,在所述查找到的主緩存伺服器群中查找所述緩存數據存入的 主緩存伺服器節點;同寫入方法一樣,可以通過所述key的hash code模除所述緩存伺服器群內的緩 存伺服器節點的數量,來查找所述數據存入的主緩存伺服器節點的節點號。S13:根據所述key,在所述查找到的緩存伺服器節點查詢所述緩存數據,若找到, 直接返回查找到的數據,否則轉入步驟S14中;S14:在所述備份緩存伺服器群的備份緩存伺服器節點中查詢所述所述待查詢的 緩存數據,若找到,將查找到的緩存數據放回到步驟S12中所述主緩存伺服器群的所述緩 存伺服器節點中;由於備份緩存伺服器群的備份緩存伺服器節點與主緩存伺服器節點具有對應關 系,比如說他們具有相同的節點號,從而在主緩存伺服器節點找不到緩存數據中時,可以轉 而從備份緩存伺服器節點中查找,保證了緩存數據的可靠性。根據本發明的一個實施例,在步驟S14中將查找到的緩存數據放回到所述主緩存 伺服器群的所述緩存伺服器節點中時,還同時將所述查找到緩存數據中的過期時間寫入到 所述主緩存伺服器群的所述緩存伺服器節點中。參見圖5,上述查詢方法的一個實施方式為3. a客戶端根據待查詢緩存數據的key的hash code模除集群數量,取餘數,計算 出所在集群;3. b客戶端根據待查詢緩存數據的key的hash code模除節點數量,取餘數,計算 出所在節點;3. c客戶端將根據待查詢緩存數據的key在計算出的節點查詢;3. d如果找不到,客戶端將查詢(如依次查詢)其他集群對應節點;3. e找到以後,客戶端將查找到的緩存數據放回到所述計算出的節點,過期時間從 該緩存數據的值中獲取;根據本發明的緩存數據方法可以大大提高緩存的可靠性,因為每一個緩存數據, 都緩存到了多個集群裡面的對應節點,即使有一個集群的伺服器宕機,還可以通過其他集 群對應節點找到緩存的數據。不同的待緩存的數據具有不同的主集群和主節點,例如根據 不同的待緩存的數據的key的hash code模除結果不同,可以設置不同的主集群和主節點, 所以每個集群每個節點都在承擔著相對均衡的業務請求,使伺服器得到充分的使用。雖然已參照幾個典型實施例描述了本發明,但應當理解,所用的術語是說明和示 例性、而非限制性的術語。由於本發明能夠以多種形式具體實施而不脫離發明的精神或實 質,所以應當理解,上述實施例不限於任何前述的細節,而應在隨附權利要求所限定的精神 和範圍內廣泛地解釋,因此落入權利要求或其等效範圍內的全部變化和改型都應為隨附權 利要求所涵蓋。
權利要求
1.一種分布式緩存系統,包括至少兩個緩存伺服器群;其中每個緩存伺服器群具有至少一個緩存伺服器節點;其中所述至少兩個緩存伺服器群中的一個緩存伺服器群以及該一個緩存伺服器群中 的一個緩存伺服器節點分別作為緩存數據的主緩存伺服器群和主緩存伺服器節點,其它緩 存伺服器群以及其中的一個緩存伺服器節點作為所述緩存數據的備份緩存伺服器群和備 份緩存伺服器節點;其中所述主緩存伺服器節點與所述備份緩存伺服器節點存有相同的緩存數據。
2.根據權利要求1所述的系統,其中,所述主緩存伺服器群和所述主緩存伺服器節點 由所述緩存數據的key而定。
3.根據權利要求1或2所述的系統,其中,所述備份緩存伺服器節點與所述主緩存服務 器節點具有對應關係。
4.一種數據的緩存方法,其中,包括以下步驟51在至少兩個緩存伺服器群的主緩存伺服器群的主緩存伺服器節點中緩存數據;52將所述數據緩存到備份緩存伺服器群的備份緩存伺服器節點中。
5.根據權利要求4所述的方法,其中,所述步驟Sl中包括5101根據所述數據的key,獲取所述數據待緩存的主緩存伺服器群;5102根據所述數據的key,在所述主緩存伺服器群中獲取所述數據待緩存的主緩存 伺服器節點;5103將所述數據和所述key緩存到所述獲取到的主緩存伺服器節點中。
6.根據權利要求4所述的方法,其中,所述方法還包括在緩存所述數據時,寫入所述 數據的過期時間。
7.—種查詢緩存數據的方法,其中,包括以下步驟53在至少兩個緩存伺服器群的主緩存伺服器群的主緩存伺服器節點中查找緩存數據;S4:若未找到,則在備份緩存伺服器群的備份緩存伺服器節點中查找緩存數據。
8.根據權利要求7所述的方法,其中,所述步驟S3包括531根據待查詢的緩存數據的key,查找所述緩存數據所存入的主緩存伺服器群;532根據所述key,在所述查找到的主緩存伺服器群中查找所述緩存數據存入的主緩 存伺服器節點;533根據所述key,在所述查找到的主緩存伺服器節點查詢所述緩存數據,若找到,直 接返回查找到的緩存數據。
9.根據權利要求8所述的方法,其中,所述步驟S31中,通過所述key的hashcode模 除所述緩存伺服器群的個數,來查找所述緩存數據存入的主緩存伺服器群的群號。
10.根據權利要求8所述的方法,其中,所述步驟S32中,通過所述key的hashcode模 除所述主緩存伺服器群內的緩存伺服器節點的數量,來查找所述緩存數據存入的主緩存服 務器節點的節點號。
11.根據權利要求7所述的方法,其中,還包括步驟S5若在所述備份緩存伺服器群的備份緩存伺服器節點內查詢到所述緩存數據,將查找到的緩存數據和所述key重新緩存到所述主緩存伺服器節點中。
12.根據權利要求11所述的方法,其中,還包括步驟S6 將所述查找到緩存數據的過期 時間寫入到所述主緩存伺服器節點中。
全文摘要
本發明公開了一種分布式緩存系統、數據的緩存方法及緩存數據的查詢方法。該分布式緩存系統包括至少兩個緩存伺服器群;其中每個緩存伺服器群具有至少一個緩存伺服器節點;其中所述至少兩個緩存伺服器群中的一個緩存伺服器群以及該一個緩存伺服器群中的一個緩存伺服器節點分別作為緩存數據的主緩存伺服器群和主緩存伺服器節點,其它緩存伺服器群以及其中的一個緩存伺服器節點作為所述緩存數據的備份緩存伺服器群和備份緩存伺服器節點;其中所述主緩存伺服器節點與所述備份緩存伺服器節點存有相同的緩存數據。本發明能夠保證在緩存伺服器中的緩存數據的高可靠性,並提高網絡服務質量。
文檔編號H04L29/08GK102006330SQ20101056944
公開日2011年4月6日 申請日期2010年12月1日 優先權日2010年12月1日
發明者王紅寶 申請人:北京瑞信在線系統技術有限公司