一種異步緩存方法、服務(wù)器及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及緩存技術(shù)領(lǐng)域,尤其涉及一種異步緩存方法、服務(wù)器及系統(tǒng)。
【背景技術(shù)】
[0002]目前,利用緩存技術(shù)進(jìn)行數(shù)據(jù)讀取,一般是將從數(shù)據(jù)庫中獲取到的數(shù)據(jù)存放在緩存中,并設(shè)置緩存過期的物理時間。請求到達(dá)時,如果緩存中有需要的數(shù)據(jù)則返回緩存的數(shù)據(jù),如果緩存中沒有數(shù)據(jù)(沒有緩存過數(shù)據(jù)或緩存數(shù)據(jù)已過期),則訪問源數(shù)據(jù)庫,如圖1所
/_J、i ο
[0003]由于緩存過期的物理時間設(shè)置的比較短,則緩存中存儲的冷數(shù)據(jù)比較容易過期,而緩存中的數(shù)據(jù)過期后即訪問源數(shù)據(jù)庫,從而造成冷數(shù)據(jù)緩存無效或低效的狀況以及大量的、高頻率的訪問源數(shù)據(jù)庫的操作,進(jìn)而給源數(shù)據(jù)庫帶來了極大的訪問壓力,數(shù)據(jù)讀取的請求量越大,數(shù)據(jù)庫的訪問壓力越大,嚴(yán)重時,甚至?xí)绊懺磾?shù)據(jù)庫的正常訪問,進(jìn)而影響系統(tǒng)的正常使用。另外,訪問源數(shù)據(jù)庫如果出錯,當(dāng)次請求的響應(yīng)就會失敗報錯;同時直到訪問源數(shù)據(jù)庫成功才能再次建立緩存。
[0004]因此,采用現(xiàn)有技術(shù)中的緩存讀取數(shù)據(jù),系統(tǒng)的可用性和穩(wěn)定性受到了極大的影響。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種異步緩存方法、服務(wù)器及系統(tǒng),從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0006]為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0007]—種異步緩存方法,包括如下步驟:
[0008]S1,異步緩存服務(wù)器接收用戶請求和作為委托參數(shù)的訪問源服務(wù)器的函數(shù);
[0009]S2,檢查所述異步緩存服務(wù)器中是否存在與所述用戶請求的數(shù)據(jù)一致的異步緩存數(shù)據(jù),如果不存在則執(zhí)行步驟S3,如果存在則執(zhí)行步驟S7 ;
[0010]S3,所述異步緩存服務(wù)器調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從所述源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù),并將該源數(shù)據(jù)返回給用戶,同時執(zhí)行步驟S4 ;
[0011]S4,為步驟S3或步驟S6中獲取的所述源數(shù)據(jù)添加邏輯過期時間,形成異步緩存數(shù)據(jù);將所述異步緩存數(shù)據(jù)存入所述異步緩存服務(wù)器,并設(shè)置所述異步緩存數(shù)據(jù)的物理過期時間;
[0012]S5,驗證所述異步緩存數(shù)據(jù)是否邏輯過期,如果未邏輯過期,則結(jié)束;如果邏輯過期,則執(zhí)行步驟S6;
[0013]S6,調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從所述源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù),然后執(zhí)行步驟S4 ;
[0014]S7,獲取所述異步緩存數(shù)據(jù),并將該數(shù)據(jù)返回給用戶;同時執(zhí)行步驟S5-S6。
[0015]具體地,步驟S4中,所述邏輯過期時間設(shè)置為150-900秒。
[0016]優(yōu)選地,所述邏輯過期時間設(shè)置為300秒。
[0017]具體地,步驟S4中,所述物理過期時間設(shè)置為1-7天。
[0018]優(yōu)選地,所述物理過期時間設(shè)置為2天。
[0019]進(jìn)一步地,步驟S4中,所述為步驟S3或步驟S6中獲取的所述源數(shù)據(jù)添加邏輯過期時間,包括,將步驟S3或步驟S6中獲取的所述源數(shù)據(jù)進(jìn)行序列化,在序列化后的數(shù)據(jù)前端添加邏輯過期時間。
[0020]更進(jìn)一步地,步驟S7中,所述獲取所述異步緩存數(shù)據(jù),并將該數(shù)據(jù)返回給用戶,包括,將所述異步緩存數(shù)據(jù)中的所述邏輯過期時間和所述源數(shù)據(jù)分離,并將所述源數(shù)據(jù)反序列化成對象后返回給用戶。
[0021]進(jìn)一步地,步驟S6中,所述調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),采用分布式鎖控制。
[0022]一種異步緩存服務(wù)器,包括:
[0023]數(shù)據(jù)接收單元:用于接收用戶請求和作為委托參數(shù)的訪問源服務(wù)器的函數(shù);
[0024]數(shù)據(jù)處理單元:檢查所述異步緩存服務(wù)器中是否存在與所述用戶請求的數(shù)據(jù)一致的異步緩存數(shù)據(jù);還用于為源數(shù)據(jù)添加邏輯過期時間,以及為所述異步緩存數(shù)據(jù)設(shè)置物理過期時間;
[0025]數(shù)據(jù)提取單元:用于調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從所述源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù);
[0026]數(shù)據(jù)存儲單元:用于存儲異步緩存數(shù)據(jù);
[0027]數(shù)據(jù)輸出單元:用于將異步緩存數(shù)據(jù)和源數(shù)據(jù)返回給用戶。
[0028]一種異步緩存系統(tǒng),包括:用戶請求處理端,用于發(fā)送用戶請求和作為委托參數(shù)的訪問源服務(wù)器的函數(shù),權(quán)利要求9所述的異步緩存服務(wù)器和提供源數(shù)據(jù)的源服務(wù)器。
[0029]本發(fā)明的有益效果是:
[0030]因此,在讀取請求數(shù)據(jù)時,尤其是當(dāng)數(shù)據(jù)請求量比較大的情況下,會極大的減輕源服務(wù)器的訪問壓力,進(jìn)而減輕系統(tǒng)的負(fù)載壓力,在實際使用過程中發(fā)現(xiàn),與現(xiàn)有技術(shù)相比,采用本發(fā)明實施例提供的技術(shù)方案,對請求的響應(yīng)時間為500毫秒以下,而采用現(xiàn)有的緩存技術(shù),對請求的響應(yīng)時間為4秒;另外,采用本發(fā)明實施例提供的技術(shù)方案,當(dāng)訪問源服務(wù)器出錯時,也不會影響當(dāng)次請求的響應(yīng),只會影響緩存數(shù)據(jù)的更新,所以,采用本發(fā)明實施例提供的技術(shù)方案,可以明顯的提升系統(tǒng)的可用性和穩(wěn)定性。
【附圖說明】
[0031]圖1是現(xiàn)有技術(shù)的緩存方法流程圖;
[0032]圖2是本發(fā)明實施例提供的異步緩存方法流程圖。
【具體實施方式】
[0033]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0034]如圖2所示,本發(fā)明實施例提供的異步緩存的方法,包括如下步驟:
[0035]S1,異步緩存服務(wù)器接收用戶請求和作為委托參數(shù)的訪問源服務(wù)器的函數(shù);
[0036]S2,檢查所述異步緩存服務(wù)器中是否存在與所述用戶請求的數(shù)據(jù)一致的異步緩存數(shù)據(jù),如果不存在則執(zhí)行步驟S3,如果存在則執(zhí)行步驟S7 ;
[0037]S3,所述異步緩存服務(wù)器調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從所述源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù),并將該源數(shù)據(jù)返回給用戶,同時執(zhí)行步驟S4 ;
[0038]S4,為步驟S3或步驟S6中獲取的所述源數(shù)據(jù)添加邏輯過期時間,形成異步緩存數(shù)據(jù);將所述異步緩存數(shù)據(jù)存入所述異步緩存服務(wù)器,并設(shè)置所述異步緩存數(shù)據(jù)的物理過期時間;
[0039]S5,驗證所述異步緩存數(shù)據(jù)是否邏輯過期,如果未邏輯過期,則結(jié)束;如果邏輯過期,則執(zhí)行步驟S6;
[0040]S6,調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從所述源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù),然后執(zhí)行步驟S4 ;
[0041]S7,獲取所述異步緩存數(shù)據(jù),并將該數(shù)據(jù)返回給用戶;同時執(zhí)行步驟S5-S6。
[0042]如本領(lǐng)域技術(shù)人員可以理解的,用戶請求可以是用戶端訪問web站點,web服務(wù)器處理用戶請求后,將用戶請求發(fā)送至異步緩存服務(wù)器,其中,web服務(wù)器將訪問源服務(wù)器的函數(shù)作為委托參數(shù)傳遞給異步緩存服務(wù)器。
[0043]當(dāng)異步緩存服務(wù)器中不存在與所述用戶請求的數(shù)據(jù)一致的異步緩存數(shù)據(jù)時,異步緩存服務(wù)器會調(diào)用該委托參數(shù),訪問源服務(wù)器獲取源數(shù)據(jù),并返回給用戶。本發(fā)明實施例中,完成上述任務(wù)的同時,將讀取的源數(shù)據(jù)進(jìn)行序列化,在序列化后的數(shù)據(jù)前端添加邏輯過期時間,形成異步緩存數(shù)據(jù);將所述異步緩存數(shù)據(jù)存入所述異步緩存服務(wù)器,并設(shè)置所述異步緩存數(shù)據(jù)的物理過期時間;從而在異步緩存服務(wù)器中實現(xiàn)異步緩存數(shù)據(jù)的更新。
[0044]當(dāng)異步緩存服務(wù)器存在與所述用戶請求的數(shù)據(jù)一致的異步緩存數(shù)據(jù)時,則直接獲取數(shù)據(jù)并返回給用戶,在異步緩存服務(wù)器中,完成請求響應(yīng)的主線程的同時,異步緩存服務(wù)器會啟動一個新線程,該線程為:
[0045]驗證上述異步緩存服務(wù)器中已經(jīng)更新的異步緩存數(shù)據(jù)是否邏輯過期,如果未邏輯過期,則結(jié)束;如果邏輯過期,則調(diào)用所述作為委托參數(shù)的訪問源服務(wù)器的函數(shù),從源服務(wù)器中獲取與所述用戶請求的數(shù)據(jù)相一致的源數(shù)據(jù),獲取源數(shù)據(jù)后,再將所述源數(shù)據(jù)進(jìn)行序列化,在序列化后的數(shù)據(jù)前端添加邏輯過期時間,形成異步緩存數(shù)據(jù);將所述異步緩存數(shù)據(jù)存入所述異步緩存服務(wù)器,并設(shè)置所述異步緩存數(shù)據(jù)的物理過期時間,再次在異步緩存服務(wù)器中完成異步緩存數(shù)據(jù)的更新。
[0046]上述技術(shù)方案中,由于異步緩存數(shù)據(jù)處于不斷的更新中,因此,新的請求抵達(dá)時,系統(tǒng)會將已經(jīng)更新過的數(shù)據(jù)提供給用戶。
[0047]本發(fā)明實施例中,通過上述兩次的異步緩存數(shù)據(jù)的更新,可以保證80% -90%的用戶請求只需要訪問異步緩存服務(wù)器即可,而不需要讀取源服務(wù)器。因此,在讀取請求數(shù)據(jù)時,尤其是當(dāng)數(shù)據(jù)請求量比較大的情況下,會極大的減輕源服務(wù)器的訪問壓力,進(jìn)而減輕系統(tǒng)的負(fù)載壓力,在實際使用過程中發(fā)現(xiàn),與現(xiàn)有技術(shù)相比,采用本發(fā)明實施例提供的技術(shù)方案,對請求的響應(yīng)時間為500毫秒以下,而采用現(xiàn)有的緩存技術(shù),對請求的響應(yīng)時間為4秒;另外,采用本發(fā)明實施例提供的技術(shù)方案,當(dāng)訪問源服務(wù)器出錯時,也不會影響當(dāng)次請求的響應(yīng),只會影響緩存數(shù)據(jù)的更新,所以,采用本發(fā)明實施例提供的技術(shù)方案,可以明顯的提升系統(tǒng)的可用性和穩(wěn)定性。
[0048]在本發(fā)明實施例中,所述邏輯過期時間為18字節(jié)過期時間戳。
[0049]邏輯過期時間一般可以根據(jù)緩存數(shù)據(jù)更新頻率的需要進(jìn)行設(shè)置。當(dāng)緩存數(shù)據(jù)的訪問頻率較高時,則更新頻率可以低一些,因為訪問頻率高,所以即使更新頻率低,也不會影響訪問效率;相反,當(dāng)緩存數(shù)據(jù)的訪問頻率較低時,則更新頻率應(yīng)當(dāng)高一些,因為訪問頻率低,如果不經(jīng)常更新,即更新頻率低的話,數(shù)據(jù)的訪問效率會比較低;因此,對于訪問頻率較高的數(shù)據(jù),其需要的更新頻率比較低,其對應(yīng)的設(shè)置的邏輯過期時間可以短一些,邏輯過期時間越短,訪問源服務(wù)器的頻次越多,更新越快;