專利名稱:一種基于服務等級的數據緩存的系統和方法
技術領域:
本發明涉及數據存儲領域,特別涉及一種數據緩存的系統和方法,用來系統運行過程中,進行數據緩存,以提高軟件系統的性能和效率。
背景技術:
SAAS,軟件即服務,提供了軟件運營的一種模式。在SAAS等互聯網軟件或系統中,系統的性能一直是軟件架構設計者關注的重點,如何使系統在高并發的情況下保持較高的性能,在系統的架構設計上,數據緩存是一種常有的方法。但目前的數據緩存方法一般采用LRU來對數據進行緩存,在高并發,大數據量,緩存有限的情況下,數據緩存的命中率低,系統的性能不能得到有效提升,也不能按照用戶的服務等級來提供有差別的軟件服務。本發明使用了一種基于用戶服務等級,功能優先級,訪問頻度等的綜合緩存指數數據評價的模型和方法。在緩存數據時,根據這種模型和方法,來決定數據緩存的時間,對緩存進行管理,可以提高緩存的命中率,提供系統對用戶服務質量和等級的支撐,提高系統核心功能的響應時間以及并發能力。
發明內容
針對現有技術中存在的缺陷,本發明提出一種基于服務等級的數據緩存的系統,該系統基于服務等級進行管理,其由數據元信息管理器,緩存指數計算模塊,緩存管理器三部分構成,數據元信息管理器,其儲存的信息包括數據xkey,數據類別xtype,數據優先級別xprio,數據服務等級xslevl,數據計算復雜度xcomplx,數據訪問頻次xvisitor,數據交換次數xswap,數據最近訪問時間xtime ;緩存指數計算模塊,根據數據元信息管理器存儲的上述的數據元信息來計算數據的緩存指數,緩存指數決定了數據在緩存池中的位置和保留級別;緩存管理器,其負責緩存的管理,根據數據的緩存指數來決定是否從緩存中刪去或交換到磁盤。優選地,數據服務等級xslevl表示響應服務請求的級別;數據類別xtype表示數據的類型,與具體所存儲的實際數據有關,此變量不參與緩存指數的計算;數據優先級別xprio :表示數據在系統中的重要級別;數據計算復雜度xcomplx :表示所請求的數據為經過計算而獲得的; 數據訪問頻次xvisitor :指從系統啟動后,數據被訪問的次數,訪問次數由數據緩存器管理,每次請求數據時,緩存管理器會自動更新此值;數據交換次數xswap,指從系統啟動后,數據被緩存管理器交換到外部設備,從緩存中清除的次數;每次被清除時,緩存管理器會自動更新此值;數據最近訪問時間xtime,指最近的數據被訪問時間,由緩存管理器維護。
優選地,所述數據元信息中,數據類別xtype,數據服務等級xslevl,數據優先級別xprio,數據計算復雜度xcomplx為系統的初始數據,在系統運行前,需要根據系統特點進行初始化優選地,緩存指數xidcache的計算方法為Xidcache = xslevl氺xparaml+xprio氺xparam2+xcomplx氺xparam3+xvisitor氺xparam4+xswap*xparam5+xtime上面公式中,xparami (i = 1,2,3,4,5)分別代表各元信息的權重,xparami的取值不同,影響著數據的緩存時間和效率,對于不同的系統,可以根據情況不同設定不同的權重。優選地,在文檔型數據進行緩存的時候,xparami、xparam2、xparam3、xparam4、xparam5分別取值為1000、1000、500、100、10,則計算緩存指數xidcache為Xidcache = xslevl*1000+xprio*1000+xcomplx*500+xvisitor*100+xswap*100+xtime。本發明同時還提出一種基于服務等級的數據緩存的方法,該方法包括以下步驟步驟I :客戶端請求數據,請求中包含數據xkey,數據類別xtype ;步驟2 :緩存管理器在緩存中查找數據xkey ;步驟3 :判斷是否找到數據xkey,如果找到數據xkey則執行步驟4,如果未找到數據xkey則執行步驟4A1 ;步驟4 :將數據xkey返回客戶端步驟5 :更新是數據最近訪問時間xtime,訪問頻次xvisitor ;結束;步驟4A1 :從數據元信息管理獲取數據元信息;步驟4A2 :從底層數據源獲取數據;步驟4A3 :計算緩存指數xidcache ;步驟4A4 :請求將數據xkey放入緩存池中;步驟4A5 :判斷緩存池是否有足夠空間,如果判斷確定有足夠空間則執行步驟4A6,如果判斷確定沒有有足夠空間則執行步驟4B1 ;步驟4A6 :將數據(key, indxcache, value)放入緩存并執行步驟5 ;步驟4B1 :進行緩存空間管理,從緩存中將緩存指數比較低的數據交換到外部;步驟4B2 :再次判斷緩存池是否有足夠空間,如果有則執行步驟4A6,如果沒有則丟棄數據。優選地,數據服務等級xslevl表示響應服務請求的級別;數據類別xtype表示數據的類型,與具體所存儲的實際數據有關,此變量不參與緩存指數的計算;數據優先級別xprio :表示數據在系統中的重要級別;數據計算復雜度xcomplx :表示所請求的數據為經過計算而獲得的;數據訪問頻次xvisitor :指從系統啟動后,數據被訪問的次數,訪問次數由數據緩存器管理,每次請求數據時,緩存管理器會自動更新此值;數據交換次數xswap,指從系統啟動后,數據被緩存管理器交換到外部設備,從緩存中清除的次數;每次被清除時,緩存管理器會自動更新此值;
數據最近訪問時間xtime,指最近的數據被訪問時間,由緩存管理器維護。優選地,所述數據元信息中,數據類別xtype,數據服務等級xslevl,數據優先級別xprio,數據計算復雜度xcomplx為系統的初始數據,在系統運行前,需要根據系統特點進行初始化。優選地,緩存指數xidcache的計算方法為Xidcache = xslevl氺xparaml+xprio氺xparam2+xcomplx氺xparam3+xvisitor氺xparam4+xswap*xparam5+xtime ;上面公式中,xparami (i = 1,2,3,4,5)分別代表各元信息的權重,xparami的取值不同,影響著數據的緩存時間和效率,對于不同的系統,可以根據情況不同設定不同的權 重。優選地,在文檔型數據進行緩存的時候,xparami、xparam2、xparam3、xparam4、xparam5分別取值為1000、1000、500、100、10,則計算緩存指數xidcache為Xidcache = xslevl*1000+xprio*1000+xcomplx*500+xvisitor*100+xswap*100+xtime。通過本發明的基于服務等級的緩存數據的系統和方法,能提高緩存的利用效率和命中率,提供系統對用戶服務質量和等級的支撐,提高系統核心功能的響應時間以及并發能力。
圖I為本發明提供的基于服務等級的數據緩存系統的結構圖。圖2為本發明提供的基于服務等級的數據緩存的方法的流程圖。
具體實施例方式下面結合附圖對本發明作進一步說明。如圖I所示,本發明的緩存管理的系統由數據元信息管理器,緩存指數計算模塊,緩存管理器三部分構成。數據元信息儲存數據xkey,數據的類別xtype,數據的優先級別xprio,數據的服務等級xslevl,數據計算復雜度xcomplx,數據訪問頻次xvisitor,數據交換次數xswap,數據最近訪問時間xtime等信息。這些信息是用來進行緩存指數計算的要素。緩存指數計算上述的數據元信息來計算數據的緩存指數,此緩存指數決定了數據在緩存池中的位置和保留級別。緩存管理器負責緩存的管理,根據數據的緩存指數來決定是否從緩存中刪去或交換到磁盤。數據服務等級xslevl,表示響應服務請求的級別,在SAAS軟件運營中,為了提供差異化的服務,在定購軟件時用戶可以選擇不同級別的服務,級別越高,系統提供越高的服務質量,這要求數據緩存的命中率也相應提高。本發明將數據服務等級分為很高,高,較高,一般,較低,低六級。相應的數值分別為2、I. 6、I. 2、I. 0,0. 8,0. 6來表示。數據類別xtype :表示數據的類型,如用戶,產品,訂單,文檔等,與具體所存儲的實際數據有關,此變量不參與緩存指數的計算。數據優先級別xprio :表示數據在系統中的重要級別。如在一個電子商務在線系統中,用戶,訂單,產品數據為核心數據,對這些數據的操作和訪問會比較頻繁。在緩存上,應該享有較高的級別。而評論,歷史訂單,推薦等數據非系統的核心功能數據,相對訪問會比較少。優先級別分為五級,分為高,較高,一般,較低,低六級。相應的數值分別為2、1. 6、I. 2、L 0>0. 8 來表示。數據計算復雜度xcomplx :表示所請求的數據為經過計算而獲得的,如訂單的總額。依據計算的復雜度,將數據分為高,中,低,無四個級別。相應的數值分別為I. 0,0. 6,0. 4,0. O。數據訪問頻次xvisitor :指從系統啟動后,數據被訪問的次數。訪問次數由數據緩存器管理,每次請求數據時,緩存 管理器會自動更新此值。數據交換次數xswap,指從系統啟動后,數據被緩存管理器交換到外部設備,從緩存中清除的次數。每次被清除時,緩存管理器會自動更新此值。數據最近訪問時間xtime,指最近的數據被訪問時間,由緩存管理器維護。在上述數據元信息中,數據類別xtype,數據服務等級xslevl,數據優先級別xprio,數據計算復雜度xcomplx為系統的初始數據,在系統運行前,需要根據系統特點進行初始化。緩存指數xidcache的計算方法為通過各參數與相應的權重相乘,將得到的乘積相加,得到緩存指數,具體為通過如下公式Xidcache = xslevl氺xparaml+xprio氺xparam2+xcomplx氺xparam3+xvisitor氺xparam4+xswap*xparam5+xtime上面公式中,xparami (i = 1,2,3,4,5)分別代表各元信息的權重,xparami的取值不同,影響著數據的緩存時間和效率,對于不同的系統,可以根據情況不同設定不同的權重。在文檔型數據進行緩存的時候,實踐證明下列參數有著較好的效率和命中率,xparami> xparam2> xparam3> xparam4> xparam5 分別取值為1000、1000、500、100、10,則計算緩存指數xidcache為Xidcache = xslevl*1000+xprio*1000+xcomplx*500+xvisitor*100+xswap*100+xtime參見圖2,在BI經營分析產品的緩存系統的設計中,采用如上的系統和方法,緩存系統的實施方式如下流程所示步驟I :客戶端請求數據,請求中包含數據xkey,數據類別xtype ;步驟2 :緩存管理器在緩存中查找數據xkey ;步驟3 :判斷是否找到數據xkey,如果找到數據xkey則執行步驟4,如果未找到數據xkey則執行步驟4A1 ;步驟4 :將數據xkey返回客戶端步驟5 :更新是數據最近訪問時間xtime,訪問頻次xvisitor ;結束;步驟4A1 :從數據元信息管理獲取數據元信息;步驟4A2 :從底層數據源獲取數據;步驟4A3 :計算緩存指數xidcache ;步驟4A4 :請求將數據xkey放入緩存池中;步驟4A5 :判斷緩存池是否有足夠空間,如果判斷確定有足夠空間則執行步驟4A6,如果判斷確定沒有有足夠空間則執行步驟4B1 ;步驟4A6 :將數據(key, indxcache, value)放入緩存并執行步驟5 ;步驟4B1 :進行緩存空間管理,從緩存中將緩存指數比較低的數據交換到外部;步驟4B2 :再次判斷緩存池是否有足夠空間,如果有則執行步驟4A6,如果沒有則丟棄數據。在緩存系統設計中,采用這種數據緩存的模型和方法,對緩存數據進行管理,在同等緩存池大小的情況下,可以提高緩存的命中率,提供系統對用戶服務質量和等級的支撐,提聞系統核心功能的響應時間以及并發能力。
以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種基于服務等級的數據緩存的系統,該系統基于服務等級進行管理,其由數據元信息管理器,緩存指數計算模塊,緩存管理器三部分構成, 數據元信息管理器,其儲存的信息包括數據xkey,數據類別Xtype,數據優先級別xprio,數據服務等級xslevl,數據計算復雜度xcomplx,數據訪問頻次xvisitor,數據交換次數xswap,數據最近訪問時間xtime ; 緩存指數計算模塊,根據數據元信息管理器存儲的上述的數據元信息來計算數據的緩存指數,緩存指數決定了數據在緩存池中的位置和保留級別; 緩存管理器,其負責緩存的管理,根據數據的緩存指數來決定是否從緩存中刪去或交換到磁盤。
2.如權利要求I所述的系統,其中 數據服務等級xslevl表示響應服務請求的級別; 數據類別xtype表示數據的類型,與具體所存儲的實際數據有夫,此變量不參與緩存指數的計算; 數據優先級別xprio :表示數據在系統中的重要級別; 數據計算復雜度xcomplx :表示所請求的數據為經過計算而獲得的; 數據訪問頻次xvisitor :指從系統啟動后,數據被訪問的次數,訪問次數由數據緩存器管理,每次請求數據時,緩存管理器會自動更新此值; 數據交換次數xswap,指從系統啟動后,數據被緩存管理器交換到外部設備,從緩存中清除的次數;每次被清除時,緩存管理器會自動更新此值; 數據最近訪問時間xtime,指最近的數據被訪問時間,由緩存管理器維護。
3.如權利要求2所述的系統,其中所述數據元信息中,數據類別xtype,數據服務等級xslevl,數據優先級別xprio,數據計算復雜度xcomplx為系統的初始數據,在系統運行前,需要根據系統特點進行初始化。
4.如權利要求3所述的系統,其中緩存指數xidcache的計算方法為 Xidcache=Xslevl氺xparaml+xprio氺xparam2+xcomplx氺xparam3+xvisitor氺xparam4+xswap氺 xparam5+xtime 上面公式中,xparami (i=l, 2, 3,4, 5)分別代表各元信息的權重,xparami的取值不同,影響著數據的緩存時間和效率,對于不同的系統,根據情況不同設定不同的權重。
5.如權利要求4所述的系統,其中在文檔型數據進行緩存的時候,xparami、xparam2、xparam3> xparam4、xparam5 分別取值為1000、1000、500、100、10,則計算緩存指數xidcache 為Xidcache=xslevl*1000+xprio*1000+xcomplx*500+xvisitor*100+xswap*100+xtime。
6.一種基于服務等級的數據緩存的方法,其特征在于,該方法包括以下步驟 步驟I :客戶端請求數據,請求中包含數據xkey,數據類別xtype ; 步驟2 :緩存管理器在緩存中查找數據xkey ; 步驟3 :判斷是否找到數據xkey,如果找到數據xkey則執行步驟4,如果未找到數據xkey則執行步驟4A1 ; 步驟4 :將數據xkey返回客戶端; 步驟5 :更新是數據最近訪問時間xtime,訪問頻次xvisitor ;結束;步驟4A1 :從數據元信息管理獲取數據元信息; 步驟4A2 :從底層數據源獲取數據; 步驟4A3 :計算緩存指數xidcache ; 步驟4A4 :請求將數據xkey放入緩存池中; 步驟4A5 :判斷緩存池是否有足夠空間,如果判斷確定有足夠空間則執行步驟4A6,如果判斷確定沒有有足夠空間則執行步驟4B1 ; 步驟4A6 :將數據(key, indxcache, value)放入緩存并執行步驟5 ; 步驟4B1 :進行緩存空間管理,從緩存中將緩存指數比較低的數據交換到外部; 步驟4B2 :再次判斷緩存池是否有足夠空間,如果有則執行步驟4A6,如果沒有則丟棄數據。
7.如權利要求6所述的方法,其中 數據服務等級xslevl表示響應服務請求的級別; 數據類別xtype表示數據的類型,與具體所存儲的實際數據有夫,此變量不參與緩存指數的計算; 數據優先級別xprio :表示數據在系統中的重要級別; 數據計算復雜度xcomplx :表示所請求的數據為經過計算而獲得的; 數據訪問頻次xvisitor :指從系統啟動后,數據被訪問的次數,訪問次數由數據緩存器管理,每次請求數據時,緩存管理器會自動更新此值; 數據交換次數xswap,指從系統啟動后,數據被緩存管理器交換到外部設備,從緩存中清除的次數;每次被清除時,緩存管理器會自動更新此值; 數據最近訪問時間xtime,指最近的數據被訪問時間,由緩存管理器維護。
8.如權利要求7所述的方法,其中所述數據元信息中,數據類別xtype,數據服務等級xslevl,數據優先級別xprio,數據計算復雜度xcomplx為系統的初始數據,在系統運行前,需要根據系統特點進行初始化。
9.如權利要求8所述的方法,其中緩存指數xidcache的計算方法為 Xidcache=xslevl*xparaml+xprio*xparam2+xcomplx*xparamd+xvisitor*xparam4+xswap氺 xparam5+xtime ; 上面公式中,xparami (i=l,2,3,4,5)分別代表各元信息的權重,xparami的取值不同,影響著數據的緩存時間和效率,對于不同的系統,根據情況不同設定不同的權重。
10.如權利要求9所述的方法,其中在文檔型數據進行緩存的時候,xparami、xparam2、xparam3、xparam4、xparam5 分別取值為1000、1000、500、100、10,則計算緩存指數xidcache 為Xidcache=xsIevl^lOOO+xprio^lOOO+xcomplx^SOO+xvisitor^lOO+xswap^I00+xtimeo
全文摘要
本發明提供一種基于服務等級的數據緩存的系統,該系統基于服務等級進行管理,其由數據元信息管理器,緩存指數計算模塊,緩存管理器三部分構成,數據元信息管理器,其儲存的相應的信息;緩存指數計算模塊,根據數據元信息管理器存儲的上述的數據元信息來計算數據的緩存指數,緩存指數決定了數據在緩存池中的位置和保留級別;緩存管理器,其負責緩存的管理。本發明還提供一種基于服務等級的數據緩存的方法。通過本發明的基于服務等級的緩存數據的系統和方法,能提高緩存的利用效率和命中率,提供系統對用戶服務質量和等級的支撐,提高系統核心功能的響應時間以及并發能力。
文檔編號G06F12/08GK102662859SQ20121006658
公開日2012年9月12日 申請日期2012年3月14日 優先權日2012年3月14日
發明者胡宇翔 申請人:北京神州數碼思特奇信息技術股份有限公司