[發(fā)明專利]數(shù)據(jù)緩存系統(tǒng)和數(shù)據(jù)緩存方法有效
| 申請?zhí)枺?/td> | 201310397394.4 | 申請日: | 2013-09-04 |
| 公開(公告)號: | CN103488581A | 公開(公告)日: | 2014-01-01 |
| 發(fā)明(設(shè)計(jì))人: | 劉建民 | 申請(專利權(quán))人: | 用友軟件股份有限公司 |
| 主分類號: | G06F12/08 | 分類號: | G06F12/08;G06F17/30 |
| 代理公司: | 北京友聯(lián)知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
| 地址: | 100094 北京*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 數(shù)據(jù) 緩存 系統(tǒng) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)緩存系統(tǒng)和一種數(shù)據(jù)緩存方法。
背景技術(shù)
在越來越多的J2EE應(yīng)用中,利用緩存技術(shù)存儲業(yè)務(wù)數(shù)據(jù)以減少頻繁數(shù)據(jù)庫鏈接造成的資源消耗的技術(shù)應(yīng)用愈加普遍。
由于內(nèi)存對于數(shù)據(jù)的讀寫速度是數(shù)據(jù)庫操作等硬盤讀寫速度的100倍甚至更高,所以內(nèi)存緩存可以有效的提升運(yùn)行效率。業(yè)界比較流行的緩存技術(shù)也都對內(nèi)存緩存做了實(shí)現(xiàn),較為常見的如EhCache、OSCache、JbossCache、MemCache等。各種緩存技術(shù)各有所長,適合不同業(yè)務(wù)場景。
業(yè)務(wù)上常常把數(shù)據(jù)量大、變化性小的一類數(shù)據(jù)歸為一類檔案數(shù)據(jù),各類檔案數(shù)據(jù)分別維護(hù)和使用,更加清晰、簡潔。例如公文、人員身份、幣種、郵編、地區(qū)名稱等。這些數(shù)據(jù)都是變化小又經(jīng)常會使用到的檔案數(shù)據(jù),不應(yīng)該在每次查詢時(shí)進(jìn)行數(shù)據(jù)庫操作,更適合利用緩存來存儲。可以在內(nèi)存中申請幾塊緩存區(qū)域,分別存儲各類檔案的數(shù)據(jù)和各次查詢的結(jié)果。較為常見的使用方式(人員參照)如圖1A所示。
對人員檔案數(shù)據(jù)的查找功能,每查詢的數(shù)據(jù)變化性不大,數(shù)據(jù)總量較大,適用緩存來存儲常用的數(shù)據(jù)和查詢結(jié)果,以便下次查詢是快速定位。
然而,對于此類應(yīng)用場景,以上的緩存技術(shù)并沒有太合適的解決方案,逐步顯現(xiàn)出一些問題,諸如:緩存數(shù)據(jù)量較大時(shí)占用JVM虛擬機(jī)緩存太大,影響JVM運(yùn)行;檔案類數(shù)據(jù)量大,適合用大內(nèi)存來存儲,各技術(shù)對大內(nèi)存支持的不完善;緩存區(qū)域數(shù)據(jù)偏大時(shí),對Cache數(shù)據(jù)頻繁序列化引起的效率問題;緩存數(shù)據(jù)的版本監(jiān)控與數(shù)據(jù)變化時(shí)自動更新問題針對具體檔案數(shù)據(jù)的緩存監(jiān)控問題。
大多緩存技術(shù)中采用的是JVM虛擬機(jī)內(nèi)存的方式來進(jìn)行數(shù)據(jù)存儲,如果針對數(shù)量不大的數(shù)據(jù),此方式比較適合且存取速率較快。常用緩存技術(shù)內(nèi)存使用情況如圖1B所示。
但是JVM對內(nèi)存的使用有最大值限制,一般最優(yōu)的空間并不是很大。如果是檔案類數(shù)據(jù),數(shù)據(jù)量較大,如果設(shè)置的緩存區(qū)域空間較小,會頻繁的根據(jù)緩存策略進(jìn)行數(shù)據(jù)的淘汰;如果設(shè)置緩存空間過大,又會影響JVM本身的運(yùn)行。
利用NC63中提供的大內(nèi)存緩存技術(shù),采用JVM之外的操作系統(tǒng)級內(nèi)存存儲緩存數(shù)據(jù),充分利用了服務(wù)器高配置的大內(nèi)存空間。且隨著硬件技術(shù)的發(fā)展,64位計(jì)算機(jī)漸漸占據(jù)主流,服務(wù)器配置越來越高,內(nèi)存的容量也很大,滿足大內(nèi)存的緩存需要。內(nèi)存使用情況如上面右側(cè)示意圖所示。
使用大內(nèi)存緩存技術(shù)的優(yōu)勢顯而易見,然而在檔案類數(shù)據(jù)緩存過程中的問題也隨之而來,主要體現(xiàn)在以下兩個(gè)方面:
問題一:緩存區(qū)域的劃分與數(shù)據(jù)序列化與反序列化問題。
緩存的調(diào)用通常有統(tǒng)一的入口,類似CacheManager。入口根據(jù)緩存區(qū)域的名字對Cache進(jìn)行獲取操作。緩存的使用方式一般如下:
//獲取緩存區(qū)
Cache?cache=CacheManager.getCache(cacheName);
//放置緩存數(shù)據(jù)
cache.put(key,obj);
//獲取緩存數(shù)據(jù)
cahce.get(key);
如果動態(tài)的為每類檔案申請一塊緩存區(qū)域的話,即每個(gè)cacheName對應(yīng)一類檔案(一個(gè)Cache對應(yīng)一個(gè)cacheconfig,即分配一塊內(nèi)存區(qū)域),大內(nèi)存的總量不容易控制。考慮到對緩存數(shù)據(jù)總量的限制,不能每一類檔案數(shù)真實(shí)的分配一塊大內(nèi)存區(qū)域。
一般緩存方案的存儲方式應(yīng)該是一個(gè)緩存區(qū)域中存放多個(gè)Map,每個(gè)Map中存放具體某一類型的檔案數(shù)據(jù)。
如圖1C所示,如果使用的是操作系統(tǒng)內(nèi)存(大內(nèi)存)存儲的數(shù)據(jù),每個(gè)Map對應(yīng)一類檔案數(shù)據(jù),在get的時(shí)候,cacheName為檔案的編碼,獲取結(jié)果為一類檔案的緩存,由java對象轉(zhuǎn)化到大內(nèi)存中時(shí)需要進(jìn)行對象的序列化;同理,由已經(jīng)緩存在大內(nèi)存的數(shù)據(jù)轉(zhuǎn)化成java對象的時(shí)候,需要進(jìn)行反序列化。序列化與反序列化的過程是高消耗的,對CPU和服務(wù)器都有壓力,頻繁的進(jìn)行此操作勢必造成效率問題,甚至?xí)陀跀?shù)據(jù)庫的存儲。
例如:如果緩存區(qū)(cache)的占用空間較大(如2G),則每次調(diào)用getCache(key)方法獲取一類檔案緩存的Map對象時(shí)都要對數(shù)據(jù)進(jìn)行一次序列化或者反序列化動作,消耗CPU等資源。
另外在緩存監(jiān)控方面,常用的緩存技術(shù)監(jiān)控的粒度在Cache級別,即整個(gè)緩存區(qū)域的大小、命中率、刷新次數(shù)等特性。針對此類檔案數(shù)據(jù)的監(jiān)控業(yè)務(wù),監(jiān)控的層次較籠統(tǒng)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于用友軟件股份有限公司,未經(jīng)用友軟件股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310397394.4/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 逐出高速緩存的行的電路布置、數(shù)據(jù)處理系統(tǒng)和方法
- 共享緩存管理系統(tǒng)及方法
- 分布式緩存系統(tǒng)、數(shù)據(jù)的緩存方法及緩存數(shù)據(jù)的查詢方法
- 一種緩存替換方法;裝置和系統(tǒng)
- 加速引擎及處理器
- 一種日志緩存方法、系統(tǒng)、設(shè)備及計(jì)算機(jī)可讀存儲介質(zhì)
- 緩存控制方法、裝置和計(jì)算機(jī)可讀存儲介質(zhì)
- 至少具有三個(gè)緩存級別的緩存層級的混合低級緩存包含策略
- 基于雙緩存區(qū)的緩存方法、裝置、設(shè)備及存儲介質(zhì)
- 緩存預(yù)載方法、裝置、處理器芯片及服務(wù)器





