專利名稱:基于Hash-map的多點緩存裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及緩存技術(shù)領(lǐng)域,尤其涉及一種基于Hash-map的多點緩存裝置。
背景技術(shù):
在統(tǒng)一用戶認(rèn)證的應(yīng)用服務(wù)器(AS AccountServer)的實際應(yīng)用中,有大量認(rèn)證是基于同一用戶,這對AS和數(shù)據(jù)庫產(chǎn)生很大壓力,而用戶頻繁登錄、惡意認(rèn)證等問題也會妨礙AS服務(wù)器認(rèn)證速度。
Hash-map(哈希圖)是一種數(shù)據(jù)結(jié)構(gòu),使用該數(shù)據(jù)結(jié)構(gòu)存儲數(shù)據(jù),可以大大加快數(shù)據(jù)檢索的速度,并可方便地實現(xiàn)分布式存儲。
Map(圖)是一種普遍使用的數(shù)據(jù)結(jié)構(gòu),其采用樹狀的存儲形式,map由兩部分組成索引key和內(nèi)容value。索引用于在map中快速檢索數(shù)據(jù)內(nèi)容,內(nèi)容則是存儲在map中的實際數(shù)據(jù)。Mulitmap是map的一種特殊形式,該數(shù)據(jù)結(jié)構(gòu)允許同一個key對應(yīng)多個value值。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于Hash-map的多點緩存裝置,它可為AS提供一個緩存用戶認(rèn)證信息的模塊。
為了解決上述技術(shù)問題,本發(fā)明基于Hash-map的多點緩存裝置采用的技術(shù)方案是,在應(yīng)用服務(wù)器中嵌入緩存模塊。
由于采用上述技術(shù)方案,本發(fā)明的基于Hash-map的多點緩存裝置能有效加快AS服務(wù)器認(rèn)證速度,減輕數(shù)據(jù)庫壓力,并解決用戶頻繁登錄、惡意認(rèn)證等問題,從而提高工作效率。
圖1是本發(fā)明的Hash-map數(shù)據(jù)結(jié)構(gòu)圖;圖2是本發(fā)明的map數(shù)據(jù)結(jié)構(gòu)圖;圖3是本發(fā)明的數(shù)據(jù)同步機(jī)制示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步詳細(xì)說明。
本發(fā)明的基于Hash-map的多點緩存裝置是在應(yīng)用服務(wù)器中嵌入一個緩存用戶認(rèn)證信息的模塊。緩存模塊主要由實現(xiàn)緩存功能的Hash-map存儲容器和實現(xiàn)淘汰功能的map容器組成,hash-map的數(shù)據(jù)結(jié)構(gòu)如圖1所示,所述Hash-map存儲容器包括UID(系統(tǒng)隨機(jī)產(chǎn)生的64位編碼,用于標(biāo)識每一條緩存的記錄)、使用者、組、生命期四個map存儲結(jié)構(gòu),每個map存儲結(jié)構(gòu)包含索引和內(nèi)容,所述UID map由系統(tǒng)生成,保證全局唯一,其記錄索引由調(diào)用者傳入,也可由系統(tǒng)生成后返回調(diào)用者,所述使用者(User)map存儲需緩存的記錄內(nèi)容以及該條記錄的其他屬性,該其他屬性包括所屬組別、訪問次數(shù)和生命期,所述組(Group)map存儲所有記錄對于組的信息,通過組map可快速定位某一組記錄,所述生命期(Life)map用于自動將記錄生命期做排序,并快速定位到已過期的記錄。實際程序?qū)崿F(xiàn)中,需同時維護(hù)這4個map存儲結(jié)構(gòu),以便方便靈活的對緩存內(nèi)容進(jìn)行操作和訪問。對于新插入的任意一條記錄,均需修改4個存儲結(jié)構(gòu)中的相應(yīng)值。
當(dāng)緩存模塊執(zhí)行緩存功能時,索引key為用戶PTID(盛大通行證,是盛大網(wǎng)絡(luò)推出的統(tǒng)一賬號系統(tǒng),擁有該通行證就可在所有支持產(chǎn)品中直接登錄使用,而無需再次注冊),內(nèi)容value為該記錄的相關(guān)信息(用戶靜態(tài)密碼,是否綁定密寶等)。使用hash-map的優(yōu)點是在大數(shù)據(jù)量(10萬-100萬條記錄)情況下,可以保證數(shù)據(jù)插入和查詢的速度,但是它的缺點是,相比其它容器,更耗費(fèi)內(nèi)存。
緩存模塊由map容器實現(xiàn)淘汰機(jī)制,該淘汰機(jī)制包括超時淘汰、容量滿淘汰和溢出淘汰,其中,超時淘汰是在每條數(shù)據(jù)插入時,都賦予該條數(shù)據(jù)一個生存期,在到達(dá)生存期后,程序自動將其從內(nèi)存中刪除,容量滿淘汰是在緩存達(dá)到最大容量時,自動刪除一部分最先加入的記錄,溢出淘汰是將緩存中任何一個失效的記錄設(shè)置為鈍化狀態(tài),而不是直接淘汰出緩存。當(dāng)緩存模塊實現(xiàn)淘汰功能時,索引key為每條記錄的加入時間(因考慮到時間精度,采用multimap,圖2所示為map的數(shù)據(jù)結(jié)構(gòu)),內(nèi)容value為用戶PTID。這樣就可避免在整個模塊中,遍歷查找最先插入的記錄。
緩存模塊能提供多個配置選項,如最大容量、策略組、超時時間以及是否更新記錄訪問時間等。
緩存模塊能對應(yīng)用服務(wù)器中緩存的用戶數(shù)據(jù)進(jìn)行控制并使其同步化。在緩存記錄的生存周期內(nèi),該用戶記錄如果被更新(比如,修改了靜態(tài)密碼),可能導(dǎo)致用戶數(shù)據(jù)在一段時間內(nèi)不一致,此時,可發(fā)送一個消息包到所有使用緩存模塊的服務(wù)器,并通知緩存模塊將該用戶記錄刪除(圖3),所述的消息包通常采用UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)的方式。
應(yīng)用服務(wù)器中可同時嵌入多種Hash算法,根據(jù)不同應(yīng)用,緩存模塊自動選用一種或若干種算法??晒┻x用的算法包括PHP_hash、OPENSSL_hash、MYSQL_hash、SIMPLE_hash。根據(jù)實驗結(jié)果,這些經(jīng)典算法雖然構(gòu)造字符串Hash函數(shù)的方法不同,但是它們的效率相互之間差距很小。
在應(yīng)用中,對放入緩存的記錄可進(jìn)行分組管理,如設(shè)置不同策略的生命周期。以下為本發(fā)明部分接口示例}interface ICacheObjectIDispatch{[id(1),helpstring(″method Add″)]HRESULT Add([in]ULONG policy,[in]BSTR userkey,[[id(2),helpstring(″method Remove″)]HRESULT Remove([in]BSTR userkey,[out]BSTR* vε[id(3),helpstring(″method Get″)]HRESULT Get([in]BSTR userkey,[out]BSTR*value,[[id(4),helpstring(″method Clear″)]HRESULT Clear(void);[id(5),helpstring(″method Size″)]HRESULT Size([out,retval]LONG*ret);[id(6),helpstring(″method SetPolicy″)]HRESULT SetPolicy([in,out]ULONG*policy,[ir[id(7),helpstring(″method GetPolicy″)]HRESULT GetPolicy([in]ULONG policy,[in]ULC-};本發(fā)明的基于Hash-map的多點緩存裝置對多個游戲認(rèn)證的命中率可達(dá)50%以上,有效緩解了數(shù)據(jù)庫的壓力。下表所列為性能測試數(shù)據(jù)
AS使用本發(fā)明的裝置存儲用戶認(rèn)證信息,在一定時間段內(nèi)保存用戶的認(rèn)證信息,以防止用戶在短時間內(nèi)多次重復(fù)認(rèn)證,造成服務(wù)壓力過大。
SDK(Software Development Kit,軟件開發(fā)工具包)使用本發(fā)明的裝置存儲用戶認(rèn)證信息,包括用戶名、密碼、認(rèn)證時間、頻率等。通過分析用戶認(rèn)證行為,可以有效防止用戶惡意認(rèn)證,這既保證正常用戶帳號的安全性,也在一定程度上,減輕了AS服務(wù)器的壓力。
權(quán)利要求
1.一種基于Hash-map的多點緩存裝置,其特征在于,在應(yīng)用服務(wù)器中嵌入緩存模塊。
2.如權(quán)利要求1所述的基于Hash-map的多點緩存裝置,其特征在于,所述緩存模塊主要由實現(xiàn)緩存功能的Hash-map存儲容器和實現(xiàn)淘汰功能的map容器組成。
3.如權(quán)利要求2所述的基于Hash-map的多點緩存裝置,其特征在于,所述Hash-map存儲容器包括UID map、使用者map、組map和生命期map四個map存儲結(jié)構(gòu),每個map存儲結(jié)構(gòu)包含索引和內(nèi)容,所述UID map由系統(tǒng)生成,保證全局唯一,其記錄索引由調(diào)用者傳入,也可由系統(tǒng)生成后返回調(diào)用者,所述使用者map存儲需緩存的記錄內(nèi)容以及該條記錄的其他屬性,該其他屬性包括所屬組別、訪問次數(shù)和生命期,所述組map存儲所有記錄對于組的信息,通過組map可快速定位某一組記錄,所述生命期map用于自動將記錄生命期做排序,并快速定位到已過期的記錄。
4.如權(quán)利要求3所述的基于Hash-map的多點緩存裝置,其特征在于,所述索引為用戶通行證,所述內(nèi)容為記錄的相關(guān)信息,該相關(guān)信息包括用戶靜態(tài)密碼、是否綁定密寶以及用戶認(rèn)證信息。
5.如權(quán)利要求2所述的基于Hash-map的多點緩存裝置,其特征在于,所述map容器為multimap容器,包含索引和內(nèi)容,實現(xiàn)淘汰功能時,索引為每條記錄的加入時間,內(nèi)容為用戶通行證。
6.如權(quán)利要求2或5所述的基于Hash-map的多點緩存裝置,其特征在于,所述的淘汰功能包括超時淘汰、容量滿淘汰和溢出淘汰,其中,超時淘汰是在每條數(shù)據(jù)插入時,都賦予該條數(shù)據(jù)一個生存期,在到達(dá)生存期后,程序自動將其從內(nèi)存中刪除,容量滿淘汰是在緩存達(dá)到最大容量時,自動刪除一部分最先加入的記錄,溢出淘汰是將緩存中任何一個失效的記錄設(shè)置為鈍化狀態(tài),而不是直接淘汰出緩存。
7.如權(quán)利要求1所述的基于Hash-map的多點緩存裝置,其特征在于,所述緩存模塊還具有配置選項,該配置選項包括最大容量、策略組、超時時間及是否更新記錄訪問時間。
8.如權(quán)利要求1所述的基于Hash-map的多點緩存裝置,其特征在于,當(dāng)用戶記錄更新時,可發(fā)送消息包至所有具有緩存模塊的服務(wù)器,并通知緩存模塊將原用戶記錄刪除。
9.如權(quán)利要求1所述的基于Hash-map的多點緩存裝置,其特征在于,所述應(yīng)用服務(wù)器可同時嵌入多種Hash算法,緩存模塊可根據(jù)不同應(yīng)用,自動選用一種或多種算法。
全文摘要
本發(fā)明公開了一種基于Hash-map的多點緩存裝置,它是在應(yīng)用服務(wù)器中嵌入緩存模塊。本發(fā)明的裝置能有效加快應(yīng)用服務(wù)器認(rèn)證速度,減輕數(shù)據(jù)庫壓力,并能解決用戶頻繁登錄、惡意認(rèn)證等問題,從而提高工作效率。
文檔編號G06F17/30GK101060402SQ20061002591
公開日2007年10月24日 申請日期2006年4月21日 優(yōu)先權(quán)日2006年4月21日
發(fā)明者高禎祥, 郁兵 申請人:盛趣信息技術(shù)(上海)有限公司