本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)緩存層實現(xiàn)方法及系統(tǒng)。
背景技術(shù):
緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當某一硬件要讀取數(shù)據(jù)時,會首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。由于緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行。
利用緩存的工作原理,在系統(tǒng)設(shè)計的時候,越來越多的會設(shè)計一個系統(tǒng)層面的數(shù)據(jù)緩存區(qū)域,使用數(shù)據(jù)緩存在WEB工程中是一個非常有意義的策略,不僅僅可以減少數(shù)據(jù)庫負載,而且當數(shù)據(jù)緩存在內(nèi)存中,能大大提高了的讀取速度。
在WEB開發(fā)中,緩存可以分為:
數(shù)據(jù)庫端緩存。這個可以用以“空間換時間”來說。比如建一個表來存儲另外一個表某個類型的數(shù)據(jù)的總條數(shù),在每次更新數(shù)據(jù)的時候同事更新數(shù)據(jù)表和統(tǒng)計條數(shù)的表。在需要獲取某個類型的數(shù)據(jù)的條數(shù)的時候,就不需要select count去查詢,直接查詢統(tǒng)計表就可以了,這樣可以提高查詢的速度和數(shù)據(jù)庫的性能。
應用層緩存。應用層緩存這塊跟開發(fā)人員關(guān)系最大,也是平時經(jīng)常接觸的。緩存數(shù)據(jù)庫的查詢結(jié)果,減少數(shù)據(jù)的壓力。這個在大型網(wǎng)站是必須做的。緩存磁盤文件的數(shù)據(jù)。比如常用的數(shù)據(jù)可以放到內(nèi)存,不用每次都去讀取磁盤,特別是密集計算的程序,比如中文分詞的詞庫。緩存某個耗時的計算操作,比如數(shù)據(jù)統(tǒng)計。
應用層緩存的架構(gòu)也可以分幾種:
嵌入式,也就是緩存和應用在同一個機器。比如單機的文件緩存,java中用hashMap來緩存數(shù)據(jù)等等。這種緩存速度快,沒有網(wǎng)絡(luò)消耗。
分布式緩存,把緩存的數(shù)據(jù)獨立到不同的機器,通過網(wǎng)絡(luò)來請求數(shù)據(jù),比如常用的memcache就是這一類。
分布式緩存一般可以分為幾種:
按應用切分數(shù)據(jù)到不同的緩存服務(wù)器,這是一種比較簡單和實用的方式。
按照某種規(guī)則(hash,路由等等)把數(shù)據(jù)存儲到不同的緩存服務(wù)器
代理模式,應用在獲取數(shù)據(jù)的時候都由代理透明的處理,緩存機制有代理服務(wù)器來處理
我們這里說的前端緩存可以理解為一般使用的cdn技術(shù),利用squid等做前端緩沖技術(shù),主要還是針對靜態(tài)文件類型,比如圖片,css,js,html等靜態(tài)文件。
瀏覽器端的緩存,可以讓用戶請求一次之后,下一次不在從服務(wù)器端請求數(shù)據(jù),直接從本地緩存讀取,可以減輕服務(wù)器負擔也可以加快用戶的訪問速度。
在應用層的緩存由于應經(jīng)有新的數(shù)據(jù)加入,數(shù)據(jù)的修改,數(shù)據(jù)的刪除等等操作,而在某些時間,我們需要這些操作及時的生效(由于用了緩存,可能會導致修改后緩存沒有更新,而頁面也沒有變化),所以出現(xiàn)緩存的更新和過期的概念。
數(shù)據(jù)緩存層實際上就是對一個巨大的存在于內(nèi)存中的DataSet進行管理,其原理如下:
數(shù)據(jù)緩存層維護一個大DataSet,這個DataSet以static存在于應用程序中,這是緩存數(shù)據(jù)集。
客戶端發(fā)起請求,數(shù)據(jù)查詢請求發(fā)送到數(shù)據(jù)緩存層。
數(shù)據(jù)緩存層查詢緩存起來的數(shù)據(jù)查詢條件,查找該查詢條件是否被使用過。
如果該查詢條件以前使用過,則不從數(shù)據(jù)庫查詢數(shù)據(jù),只從緩存數(shù)據(jù)集中查 詢。
如果該查詢條件以前沒有用過,則調(diào)用數(shù)據(jù)訪問層從數(shù)據(jù)庫中查詢數(shù)據(jù),并將查詢數(shù)據(jù)合并到緩存數(shù)據(jù)集中,同時緩存該查詢條件。
更新數(shù)據(jù)時,將要更新的數(shù)據(jù)更新到數(shù)據(jù)庫中,同時更新緩存數(shù)據(jù)集中的數(shù)據(jù)。
在查詢或更新數(shù)據(jù)時,都在緩存數(shù)據(jù)集相應數(shù)據(jù)表的擴展屬性中記錄當前訪問時間。
每隔一段時間對緩存數(shù)據(jù)集進行清理,當其中某條數(shù)據(jù)行超過一定時間(可以在配置文件中進行配置)沒有訪問,則將該表釋放。
現(xiàn)有技術(shù)中,對于數(shù)據(jù)緩存通常是通過硬件或者軟件的設(shè)置,對數(shù)據(jù)進行整體的緩存,從而提高訪問的效率。然而,當緩存數(shù)據(jù)量很大的時候,緩存的效率也會明顯降低,從而影響用戶體驗。因而,亟需要一種提高緩存效率的方案,以提高對數(shù)據(jù)緩存訪問的速度和效率。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種數(shù)據(jù)緩存層實現(xiàn)方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中大數(shù)據(jù)量情況下數(shù)據(jù)緩存效率低下的問題。
本發(fā)明提供一種數(shù)據(jù)緩存層實現(xiàn)方法,包括:
將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;
將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;
應用層從所述數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。
所述方法還包括:
根據(jù)用戶請求數(shù)據(jù)量的大小,動態(tài)調(diào)整所述數(shù)據(jù)緩存層的數(shù)量。
所述方法還包括:
將所述用戶請求隨機分配到不同的數(shù)據(jù)緩存層處理。
所述方法還包括:
將所述用戶請求根據(jù)負載均衡算法,隨機分配到不同的數(shù)據(jù)緩存層處理。
所述方法還包括:
將同一用戶的用戶請求分配到同一數(shù)據(jù)緩存層處理。
所述方法還包括:
根據(jù)所述用戶請求的對應的用戶標識的編碼,隨機計算所述用戶請求對應的數(shù)據(jù)緩存層,并根據(jù)計算結(jié)果將所述用戶請求分配到不同的數(shù)據(jù)緩存層。
一種數(shù)據(jù)緩存層實現(xiàn)系統(tǒng),包括:
數(shù)據(jù)緩存層單元,將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;
用戶請求分配單元,用于將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;
應用層單元,用于從數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。
所述數(shù)據(jù)緩存層單元還用于根據(jù)用戶請求數(shù)據(jù)量的大小,動態(tài)調(diào)整所述數(shù)據(jù)緩存層的數(shù)量。
所述用戶請求分配單元還用于將所述用戶請求根據(jù)負載均衡算法,隨機分配到不同的數(shù)據(jù)緩存層處理。
所述用戶請求分配單元還用于將同一用戶的用戶請求分配到同一數(shù)據(jù)緩存層處理。
本發(fā)明實施例通過將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;應用層從所述數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。本發(fā)明實施例的方案,能夠提高數(shù)據(jù)緩存訪問的速度和效率,并提高數(shù)據(jù)安全性,極大的提高了用戶體驗度。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為本發(fā)明實施例1提供的一種數(shù)據(jù)緩存層實現(xiàn)方法原理流程圖;
圖2為本發(fā)明實施例2提供的一種數(shù)據(jù)緩存層實現(xiàn)系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,為本發(fā)明實施例1提供的一種數(shù)據(jù)緩存層實現(xiàn)方法原理流程圖,其中,
步驟11,將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層。
數(shù)據(jù)緩存也稱為緩存,緩存是數(shù)據(jù)庫數(shù)據(jù)在內(nèi)存中的臨時容器,它包含了庫表數(shù)據(jù)在內(nèi)存中的拷貝,位于數(shù)據(jù)庫與數(shù)據(jù)訪問層之間。對于查詢操作相當頻繁的系統(tǒng)(論壇,新聞發(fā)布等),良好的緩存機制顯得尤為重要。在進行數(shù)據(jù)讀取和操作時,首先在緩存中查詢,避免了數(shù)據(jù)庫調(diào)用的性能開銷。
比較常見的應用層分布式緩存容器,Memcache、共享文件服務(wù)器、MemcacheDb、Tokyo Tyrant。php里面也有比如x-cache,apc等的基于進程的緩存,這種緩存比分布式緩存速度快,但是限于跟應用的一個機器。java實現(xiàn)的緩存也比較多,比如oscache,jcache,ehcached等等。
數(shù)據(jù)緩存(Data Caching)就是將數(shù)據(jù)暫存于內(nèi)存緩存區(qū)中的一種技術(shù)。通常的數(shù)據(jù)緩存分為以下幾類,但都是將緩存作為一個整體來使用。一個數(shù)據(jù)緩存只有一個輸入和輸出,所有數(shù)據(jù)和請求均在這個緩存中按照隊列先后處理。具體來說,幾種緩存的原理如下:
1、網(wǎng)頁輸出緩存
當網(wǎng)頁的內(nèi)容相對固定時,可以將整個網(wǎng)頁緩存起來。因為對于動態(tài)網(wǎng)頁來說,網(wǎng)頁的訪問大體上可以分為三個步驟:用戶請求;動態(tài)生成網(wǎng)頁并轉(zhuǎn)化為HTML格式;向瀏覽器發(fā)送顯示。
設(shè)置網(wǎng)頁輸出緩存(Output Caching)的方法很簡單,下面舉例:
(1)在網(wǎng)站中增加一個網(wǎng)頁,放入一個label控件,假定將控件命名為TimeMsg。
(2)在網(wǎng)頁的Page_Load事件編寫如下代碼,以便在TimeMsg控件中顯示打開網(wǎng)頁的時間。
{TimeMsg.text=”打開網(wǎng)頁的時間是:”+DataTime.Now.ToString()}
(3)在*.aspx網(wǎng)頁的代碼中增加設(shè)置緩存的指令:
語句”<%@.......%>”是網(wǎng)頁配置的指令,在這里用來給網(wǎng)頁指定緩存參數(shù)。其中:Duration=”60”(注意:時間兩端要加引號)代表緩存持續(xù)時間為60秒,VaryByParam屬性用來指定特定版本的網(wǎng)頁輸出。在<%@OutputCache。。。%>配置指令中一定要加入VaryByParam屬性。即使不使用這個版本屬性,也要將它加入,但將其值設(shè)為none。
網(wǎng)頁緩存以后,不論訪問的用戶來自世界何處,都直接從緩存區(qū)中提取出來直接送發(fā)顯示。
2、數(shù)據(jù)庫緩存
通常情況下,大量數(shù)據(jù)是保存在數(shù)據(jù)庫中的,而應用程序訪問數(shù)據(jù)庫是一項很費時的操作。
如果先將數(shù)據(jù)庫中的數(shù)據(jù)緩存到緩存區(qū)中,當應用程序需要這些數(shù)據(jù)時,直接從緩存區(qū)中提取,就可以減少系統(tǒng)開銷。
在ASP.NET 2.0中可以通過數(shù)據(jù)源設(shè)置數(shù)據(jù)表的緩存參數(shù)。在SqlDataSoure控件的屬性中有幾項用于設(shè)置緩存的參數(shù)。
CacheDuration:代表緩存的持續(xù)時間。默認時間為Infinite(無限)。本例中設(shè)置為600秒。
CacheExpirationPolicy:緩存策略。包括兩種設(shè)置:Absolute和sliding。當設(shè)置成Absolute時,時限一到,緩存區(qū)失效;當設(shè)置為sliding時,時限一到立即刷新緩存區(qū)中的數(shù)據(jù),并繼續(xù)緩存更新后的數(shù)據(jù)。
EnableCaching:默認為False,即不使用數(shù)據(jù)緩存,將該屬性改為True,即可啟動數(shù)據(jù)緩存。
SqlCacheDependency:緩存依賴關(guān)系。例如設(shè)置為pubs:authors表示數(shù)據(jù)庫pubs中的authors數(shù)據(jù)表與它的數(shù)據(jù)緩存之間建立依賴關(guān)系。
屬性中作了上述設(shè)置后,將自動形成以下代碼:
ID=”SqlDataSource1”
EnableCaching=”true”
CacheDuration=”600”
ConnectionString=”Server=localhost;database=pubs;”
selectCommand=”select title from titles”
Runat=”Server”/>
有時數(shù)據(jù)表太大,緩存區(qū)可能會占用太大的內(nèi)存空間??梢詫?shù)據(jù)緩存到硬盤的緩存區(qū)中,為了實現(xiàn)這一點,需要做一些專門的設(shè)置。設(shè)置包括兩方面。
在Web.config文件中指定硬盤緩存區(qū)的大小,配置語句如下:
<system.web>
<caching>
<outputCache>
<diskCache enabled=”True”maxSizePerApp=”2”/>
</outputCache>
</caching>
</system.web>
其中,DiskCache enabled=”True”用來啟動硬盤緩存功能;maxSizePerApp=”2”用來確定緩存區(qū)的容量,這里確定的緩存區(qū)最大容量為2兆。由于對硬盤的存取速度比較慢,因此硬盤緩存只適用于緩存持續(xù)時間較長的情況(本例中緩存時間為60分鐘)。
3、緩存池
數(shù)據(jù)緩存技術(shù)大大提高了數(shù)據(jù)訪問的速度,但卻可能引發(fā)數(shù)據(jù)不一致的問題。
因此,以上數(shù)據(jù)緩存技術(shù)只適用于數(shù)據(jù)量大,變化頻率不高的數(shù)據(jù)?,F(xiàn)在ASP.NET 2.0新版本結(jié)合數(shù)據(jù)庫SQL Server2005,對數(shù)據(jù)緩存功能又作了很大改進,既簡化了使用進程,又完善了處理措施,其中最突出的一點就是與數(shù)據(jù)庫相結(jié)合自動解決了數(shù)據(jù)失效的問題。
在ASP.NET 2.0中為了解決數(shù)據(jù)實效的問題,通過新類SQLCacheDependency建立起與新一代數(shù)據(jù)庫的SQL緩存依賴關(guān)系,這種關(guān)系可以使得數(shù)據(jù)庫能夠自動監(jiān)視數(shù)據(jù)表的狀況,一旦數(shù)據(jù)表發(fā)生了變化,立即啟動數(shù)據(jù)庫本身的觸發(fā)器將相應的緩存區(qū)中的數(shù)據(jù)變?yōu)闊o效。
本實施例中,對于數(shù)據(jù)緩存不再視為一個整體,而是將數(shù)據(jù)緩存根據(jù)需要分解成多個并行的數(shù)據(jù)緩存層。每個數(shù)據(jù)緩存層都是一個獨立的數(shù)據(jù)緩存,可以獨立運作,獨立作為數(shù)據(jù)緩存使用。
數(shù)據(jù)緩存的分層,可以根據(jù)需要預先設(shè)定,也可以根據(jù)需要動態(tài)調(diào)整。例如,可以根據(jù)用戶請求數(shù)據(jù)量的大小,動態(tài)調(diào)整數(shù)據(jù)緩存層的數(shù)量。也就是說,可以將整個數(shù)據(jù)緩存僅分為一個數(shù)據(jù)緩存層,然后根據(jù)實際數(shù)據(jù)量的大小動態(tài)的調(diào)整,數(shù)據(jù)量大的時候就增加數(shù)據(jù)緩存層的數(shù)量,以保證數(shù)據(jù)的及時處理。
步驟12,將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理。
用戶請求即為數(shù)據(jù)緩存層處理的數(shù)據(jù)。實際上,并不一定限定為用戶請求,而是所有的需要數(shù)據(jù)緩存層處理的數(shù)據(jù)均可以在數(shù)據(jù)緩存層中處理,所不同的,僅僅是對不同數(shù)據(jù)的分配方式。
對于用戶請求,必須要在某一個分配的數(shù)據(jù)緩存層中處理。分配的方法,可以是完全隨機的隨機分配。例如,可以根據(jù)用戶請求所針對的用戶屬性標識或者應用標識等,取其中的部分編碼進行隨機數(shù)計算,得到的結(jié)果對應不同的數(shù)據(jù)緩存層。這樣,可以保證所有的用戶請求隨機的均勻分配到不同的數(shù)據(jù)緩 存層處理。
進一步的,為了保證數(shù)據(jù)緩存層與用戶請求分配的穩(wěn)定性,可以采用想用的負載均衡算法進行分配。負載均衡解決方案是指在一臺或多臺服務(wù)器相應的操作系統(tǒng)上安裝一個或多個附加軟件來實現(xiàn)負載均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的優(yōu)點是基于特定環(huán)境,配置簡單,使用靈活,成本低廉,可以滿足一般的負載均衡需求。
通常的負載均衡算法主要有:Static算法、Random算法、Round robin算法、Hash算法、CARP算法、Consistent hash算法等。
Static算法,負載均衡的石器時代,為一個服務(wù)指定多個IP:PORT,備份模式,其總是返回服務(wù)器組的第一個服務(wù)器(只要第一個服務(wù)器可用),當?shù)谝粋€服務(wù)器沒有用的時候,才會返回后續(xù)可用的服務(wù)器。這種情況下,每臺機器都包括全量的數(shù)據(jù),查詢通常會落到第一臺機器上,第一臺機器上Cache命中率高。
Random算法對于無狀態(tài)服務(wù)比較適用,隨便選取一臺機器就可以。在實際使用中,跟Static算法一樣,都是模塊維護全量數(shù)據(jù),這個還好每臺機器的cache命中率理論上應該差不多,但是都不高。因為同樣一個請求一會落到機器A,一會落到機器B上。
Round robin算法是典型的平均主義,順序依次選取服務(wù)器。同樣的模塊維護全量數(shù)據(jù),跟Random一樣杯具,基本上一樣的原因。相同的請求會被落到不同的機器上,導致Cache命中率低。
Hash算法又叫取余算法,將query key做hash之后,按照機器數(shù)量取余,選取中一個機器進行連接服務(wù)。余數(shù)計算的方法簡單,數(shù)據(jù)的分散性也相當優(yōu)秀,但也有其缺點。那就是當添加或移除服務(wù)器時,緩存重組的代價相當巨大。添加服務(wù)器后,余數(shù)就會產(chǎn)生巨變,這樣就無法獲取與保存時相同的服務(wù)器,從而影響緩存的命中率。
CARP算法準確的說不是一個算法,而是一個協(xié)議,Cache Array Routing Protocol,Cache群組路由協(xié)議。計算全部服務(wù)器的idx_key=hash(query_key+server_idx),其中計算得到idx_key最大的server_idx就是需要的idx。假設(shè)開始3臺后端服務(wù)器,請求用標志串req="abcd"來標志,服務(wù)器用S1,S2,S3來標志,那么,通過對req+Sx合并起來計算簽名就可以對每個服務(wù)器得到一個數(shù)值:
(req="abcd"+S1)=K1
(req="abcd"+S2)=K2
(req="abcd"+S3)=K3
計算的方法可以使用crc,也可以使用MD5,目的的得到一個*散列*的數(shù)字,這樣在K1,K2,K3中必定有一個最大的數(shù)值,假設(shè)是K2,那么可以將請求req扔給S2,這樣,以后對相同的請求,相同的服務(wù)器組,計算出來的結(jié)果必定是K2最大,從而達到HASH分布的效果。
巧妙的地方在于,新增或者刪除一臺服務(wù)器的時候,不會引起已有服務(wù)器的cache大規(guī)模失效,假設(shè)新增一臺服務(wù)器S4,那么對S1,S2,S3計算的K值都完全相同,那么對S4可以計算得到一個新值K4,如果計算K的算法足夠散列,那么原先計算到S1,S2,S3的請求,理論上都會有1/4的請求新計算得到的K4比原先的K大,那么這1/4的請求會轉(zhuǎn)移到S4,從而新增的S4服務(wù)器會負擔1/4的請求,原先的S1,S2,S3也只會負擔原先的3/4。
Consistent hash算法:首先求出服務(wù)器(節(jié)點)的哈希值,并將其配置到0~2^32的圓(continuum)上。然后用同樣的方法求出存儲數(shù)據(jù)的鍵的哈希值,并映射到圓上。然后從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)保存到找到的第一個服務(wù)器上。如果超過2^32仍然找不到服務(wù)器,就會保存到第一臺服務(wù)器上。
各種負載均衡算法均可以完成本實施例要求的對用戶請求平均分配到各個數(shù)據(jù)緩存層的過程,只是效率有所區(qū)別。本實施例對負載均衡算法沒有具體限定。
進一步的,由于每個用戶對應的用戶請求的處理可能有先后順序的要求,而如果將同一用戶的不同用戶請求隨機的分配到不同的數(shù)據(jù)緩存層處理,則可能會破壞同一用戶的用戶請求的時間順序。因而,需要對同一用戶的用戶請求都分配到同一個數(shù)據(jù)緩存層處理。具體實現(xiàn)方式可以為:根據(jù)所述用戶請求的對應的用戶標識的編碼,隨機計算所述用戶請求對應的數(shù)據(jù)緩存層,并根據(jù)計算結(jié)果將所述用戶請求分配到不同的數(shù)據(jù)緩存層。
步驟13,應用層從數(shù)據(jù)緩存層中獲取用戶請求的處理結(jié)果。
由于已經(jīng)將用戶請求分配到了不同的數(shù)據(jù)緩存層處理,則相應的應用層就需要從不同的數(shù)據(jù)緩存層中獲取用戶請求的處理結(jié)果,并進行后續(xù)處理。應用層與數(shù)據(jù)緩存層的對應,與用戶請求與數(shù)據(jù)緩存層的分配相類似。
本實施例通過將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;應用層從所述數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。本發(fā)明實施例的方案,能夠提高數(shù)據(jù)緩存訪問的速度和效率,并提高數(shù)據(jù)安全性,極大的提高了用戶體驗度。
如圖2所示,為本發(fā)明實施例2提供的一種數(shù)據(jù)緩存層實現(xiàn)系統(tǒng)結(jié)構(gòu)示意圖,其中,
數(shù)據(jù)緩存層單元21,將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;
用戶請求分配單元22,用于將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;
應用層單元23,用于從數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。
進一步的,所述數(shù)據(jù)緩存層單元21還用于根據(jù)用戶請求數(shù)據(jù)量的大小,動態(tài)調(diào)整所述數(shù)據(jù)緩存層的數(shù)量。
進一步的,所述用戶請求分配單元22還用于將所述用戶請求根據(jù)負載均衡算法,隨機分配到不同的數(shù)據(jù)緩存層處理。
進一步的,所述用戶請求分配單元22還用于將同一用戶的用戶請求分配到同一數(shù)據(jù)緩存層處理。
綜上所述,本發(fā)明實施例通過將數(shù)據(jù)緩存分為若干層,每一層均為獨立的數(shù)據(jù)緩存層;將用戶請求分別分配到不同的數(shù)據(jù)緩存層處理;應用層從所述數(shù)據(jù)緩存層中獲取所述用戶請求的處理結(jié)果。本發(fā)明實施例的方案,能夠提高數(shù)據(jù)緩存訪問的速度和效率,并提高數(shù)據(jù)安全性,極大的提高了用戶體驗度。
本領(lǐng)域內(nèi)的技術(shù)人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個 流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。