本發(fā)明涉及的是一種算機(jī)軟件應(yīng)用技術(shù),尤其是一種分布式應(yīng)用本地緩存的實(shí)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法。
背景技術(shù):
在現(xiàn)有技術(shù)中,公知的技術(shù)是在一個(gè)業(yè)務(wù)應(yīng)用中,我們會(huì)將業(yè)務(wù)數(shù)據(jù)保存到底層的數(shù)據(jù)源(數(shù)據(jù)庫、文件系統(tǒng)、LDAP等)中,在進(jìn)行業(yè)務(wù)操作時(shí),又會(huì)使用底層數(shù)據(jù)源的數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。眾所周知,直接存取底數(shù)據(jù)源的系統(tǒng)開銷是比較大的,這需要?jiǎng)?chuàng)建連接,打開連接等一系列系統(tǒng)各層之間的調(diào)用操作,低速磁盤的存取,各種低速I/O之間的傳輸,都會(huì)影響系統(tǒng)的性能。如果系統(tǒng)中所有的數(shù)據(jù)交換和數(shù)據(jù)存取都是通過直接讀取底層數(shù)據(jù)源的方式進(jìn)行,那么系統(tǒng)的性能肯定會(huì)變得非常糟糕。
但是,如果將所有的業(yè)務(wù)數(shù)據(jù)都存放在內(nèi)存中,雖然會(huì)提高數(shù)據(jù)的存取速度,但是,這需要大容量?jī)r(jià)格昂貴的內(nèi)存,并且也違背了分層設(shè)計(jì)的原理,所以這樣的做法也是不可取的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是針對(duì)現(xiàn)有技術(shù)所存在的不足,而提供一種分布式應(yīng)用本地緩存的實(shí)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法,該方法緩存的數(shù)據(jù)適用于比較穩(wěn)定的內(nèi)容,避免緩存頻繁變化的內(nèi)容,頻繁更新的內(nèi)容不適于本方法。如果由于頻繁的更新,系統(tǒng)用于更新緩存內(nèi)容的時(shí)間超過系統(tǒng)直接獲取新內(nèi)容的時(shí)間,那樣本實(shí)現(xiàn)方法就沒有意義,本方法實(shí)現(xiàn)了一種在分布式應(yīng)用系統(tǒng)中本地?cái)?shù)據(jù)的緩存管理功能,可管理緩存數(shù)據(jù)大小、控制緩存數(shù)據(jù)時(shí)效性,實(shí)現(xiàn)緩存監(jiān)控,在集群環(huán)境下可以做到緩存內(nèi)容的同步,解決了在云計(jì)算復(fù)雜環(huán)境下,分布式應(yīng)用程序存取底數(shù)據(jù)源時(shí),系統(tǒng)開銷大,性能消耗高的問題。
本方案是通過如下技術(shù)措施來實(shí)現(xiàn)的:一種分布式應(yīng)用本地緩存的實(shí)現(xiàn)系統(tǒng),包括緩存管理器、緩存服務(wù)組件、緩存構(gòu)建器、緩存監(jiān)控器、通訊器,
緩存管理器用于負(fù)責(zé)其他組件的統(tǒng)一調(diào)度和管理,分組管理緩存,用戶可以根據(jù)應(yīng)用系統(tǒng)的具體情況整體規(guī)劃緩存組;管理緩存數(shù)據(jù)的生命周期,用戶可以設(shè)置緩存的生命期,過期的緩存數(shù)據(jù)將會(huì)自動(dòng)移除;管理緩存數(shù)據(jù)容量;
緩存服務(wù)組件對(duì)外暴露接口,負(fù)責(zé)提供給用戶所需的服務(wù),服務(wù)主要包括緩存的檢測(cè)、創(chuàng)建、刪除、獲取、清空、容量配置等;
緩存構(gòu)建器負(fù)責(zé)緩存實(shí)體的構(gòu)建,不同的緩存構(gòu)建器可以有不同的緩存實(shí)體;
緩存監(jiān)控器負(fù)責(zé)緩存的監(jiān)控,可以通過調(diào)用相關(guān)接口獲取緩存的監(jiān)控信息;
通訊器負(fù)責(zé)集群環(huán)境下多個(gè)應(yīng)用節(jié)點(diǎn)之間緩存數(shù)據(jù)的同步,集群中所有節(jié)點(diǎn)的通訊器構(gòu)成通訊組,當(dāng)某個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變更時(shí),緩存管理器告知通訊器本地緩存數(shù)據(jù)發(fā)生變更,通訊器就會(huì)把此數(shù)據(jù)變更消息廣播給組內(nèi)所有成員,組內(nèi)的通訊器接受到消息之后接著把數(shù)據(jù)變更信息告知所在節(jié)點(diǎn)的緩存管理器,然后各個(gè)節(jié)點(diǎn)的緩存管理器就會(huì)按照消息移除緩存數(shù)據(jù)。
所述的緩存管理器設(shè)置緩存容量大小,緩存滿后,如果繼續(xù)放入數(shù)據(jù)就會(huì)按照LRU策略移除緩存里閑置時(shí)間最長(zhǎng)的數(shù)據(jù)。
緩存數(shù)據(jù)變更消息包括四種類型,全部刪除、組刪除、緩存刪除、緩存數(shù)據(jù)刪除。
一種分布式應(yīng)用本地緩存的實(shí)現(xiàn)方法,其特征在于包括如下步驟:
1)首先判斷是讀取數(shù)據(jù)還是數(shù)據(jù)變更,讀取數(shù)據(jù)則進(jìn)入步驟2),數(shù)據(jù)變更則進(jìn)入步驟4)
2)讀取數(shù)據(jù),首先從緩存中獲取數(shù)據(jù),如果取到數(shù)據(jù),則直接返回即可,如果取不到,則進(jìn)入步驟3)
3)從數(shù)據(jù)庫中將查詢到的數(shù)據(jù)放入緩存,緩存管理器查看緩存容量是否已滿,如果已滿,則按照LRU策略移除緩存里閑置時(shí)間最長(zhǎng)的數(shù)據(jù),然后緩存構(gòu)建器針對(duì)放入的數(shù)據(jù)構(gòu)建緩存實(shí)體,取到數(shù)據(jù)返回;如果未滿,則緩存構(gòu)建器針對(duì)放入的數(shù)據(jù)構(gòu)建緩存實(shí)體,取到數(shù)據(jù)返回;
4)將要變更的數(shù)據(jù)從緩存中移除,緩存管理器告知通訊器本地緩存數(shù)據(jù)發(fā)生變更,通訊器通過jGroups把此數(shù)據(jù)變更消息廣播給組內(nèi)所有成員,組內(nèi)的通訊器接受到消息之后接著把數(shù)據(jù)變更信息告知所在節(jié)點(diǎn)的緩存管理器,然后各個(gè)節(jié)點(diǎn)的緩存管理器就會(huì)按照消息移除緩存數(shù)據(jù)。
緩存數(shù)據(jù)變更消息包括四種類型,全部刪除、組刪除、緩存刪除、緩存數(shù)據(jù)刪除。
本方案的有益效果可根據(jù)對(duì)上述方案的敘述得知,由于在該方案實(shí)現(xiàn)了在分布式應(yīng)用系統(tǒng)中本地?cái)?shù)據(jù)的緩存管理功能,可管理緩存數(shù)據(jù)大小、控制緩存數(shù)據(jù)時(shí)效性,實(shí)現(xiàn)緩存監(jiān)控,在集群環(huán)境下可以做到緩存內(nèi)容的同步;分布式應(yīng)用本地緩存系統(tǒng)包括如下幾個(gè)組件:緩存管理器、緩存服務(wù)組件、緩存構(gòu)建器、緩存監(jiān)控器、通訊器。緩存管理器是核心組件,負(fù)責(zé)其他組件的統(tǒng)一調(diào)度和管理。緩存管理器分組管理緩存,用戶可以根據(jù)應(yīng)用系統(tǒng)的具體情況整體規(guī)劃緩存組。緩存管理器負(fù)責(zé)管理緩存數(shù)據(jù)的生命周期,用戶可以設(shè)置緩存的生命期,過期的緩存數(shù)據(jù)將會(huì)自動(dòng)移除。緩存管理器負(fù)責(zé)管理緩存數(shù)據(jù)容量,緩存可以設(shè)置容量大小,緩存滿后,如果繼續(xù)放入數(shù)據(jù)就會(huì)按照LRU策略移除緩存里閑置時(shí)間最長(zhǎng)的數(shù)據(jù)。緩存服務(wù)組件對(duì)外暴露接口,負(fù)責(zé)提供給用戶所需的服務(wù)。緩存構(gòu)建器負(fù)責(zé)根據(jù)配置來構(gòu)建一個(gè)緩存對(duì)象,不同的Builder可以有不同的緩存實(shí)現(xiàn)。緩存監(jiān)控器負(fù)責(zé)緩存的監(jiān)控,可以通過調(diào)用相關(guān)接口獲取緩存的監(jiān)控信息。通訊器負(fù)責(zé)集群環(huán)境下多個(gè)應(yīng)用節(jié)點(diǎn)之間緩存數(shù)據(jù)的同步,集群中所有節(jié)點(diǎn)的通訊器構(gòu)成通訊組,當(dāng)某個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變更時(shí),緩存管理器告知通訊器本地緩存數(shù)據(jù)發(fā)生變更,通訊器就會(huì)通過群組通信組件jGroups把此數(shù)據(jù)變更消息廣播給組內(nèi)所有成員,組內(nèi)的通訊器接受到消息之后接著把數(shù)據(jù)變更信息告知所在節(jié)點(diǎn)的緩存管理器,然后各個(gè)節(jié)點(diǎn)的緩存管理器就會(huì)按照消息移除緩存數(shù)據(jù)。緩存數(shù)據(jù)變更消息有四種類型:全部刪除、組刪除、緩存刪除、緩存數(shù)據(jù)刪除。緩存實(shí)體則就是內(nèi)存中實(shí)際的緩存數(shù)據(jù)對(duì)象,由緩存構(gòu)建器負(fù)責(zé)緩存實(shí)體的構(gòu)建。用戶操作主要有三種:取緩存數(shù)據(jù)、移除緩存數(shù)據(jù)和將數(shù)據(jù)放入緩存。用戶獲取數(shù)據(jù)包含取和放兩種操作,首先從緩存中取數(shù)據(jù),如果取不到,就查詢數(shù)據(jù)庫,然后將查詢到的數(shù)據(jù)放入緩存,取到直接返回即可。用戶在修改數(shù)據(jù)庫數(shù)據(jù)時(shí)需要直接從緩存中移除相關(guān)數(shù)據(jù)。
由此可見,本發(fā)明與現(xiàn)有技術(shù)相比,具有突出的實(shí)質(zhì)性特點(diǎn)和顯著的進(jìn)步,其實(shí)施的有益效果也是顯而易見的。
附圖說明
圖1為本發(fā)明具體實(shí)施方式的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為能清楚說明本方案的技術(shù)特點(diǎn),下面通過一個(gè)具體實(shí)施方式,并結(jié)合其附圖,對(duì)本方案進(jìn)行闡述。
通過附圖可以看出,本方案的一種分布式應(yīng)用本地緩存的實(shí)現(xiàn)系統(tǒng),包括緩存管理器、緩存服務(wù)組件、緩存構(gòu)建器、緩存監(jiān)控器、通訊器,
緩存管理器用于負(fù)責(zé)其他組件的統(tǒng)一調(diào)度和管理,分組管理緩存,用戶可以根據(jù)應(yīng)用系統(tǒng)的具體情況整體規(guī)劃緩存組;管理緩存數(shù)據(jù)的生命周期,用戶可以設(shè)置緩存的生命期,過期的緩存數(shù)據(jù)將會(huì)自動(dòng)移除;管理緩存數(shù)據(jù)容量;
緩存服務(wù)組件對(duì)外暴露接口,負(fù)責(zé)提供給用戶所需的服務(wù),服務(wù)主要包括緩存的檢測(cè)、創(chuàng)建、刪除、獲取、清空、容量配置等;
緩存構(gòu)建器負(fù)責(zé)緩存實(shí)體的構(gòu)建,不同的緩存構(gòu)建器可以有不同的緩存實(shí)體;
緩存監(jiān)控器負(fù)責(zé)緩存的監(jiān)控,可以通過調(diào)用相關(guān)接口獲取緩存的監(jiān)控信息;
通訊器負(fù)責(zé)集群環(huán)境下多個(gè)應(yīng)用節(jié)點(diǎn)之間緩存數(shù)據(jù)的同步,集群中所有節(jié)點(diǎn)的通訊器構(gòu)成通訊組,當(dāng)某個(gè)節(jié)點(diǎn)的數(shù)據(jù)發(fā)生變更時(shí),緩存管理器告知通訊器本地緩存數(shù)據(jù)發(fā)生變更,通訊器就會(huì)把此數(shù)據(jù)變更消息廣播給組內(nèi)所有成員,組內(nèi)的通訊器接受到消息之后接著把數(shù)據(jù)變更信息告知所在節(jié)點(diǎn)的緩存管理器,然后各個(gè)節(jié)點(diǎn)的緩存管理器就會(huì)按照消息移除緩存數(shù)據(jù)。
所述的緩存管理器設(shè)置緩存容量大小,緩存滿后,如果繼續(xù)放入數(shù)據(jù)就會(huì)按照LRU策略移除緩存里閑置時(shí)間最長(zhǎng)的數(shù)據(jù)。
緩存數(shù)據(jù)變更消息包括四種類型,全部刪除、組刪除、緩存刪除、緩存數(shù)據(jù)刪除。
一種基于上述系統(tǒng)的分布式應(yīng)用本地緩存的實(shí)現(xiàn)方法,包括如下步驟:
1)首先判斷是讀取數(shù)據(jù)還是數(shù)據(jù)變更,讀取數(shù)據(jù)則進(jìn)入步驟2),數(shù)據(jù)變更則進(jìn)入步驟4)
2)讀取數(shù)據(jù),首先從緩存中獲取數(shù)據(jù),如果取到數(shù)據(jù),則直接返回即可,如果取不到,則進(jìn)入步驟3)
3)從數(shù)據(jù)庫中將查詢到的數(shù)據(jù)放入緩存,緩存管理器查看緩存容量是否已滿,如果已滿,則按照LRU策略移除緩存里閑置時(shí)間最長(zhǎng)的數(shù)據(jù),然后緩存構(gòu)建器針對(duì)放入的數(shù)據(jù)構(gòu)建緩存實(shí)體,取到數(shù)據(jù)返回;如果未滿,則緩存構(gòu)建器針對(duì)放入的數(shù)據(jù)構(gòu)建緩存實(shí)體,取到數(shù)據(jù)返回;
4)將要變更的數(shù)據(jù)從緩存中移除,緩存管理器告知通訊器本地緩存數(shù)據(jù)發(fā)生變更,通訊器通過jGroups把此數(shù)據(jù)變更消息廣播給組內(nèi)所有成員,組內(nèi)的通訊器接受到消息之后接著把數(shù)據(jù)變更信息告知所在節(jié)點(diǎn)的緩存管理器,然后各個(gè)節(jié)點(diǎn)的緩存管理器就會(huì)按照消息移除緩存數(shù)據(jù)。
本發(fā)明并不僅限于上述具體實(shí)施方式,本領(lǐng)域普通技術(shù)人員在本發(fā)明的實(shí)質(zhì)范圍內(nèi)做出的變化、改型、添加或替換,也應(yīng)屬于本發(fā)明的保護(hù)范圍。