本發(fā)明涉及通信領域,尤其涉及一種數(shù)據(jù)緩存方法及后臺應用系統(tǒng)。
背景技術:
隨著網絡技術的發(fā)展,由操作員或業(yè)務員操作,為客戶提供業(yè)務查詢、業(yè)務辦理、服務請求受理等功能的支撐系統(tǒng)軟件廣泛被應用,如電信行業(yè)的電信業(yè)務支撐系統(tǒng)(businesssupportsystem,bss系統(tǒng))。該類軟件目前大多是瀏覽器/服務器(browser/server,b/s)架構,系統(tǒng)通常劃分為前臺和后臺,前臺主要為交互邏輯,基于瀏覽器運行的操作員界面,實現(xiàn)信息輸入、校驗、展現(xiàn)等交互體驗相關功能;后臺主要為業(yè)務校驗、處理邏輯實現(xiàn)、數(shù)據(jù)持久化及查詢等功能,運行在應用服務器上。
系統(tǒng)進行交互時,每次進行相應業(yè)務處理、校驗等操作時,都需要從數(shù)據(jù)庫中讀取相應數(shù)據(jù),并產生數(shù)據(jù)庫磁陣的輸入/輸出(input/output,i/o)操作。當相應的業(yè)務處理和校驗等邏輯比較復雜,尤其需要訪問大量業(yè)務數(shù)據(jù)時,將因大量磁陣i/o操作而導致服務調用的響應時延急劇惡化,直接影響用戶在前臺的交互體驗與系統(tǒng)吞吐量。
為降低數(shù)據(jù)庫磁陣i/o操作,可采用緩存機制規(guī)避大量的數(shù)據(jù)庫磁陣i/o操作,比如本地緩存優(yōu)化方案和分布式緩存優(yōu)化方案。本地緩存可在一定程度上優(yōu)化處理性能,但由于本地緩存的數(shù)據(jù)不能共享,并不適用于分布式應用環(huán)境,并且會占用大量的內存資源,故目前廣泛應用分布式緩存優(yōu)化方案,以在分布式應用系統(tǒng)架構下優(yōu)化數(shù)據(jù)庫磁陣i/o操作。然而,在應用分布式緩存優(yōu)化方案進行復雜業(yè)務處理邏輯時,往往會有前臺交互過程緩慢,處理性能下降的現(xiàn)象發(fā)生,服務執(zhí)行性能較低。
技術實現(xiàn)要素:
本發(fā)明實施例提供一種數(shù)據(jù)緩存方法及后臺應用系統(tǒng),以優(yōu)化系統(tǒng)的處理性能。
第一方面,提供一種數(shù)據(jù)緩存方法,該方法中,后臺應用系統(tǒng)在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),并預緩存獲取的所述客戶數(shù)據(jù),可以實現(xiàn)在客戶會話起始階段完成緩存的預加載,在需要調用數(shù)據(jù)時,例如在所述客戶會話執(zhí)行到需要使用所述客戶數(shù)據(jù)的時候,所述后臺應用系統(tǒng)獲取預緩存的所述客戶數(shù)據(jù),緩存操作已執(zhí)行完成,使得后臺應用系統(tǒng)可直接從分布式緩存中獲取數(shù)據(jù),從而可避免過大的系統(tǒng)開銷,優(yōu)化系統(tǒng)的處理性能。
本發(fā)明實施例中,后臺應用系統(tǒng)可接收前臺應用系統(tǒng)發(fā)送的服務請求,通過該服務請求觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話。
可選的,所述服務請求可以是調用客戶鑒權服務的請求。
一種可能的設計中,所述后臺應用系統(tǒng)在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),包括:所述后臺應用系統(tǒng)在開始執(zhí)行客戶會話時,生成觸發(fā)緩存的事件;所述后臺應用系統(tǒng)基于所述事件,調用后臺應用系統(tǒng)中的緩存服務從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)。
另一種可能的設計中,本發(fā)明實施例中可通過數(shù)據(jù)訪問對象實現(xiàn)對預緩存數(shù)據(jù)的更新,以保證預緩存的數(shù)據(jù)與數(shù)據(jù)庫中保存的數(shù)據(jù)的一致性,具體的更新過程可包括:在所述后臺應用系統(tǒng)中的數(shù)據(jù)訪問對象接收到對所述客戶數(shù)據(jù)的更新操作時,通過所述數(shù)據(jù)訪問對象,同步更新預緩存的所述客戶數(shù)據(jù);其中,所述數(shù)據(jù)訪問對象為操作所述客戶數(shù)據(jù)的接口。
可選的,所述數(shù)據(jù)訪問對象預配置有緩存標記,在同步更新預緩存的所述客戶數(shù)據(jù)前,確定所述數(shù)據(jù)訪問對象預配置有緩存標記。
再一種可能的設計中,為了節(jié)省緩存資源,保證緩存資源的持續(xù)利用,所 述后臺應用系統(tǒng)基于所述服務請求開始執(zhí)行客戶會話之后,所述后臺應用系統(tǒng)生成緩存清理策略,所述緩存清理策略中包括緩存所述客戶會話對應的客戶數(shù)據(jù)所持續(xù)時長。所述后臺應用系統(tǒng)預緩存獲取的所述客戶數(shù)據(jù)之后,所述方法還包括:若緩存所述客戶數(shù)據(jù)的時長達到所述緩存清理策略中包括的時長,則所述后臺應用系統(tǒng)清除預緩存的所述客戶數(shù)據(jù)。
可選的,為進一步保證緩存資源的利用率,所述后臺應用系統(tǒng)在結束執(zhí)行客戶會話時,清除預緩存的所述客戶數(shù)據(jù)。
第二方面,提供一種后臺應用系統(tǒng),該后臺應用系統(tǒng)具有實現(xiàn)上述方法設計中后臺應用系統(tǒng)的功能。所述功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應的軟件實現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應的模塊,例如包括獲取單元、處理單元和緩存單元,其中:
所述獲取單元,用于獲取前臺應用系統(tǒng)發(fā)送的用于觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話的服務請求;所述處理單元,用于基于所述服務請求開始執(zhí)行客戶會話,并控制所述獲取單元在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù);所述緩存單元,用于預緩存所述獲取單元獲取的所述客戶數(shù)據(jù)。
通過本發(fā)明實施例,后臺應用系統(tǒng)在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),并預緩存獲取的所述客戶數(shù)據(jù),可以實現(xiàn)在客戶會話起始階段完成緩存的預加載,在需要調用數(shù)據(jù)時,例如在所述處理單元確定客戶會話執(zhí)行到需要使用所述客戶數(shù)據(jù)的時候,所述獲取單元獲取預緩存的所述客戶數(shù)據(jù),此時緩存操作已執(zhí)行完成,使得后臺應用系統(tǒng)可直接從分布式緩存中獲取數(shù)據(jù),從而可避免過大的系統(tǒng)開銷,優(yōu)化系統(tǒng)的處理性能。
可選的,所述服務請求為調用客戶認證鑒權服務的請求。
一種可能的設計中,所述處理單元,采用如下方式控制所述獲取單元在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶 數(shù)據(jù):
所述處理單元在開始執(zhí)行客戶會話時,生成觸發(fā)緩存的事件,并控制所述獲取單元基于所述事件,調用后臺應用系統(tǒng)中的緩存服務從數(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ù)訪問對象,同步更新預緩存的所述客戶數(shù)據(jù)之前,確定所述數(shù)據(jù)訪問對象預配置有緩存標記。
再一種可能的設計中,為節(jié)省緩存資源,保證緩存資源的持續(xù)利用,所述處理單元,還用于:基于所述服務請求開始執(zhí)行客戶會話之后,生成緩存清理策略,所述緩存清理策略中包括緩存所述客戶會話對應的客戶數(shù)據(jù)所持續(xù)時長,并判斷所述客戶數(shù)據(jù)的時長是否達到所述緩存清理策略中包括的時長。
所述緩存單元,還用于:在所述處理單元確定緩存所述客戶數(shù)據(jù)的時長達到所述緩存清理策略中包括的時長時,清除預緩存的所述客戶數(shù)據(jù)。
可選的,所述緩存單元,還用于在預緩存獲取的所述客戶數(shù)據(jù)之后,若所述處理單元結束執(zhí)行客戶會話,則清除預緩存的所述客戶數(shù)據(jù)。
第三方面,提供一種后臺應用系統(tǒng),該后臺應用系統(tǒng)中可包括一個或者多個應用服務器,用于實現(xiàn)第一方面涉及的數(shù)據(jù)緩存方法。該應用服務器具有通用的計算機結構,包括處理器和i/o接口,其中,處理器通過i/o接口獲取用于觸發(fā)應用服務器開始執(zhí)行客戶會話的服務請求。處理器基于所述服務請求開始執(zhí)行客戶會話,并在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),預緩存所述客戶會話生命周期內的客戶數(shù)據(jù)。
第四方面,提供一種計算機存儲介質,用于儲存上述后臺應用系統(tǒng)所用的計算機軟件指令,其包含用于執(zhí)行上述第一方面涉及的視頻質量評價方法所設計的程序。
附圖說明
圖1為本發(fā)明實施例應用的系統(tǒng)架構圖;
圖2為本發(fā)明實施例應用的系統(tǒng)架構中前臺、后臺和數(shù)據(jù)庫之間的交互時序圖;
圖3為分布式緩存機制進行優(yōu)化的系統(tǒng)架構示意圖;
圖4為采用分布式緩存機制的系統(tǒng)交互時序圖;
圖5為本發(fā)明實施例提供的后臺應用系統(tǒng)的結構示意圖;
圖6為本發(fā)明實施例提供的數(shù)據(jù)緩存方法實施流程圖;
圖7為本發(fā)明實施例提供的數(shù)據(jù)緩存過程的系統(tǒng)交互時序圖;
圖8為本發(fā)明實施例應用統(tǒng)一的數(shù)據(jù)訪問對象進行客戶數(shù)據(jù)緩存與更新的系統(tǒng)操作時序圖;
圖9為本發(fā)明實施例進行緩存數(shù)據(jù)清除的系統(tǒng)交互時序圖;
圖10為本發(fā)明實施例進行數(shù)據(jù)緩存以及服務調用的過程示意圖;
圖11為本發(fā)明實施例提供的后臺應用系統(tǒng)的結構示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行詳細描述。
本發(fā)明實施例提供的數(shù)據(jù)緩存方法及后臺應用系統(tǒng),可應用于圖1所示的系統(tǒng)架構,包括前臺應用系統(tǒng)、后臺應用系統(tǒng)和數(shù)據(jù)庫。前臺應用系統(tǒng)中可以包括一個或多個應用服務器,用于完成信息展現(xiàn)、收集及交互處理的功能,通常要調用后臺應用系統(tǒng)的服務支撐。后臺應用系統(tǒng)中可以包括一個或多個應用服務器,用于提供具體的數(shù)據(jù)操作及邏輯實現(xiàn),通常以服務方式提供給請求者 調用。圖1中前臺應用系統(tǒng)基于瀏覽器運行的操作界面,實現(xiàn)信息輸入、校驗、展現(xiàn)等,并向后臺應用系統(tǒng)發(fā)送服務請求,調用后臺應用系統(tǒng)的服務執(zhí)行請求處理及數(shù)據(jù)讀寫。后臺應用系統(tǒng)響應前臺應用系統(tǒng)的服務請求,并實現(xiàn)業(yè)務校驗、處理邏輯和數(shù)據(jù)訪問等。前臺應用系統(tǒng)與后臺應用系統(tǒng)進行交互進行相應業(yè)務處理、校驗等操作時,都需要從數(shù)據(jù)庫中讀取相應數(shù)據(jù)。前臺應用系統(tǒng)、后臺應用系統(tǒng)和數(shù)據(jù)庫之間的交互時序圖可參閱圖2所示,用戶通過例如瀏覽器等應用與前臺應用系統(tǒng)進行交互1,前臺應用系統(tǒng)調用后臺應用系統(tǒng)的服務調用1,后臺應用系統(tǒng)從數(shù)據(jù)庫中讀取數(shù)據(jù),進行處理邏輯。用戶與前臺應用系統(tǒng)進行交互2,前臺應用系統(tǒng)調用后臺應用系統(tǒng)的服務調用2,后臺應用系統(tǒng)從數(shù)據(jù)庫中讀取數(shù)據(jù),進行校驗邏輯,并進行數(shù)據(jù)持久化。
由圖2可知,后臺應用系統(tǒng)無論進行處理邏輯還是校驗邏輯都需要從數(shù)據(jù)庫中讀取數(shù)據(jù),圖2中是以后臺應用系統(tǒng)讀取兩次數(shù)據(jù)為例進行說明,若業(yè)務處理和校驗等邏輯比較復雜,尤其需要訪問大量業(yè)務數(shù)據(jù)時,則會進行很多次的數(shù)據(jù)讀取,造成大量的數(shù)據(jù)庫磁陣i/o操作。
為降低數(shù)據(jù)庫磁陣i/o操作,目前廣泛使用分布式緩存機制優(yōu)化數(shù)據(jù)交互過程,采用的分布式緩存機制進行優(yōu)化的系統(tǒng)架構示意圖可參考圖3所示,后臺應用系統(tǒng)與分布式緩存進行交互,從分布式緩存中讀取數(shù)據(jù),而無需從數(shù)據(jù)庫中讀取數(shù)據(jù),進而避免大量的數(shù)據(jù)庫磁陣i/o操作,系統(tǒng)交互時序圖如圖4所示。圖4中分布式緩存的加載方式分為兩種,一種方式是在系統(tǒng)啟動時預先將所有客戶相關數(shù)據(jù)緩存在分布式緩存中,另一種方式是按需加載模式,在需要緩存數(shù)據(jù)時,從數(shù)據(jù)庫中讀取數(shù)據(jù),并緩存在分布式緩存中。
一般的,后臺應用系統(tǒng)處理的數(shù)據(jù)都是與某個特定客戶相關的,通常針對一個客戶的業(yè)務處理是在較短時間內完成的,考慮系統(tǒng)緩存資源的限制、及數(shù)據(jù)一致性問題,一般不會主動加載所有客戶相關的數(shù)據(jù),通常采用按需加載方式,但從數(shù)據(jù)庫中讀取數(shù)據(jù)是性能消耗最大的處理邏輯,因此,對于復雜業(yè)務處理邏輯,若采用按需加載方式,則會導致系統(tǒng)開銷過大,進而使得前臺應用 系統(tǒng)交互過程緩慢,處理性能下降。
本發(fā)明實施例提供一種能夠優(yōu)化系統(tǒng)開銷和處理性能的緩存數(shù)據(jù)處理方法,基于分布式緩存優(yōu)化方案,針對每一業(yè)務處理,在會話起始階段完成緩存的預加載,在需要調用數(shù)據(jù)時,緩存操作已執(zhí)行完成,使得后臺應用系統(tǒng)可直接從分布式緩存中獲取數(shù)據(jù),從而可避免過大的系統(tǒng)開銷,優(yōu)化系統(tǒng)的處理性能。
本發(fā)明實施例提供的數(shù)據(jù)緩存方法可應用于后臺應用系統(tǒng)中,后臺應用系統(tǒng)中包括一個或多個應用服務器,用于實現(xiàn)本發(fā)明實施例涉及的數(shù)據(jù)緩存方法。本發(fā)明實施例中后臺應用系統(tǒng)中包括的一個或多個應用服務器具有通用的計算機結構,圖5所示為本發(fā)明實施例提供的一種應用服務器100的結構示意圖,如圖5所示應用服務器100包括處理器101和i/o接口102,其中處理器101和i/o接口102可通過總線103連接。
所述處理器101可以是通用處理器,包括中央處理器(centralprocessingunit,簡稱cpu)、網絡處理器(networkprocessor,簡稱np)等;還可以是數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或者其他可編程邏輯器件等。
所述處理器101為cpu時,所述應用服務器100還可以包括:存儲器,用于存儲程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機操作指令。存儲器可能包含隨機存取存儲器(randomaccessmemory,簡稱ram),也可能還包括非易失性存儲器(non-volatilememory),例如至少一個磁盤存儲器。所述處理器101執(zhí)行所述存儲器中存儲的程序代碼,實現(xiàn)本發(fā)明涉及的數(shù)據(jù)緩存管理功能。
總線103可包括一通路,在計算機各個部件之間傳送信息。
本發(fā)明實施例中,所述處理器101通過i/o接口102與其它設備組件進行交互,例如可通過i/o接口102獲取用于觸發(fā)應用服務器100開始執(zhí)行客戶會話的服務請求。處理器101基于所述服務請求開始執(zhí)行客戶會話,并在開始執(zhí) 行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),預緩存所述客戶會話生命周期內的客戶數(shù)據(jù)。
本發(fā)明實施例中,應用服務器100可用于實現(xiàn)本發(fā)明實施例涉及的數(shù)據(jù)緩存方法的所有功能,其具體實現(xiàn)過程可以參照以下方法實施例的相關描述。
以下將對本發(fā)明實施例涉及的數(shù)據(jù)緩存方法進行詳細說明。
圖6所示為本發(fā)明實施例提供的數(shù)據(jù)緩存方法實施流程圖,圖6所示的方法執(zhí)行主體可以是后臺應用系統(tǒng)。如圖6所示,該方法包括:
s101:后臺應用系統(tǒng)獲取前臺應用系統(tǒng)發(fā)送的用于觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話的服務請求。
本發(fā)明中所述客戶會話是指客戶通過正式鑒權后直至通過系統(tǒng)完成一系列的服務請求操作的有效期間。
s102:后臺應用系統(tǒng)基于所述服務請求開始執(zhí)行客戶會話,并在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)。
本發(fā)明實施例中所述客戶會話的生命周期可以理解為是應用預期占用資源的時間。
s103:后臺應用系統(tǒng)預緩存所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)。
后臺應用系統(tǒng)被觸發(fā)執(zhí)行客戶會話通常是一個新客戶后續(xù)業(yè)務辦理的“起點”,本發(fā)明實施例中在確定后臺應用系統(tǒng)被觸發(fā)執(zhí)行客戶會話時,預緩存所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),可以保證后續(xù)該客戶相關業(yè)務的服務可以基于緩存執(zhí)行處理邏輯,例如,在在所述客戶會話執(zhí)行到需要使用所述客戶數(shù)據(jù)的時候,所述后臺應用系統(tǒng)獲取預緩存的所述客戶數(shù)據(jù),無需從數(shù)據(jù)庫中訪問,也無需進行按需換存,進而可優(yōu)化系統(tǒng)的處理性能。
客戶認證鑒權通常是一個新客戶后續(xù)業(yè)務辦理的“起點”,可觸發(fā)后臺應用系統(tǒng)執(zhí)行客戶會話,以下實施例以服務請求為調用客戶認證鑒權服務的請求為例進行說明,但并不引以為限。
本發(fā)明實施例以下將結合實際應用對本發(fā)明實施例涉及的數(shù)據(jù)緩存過程進行舉例說明。本發(fā)明實施例中后臺應用系統(tǒng)在處理邏輯上可劃分為后臺服務、事件平臺和緩存管理部件,其中,后臺服務可以理解為是能夠進行信息交互調用的接口,主要用于與其它部件進行交互提供各種服務,例如提供數(shù)據(jù)緩存服務,再例如與前臺應用系統(tǒng)進行交互為前臺應用系統(tǒng)提供服務以及與數(shù)據(jù)庫進行交互獲取客戶數(shù)據(jù)。事件平臺可以理解為是統(tǒng)一處理事件的生成、傳遞、銷毀的應用,用于生成事件。緩存管理部件主要用于實現(xiàn)緩存的管理功能。其中,后臺服務、事件平臺和緩存管理部件的相應功能可以通過處理器實現(xiàn)。
圖7所示為本發(fā)明實施例提供的數(shù)據(jù)緩存過程的系統(tǒng)交互時序圖,如圖7所示,包括:
s201:客戶申請辦理業(yè)務,操作員在前臺應用系統(tǒng)通過瀏覽器等應用執(zhí)行客戶鑒權操作,觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話。
s202:前臺應用系統(tǒng)收集客戶的鑒權數(shù)據(jù)信息,該鑒權數(shù)據(jù)信息可包括諸如客戶證件類型、證件號碼和服務密碼等,并調用后臺服務的客戶認證鑒權服務執(zhí)行客戶鑒權。
s203:后臺服務與事件平臺進行交互,觸發(fā)事件平臺生成觸發(fā)緩存的事件,例如生成客戶鑒權事件。
s204:緩存管理部件獲取客戶鑒權事件,確定后臺應用系統(tǒng)已被觸發(fā)開始執(zhí)行客戶會話。
s205:緩存管理部件與后臺服務進行交互,調用后臺應用系統(tǒng)中的緩存服務。
可選的,本發(fā)明實施例中緩存管理部件可向事件平臺發(fā)送訂閱請求,事件可以理解為是一種有業(yè)務語義的“消息”。所述訂閱請求用于請求事件平臺在生成客戶鑒權事件的情況下,向所述緩存管理部件發(fā)送表征客戶鑒權事件已生成的通知消息。
緩存管理部件通過所述通知消息,可獲取到客戶鑒權事件,進而確定后臺 應用系統(tǒng)已被觸發(fā)開始執(zhí)行客戶會話。
s206:本發(fā)明實施例中后臺服務提供客戶數(shù)據(jù)的緩存服務。后臺服務與數(shù)據(jù)庫進行交互,從數(shù)據(jù)庫中獲取進行認證鑒權的客戶在整個會話生命周期內的客戶數(shù)據(jù)。
s207:后臺服務與分布式緩存進行交互,在分布式緩存中預緩存所述客戶數(shù)據(jù)。
本發(fā)明實施例中提供的數(shù)據(jù)預緩存方法相對按需加載模式,將緩存數(shù)據(jù)的時機提前了,然而從緩存到需要使用數(shù)據(jù)這段時間內,數(shù)據(jù)庫中存儲的客戶數(shù)據(jù)可能會發(fā)生變化,進而造成分布式緩存中預緩存的客戶數(shù)據(jù)與數(shù)據(jù)庫中的客戶數(shù)據(jù)不一致,故本發(fā)明實施例中提供一種基于數(shù)據(jù)訪問對象對預緩存的客戶數(shù)據(jù)進行更新的機制,以保證分布式緩存中預緩存的客戶數(shù)據(jù)與數(shù)據(jù)庫中的客戶數(shù)據(jù)的一致性。
本發(fā)明實施例中所述數(shù)據(jù)訪問對象(dataaccessobjects,dao)是第一個面向對象的接口,指執(zhí)行數(shù)據(jù)訪問操作的對象,一般根據(jù)具體操作的數(shù)據(jù)類型不同,可能會有不通過的數(shù)據(jù)訪問對象,例如,可以有客戶數(shù)據(jù)訪問對象、賬號數(shù)據(jù)訪問對象、用戶數(shù)據(jù)訪問對象和實例數(shù)據(jù)訪問對象。本發(fā)明實施例中基于數(shù)據(jù)訪問對象對客戶數(shù)據(jù)進行操作,即指針對數(shù)據(jù)、更新和查詢等操作都通過數(shù)據(jù)訪問對象進行操作。換言之,客戶會話的整個生命周期內每次對數(shù)據(jù)庫的訪問都會通過數(shù)據(jù)訪問對象。本發(fā)明實施例中可通過在開發(fā)數(shù)據(jù)訪問對象時,為數(shù)據(jù)訪問對象預先設置緩存標記,所述緩存標記用于標識需要緩存客戶數(shù)據(jù),即當數(shù)據(jù)訪問對象設置有緩存標記的情況下,表征所有通過該數(shù)據(jù)訪問對象進行操作的客戶數(shù)據(jù)都需要緩存,在客戶會話的任何一個環(huán)節(jié)中對數(shù)據(jù)庫進行訪問時,同步更新預緩存的所述客戶會話生命周期內的客戶數(shù)據(jù),以保證預緩存的客戶數(shù)據(jù)的一致性。
本發(fā)明實施例中可為客戶會話需要使用的客戶數(shù)據(jù)設置對應的數(shù)據(jù)訪問對象,即設置訪問所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)的接口,并為 該數(shù)據(jù)訪問對象設置緩存標記。
可選的,本發(fā)明實施例中可根據(jù)客戶會話生命周期內需要使用的客戶數(shù)據(jù)的數(shù)據(jù)類型,對同一類型數(shù)據(jù)設置統(tǒng)一的一個數(shù)據(jù)訪問對象,例如對于客戶數(shù)據(jù)設置一個客戶數(shù)據(jù)訪問對象、賬號數(shù)據(jù)設置一個賬號數(shù)據(jù)訪問對象。
本發(fā)明實施例中,在所述后臺應用系統(tǒng)中的數(shù)據(jù)訪問對象接收到對所述客戶數(shù)據(jù)的更新操作時,通過所述數(shù)據(jù)訪問對象,同步更新預緩存的所述客戶數(shù)據(jù);其中,所述數(shù)據(jù)訪問對象為操作所述客戶數(shù)據(jù)的接口。
本發(fā)明實施例以下以數(shù)據(jù)訪問對象接收到的對客戶數(shù)據(jù)的更新操作為后臺應用系統(tǒng)接收到的對客戶數(shù)據(jù)的操作請求為例進行說明,該操作請求可以是由獨立于所述后臺應用系統(tǒng)的其它系統(tǒng)發(fā)送,也可以是在執(zhí)行客戶會話期間由所述后臺應用系統(tǒng)發(fā)送。后臺應用系統(tǒng)接收對所述客戶會話需要使用的客戶數(shù)據(jù)的操作請求,通過與所述客戶數(shù)據(jù)對應的數(shù)據(jù)訪問對象,對所述客戶會話需要使用的客戶數(shù)據(jù)基于所述操作請求執(zhí)行操作,并依據(jù)對所述客戶會話需要使用的客戶數(shù)據(jù)執(zhí)行的操作,更新預緩存的客戶數(shù)據(jù)。其中,依據(jù)對所述客戶會話需要使用的客戶數(shù)據(jù)執(zhí)行的操作,更新預緩存的客戶數(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ù)。
本發(fā)明實施例中應用數(shù)據(jù)訪問對象對預緩存的客戶數(shù)據(jù)進行更新的系統(tǒng)操作時序圖,如圖8所示,包括:
s301:用戶向后臺服務發(fā)送服務請求,請求后臺應用系統(tǒng)對所述客戶會話需要使用的客戶數(shù)據(jù)執(zhí)行相關的數(shù)據(jù)操作,如新建客戶資料、更新客戶資料、查詢客戶資料等。
s302:如果用戶發(fā)送的服務請求是新建客戶資料數(shù)據(jù)操作的操作請求,則后臺服務通過與所述客戶數(shù)據(jù)對應的數(shù)據(jù)訪問對象執(zhí)行客戶資料數(shù)據(jù)新建操作。
s303:數(shù)據(jù)訪問對象調用數(shù)據(jù)庫生成客戶資料數(shù)據(jù),并保存到數(shù)據(jù)庫中。
s304:數(shù)據(jù)訪問對象讀取數(shù)據(jù)訪問對象的緩存標記,若數(shù)據(jù)訪問對象中存在用于標識進行數(shù)據(jù)緩存的緩存標記,則所述數(shù)據(jù)訪問對象將所述客戶資料數(shù)據(jù)緩存到分布式緩存中。
s305:如果用戶發(fā)送的服務請求是更新客戶資料數(shù)據(jù)操作的操作請求,則后臺服務通過與所述客戶數(shù)據(jù)對應的數(shù)據(jù)訪問對象執(zhí)行客戶資料數(shù)據(jù)更新操作。
s306:數(shù)據(jù)訪問對象調用數(shù)據(jù)庫更新客戶資料數(shù)據(jù),并將更新后的數(shù)據(jù)保存到數(shù)據(jù)庫中。
s307:數(shù)據(jù)訪問對象確定數(shù)據(jù)庫中的客戶數(shù)據(jù)更新成功,且確定數(shù)據(jù)訪問對象中存在用于標識進行數(shù)據(jù)緩存的緩存標記,所述數(shù)據(jù)訪問對象更新分布式緩存中緩存的所述客戶資料數(shù)據(jù)。
本發(fā)明實施例中進行數(shù)據(jù)查詢等操作,也是可通過為客戶會話需要使用的客戶數(shù)據(jù)設置的數(shù)據(jù)訪問對象進行,可參閱圖8中查詢的步驟,包括:
s308:如果用戶發(fā)送的服務請求是查詢客戶資料的操作請求,則后臺服務通過與所述客戶數(shù)據(jù)對應的數(shù)據(jù)訪問對象執(zhí)行客戶資料數(shù)據(jù)查詢操作。
s309:若確定數(shù)據(jù)訪問對象中設置有緩存標記,則首先從分布式緩存中查詢客戶資料數(shù)據(jù),如果分布式緩存中已緩存客戶資料數(shù)據(jù),則返回相應數(shù)據(jù),如果分布式緩存中未緩存客戶資料數(shù)據(jù),則從數(shù)據(jù)庫中讀取客戶資料數(shù)據(jù),并在分布式緩存中緩存相應的客戶資料數(shù)據(jù)。
本發(fā)明實施例上述通過為客戶會話需要使用的客戶數(shù)據(jù)設置數(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ù)據(jù)都進行緩存將占用大量的緩存資源,本發(fā)明實施例中為保證緩存資源持續(xù)可用,優(yōu)化緩存資源利用率,可在緩存資源失效,例如客戶會話已完成,不需要再讀取緩存數(shù)據(jù)的情況下,清除分布式緩存中緩存的客戶數(shù)據(jù)。
本發(fā)明實施中可在確定后臺應用系統(tǒng)被觸發(fā)開始執(zhí)行客戶會話之后,即進行預緩存客戶數(shù)據(jù)時,生成緩存清理策略,在該緩存清理策略中包括緩存所述客戶會話對應的客戶數(shù)據(jù)所持續(xù)時長,在緩存所述客戶數(shù)據(jù)的時長達到所述緩存清理策略中包括的時長情況下,清除緩存的所述客戶數(shù)據(jù)。
緩存清理策略中包括的時長,可根據(jù)不同的緩存對象設置不同的時長,該時長可以是大于客戶會話生命周期的時長。
本發(fā)明實施例中為進一步優(yōu)化緩存資源的利用率,可無需按照緩存清理策略中包括的時長進行緩存數(shù)據(jù)的清除,可在業(yè)務結束時,清除緩存的數(shù)據(jù)。
圖9所示為本發(fā)明實施例提供的進行緩存數(shù)據(jù)清除的系統(tǒng)交互時序圖,如圖9所示,包括:
s401:緩存管理部件獲取進行緩存數(shù)據(jù)清除的觸發(fā)請求。
本發(fā)明實施例中緩存管理部件可依據(jù)實際情況選擇是否進行緩存數(shù)據(jù)的清除,例如在緩存資源比較緊張的情況下,緩存管理自己可訂閱在緩存資源少于特定值的情況下,清除緩存數(shù)據(jù)的訂閱請求,在緩存資源滿足要求時,由定時器發(fā)出觸發(fā)請求,觸發(fā)緩存管理部件進行緩存數(shù)據(jù)的清除。
本發(fā)明實施例中s401為可選步驟。
s402:緩存管理部件從數(shù)據(jù)庫中獲取到預先生成的緩存清理策略。
s403:緩存管理部件判斷當前分布式緩存中緩存的客戶數(shù)據(jù)是否滿足清除 條件,例如計算緩存所述客戶數(shù)據(jù)的時長是否達到所述緩存清理策略中包括的時長,若是,則清除分布式緩存中緩存的該達到時長的客戶數(shù)據(jù)。
需要說明的,本發(fā)明實施例中緩存清理策略中還可包括諸如緩存對象、緩存數(shù)據(jù)實例關鍵值等信息,進行是否滿足清除條件判斷時,可綜合緩存清理策略中具體包括的內容進行判斷。
可選的,本發(fā)明實施例中在業(yè)務結束的情況下,可由后臺應用系統(tǒng)觸發(fā)事件平臺生成業(yè)務結束事件,事件平臺發(fā)送業(yè)務結束指示,緩存管理部件獲取到事件平臺發(fā)送的業(yè)務結束指示后,清除分布式緩存中相應的客戶數(shù)據(jù),具體實現(xiàn)如圖9所示,包括:
s404:后臺應用系統(tǒng)執(zhí)行的客戶會話對應的相應業(yè)務執(zhí)行結束時,后臺服務觸發(fā)事件平臺生成業(yè)務結束事件。
s405:緩存管理部件接收業(yè)務結束指示。
s406:緩存管理部件根據(jù)所述業(yè)務結束指示所指示的業(yè)務,清除分布式緩存中相應的客戶數(shù)據(jù)。
本發(fā)明實施例中可設置定時任務進行緩存數(shù)據(jù)的清除,緩存管理部件定期啟動緩存清除,可保證緩存資源的持續(xù)利用。進一步的,可根據(jù)業(yè)務結束指示進行緩存數(shù)據(jù)的清除,例如復雜的訂單業(yè)務執(zhí)行結束時,清除緩存的客戶數(shù)據(jù),能夠進一步保證緩存資源的利用率。
本發(fā)明實施例中,針對復雜業(yè)務場景,可根據(jù)緩存資源實際情況選擇是否進行緩存資源的優(yōu)化,若啟用緩存資源優(yōu)化策略,則后臺應用系統(tǒng)在需要進行緩存的客戶數(shù)據(jù)清除時,根據(jù)相應客戶標識執(zhí)行相應的數(shù)據(jù)清理策略,保證緩存在優(yōu)先滿足了復雜業(yè)務場景的前提下,及時清理。
應用本發(fā)明實施例提供的數(shù)據(jù)緩存處理方法進行數(shù)據(jù)緩存以及服務調用的過程示意圖如圖10所示。圖10中是以觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話的觸發(fā)事件為客戶鑒權事件為例進行說明的。如圖10所示,在前臺應用系統(tǒng)發(fā)起認證鑒權操作時,實現(xiàn)將客戶數(shù)據(jù)預緩存到分布式緩存中,主要過程包括 前臺應用系統(tǒng)發(fā)起認證鑒權,并調用后臺應用系統(tǒng)的鑒權服務,鑒權服務查詢數(shù)據(jù)庫執(zhí)行鑒權操作并觸發(fā)生成客戶鑒權事件,后臺應用系統(tǒng)調用相應程序實現(xiàn)客戶數(shù)據(jù)的預緩存,還可生成數(shù)據(jù)緩存清理策略,該緩存清理策略例如是客戶標識為11000000009000001的客戶,1小時后執(zhí)行資料數(shù)據(jù)的緩存清理。
當完成客戶數(shù)據(jù)的預緩存后,后續(xù)相應業(yè)務處理過程中,由于在分布式緩存中已完成相應數(shù)據(jù)的預緩存,故可從分布式緩存中讀取相應的數(shù)據(jù),如圖10中,處理業(yè)務a、業(yè)務b和業(yè)務c時,在前臺應用系統(tǒng)執(zhí)行相應的操作,調用后臺應用系統(tǒng)的服務,后臺應用系統(tǒng)的服務從分布式緩存中讀取相應業(yè)務的客戶數(shù)據(jù),完成相應的業(yè)務處理。
基于上述實施例提供的數(shù)據(jù)緩存方法,本發(fā)明實施例還提供一種后臺應用系統(tǒng)200。圖11所示為本發(fā)明實施例提供的后臺應用系統(tǒng)200的結構示意圖,如圖11所示,后臺應用系統(tǒng)200包括獲取單元201、處理單元202和緩存單元203,其中:
所述獲取單元201,用于獲取前臺應用系統(tǒng)發(fā)送的用于觸發(fā)后臺應用系統(tǒng)開始執(zhí)行客戶會話的服務請求。
所述處理單元202,用于基于所述服務請求開始執(zhí)行客戶會話,并控制所述獲取單元201在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)。
所述緩存單元203,用于預緩存所述獲取單元201獲取的所述客戶數(shù)據(jù)。
通過本發(fā)明實施例,后臺應用系統(tǒng)200在開始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù),并預緩存獲取的所述客戶數(shù)據(jù),可以實現(xiàn)在客戶會話起始階段完成緩存的預加載,在需要調用數(shù)據(jù)時,緩存操作已執(zhí)行完成,使得后臺應用系統(tǒng)可直接從分布式緩存中獲取數(shù)據(jù),從而可避免過大的系統(tǒng)開銷,優(yōu)化系統(tǒng)的處理性能。
可選的,所述服務請求為調用客戶認證鑒權服務的請求。
可選的,所述處理單元202,可采用如下方式控制所述獲取單元201在開 始執(zhí)行客戶會話時從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù):所述處理單元202在開始執(zhí)行客戶會話時,生成觸發(fā)緩存的事件,并控制所述獲取單元201基于所述事件,調用后臺應用系統(tǒng)中的緩存服務從數(shù)據(jù)庫中獲取所述客戶會話生命周期內需要使用的客戶數(shù)據(jù)。
可選的,所述獲取單元,還用于:在所述處理單元確定客戶會話執(zhí)行到需要使用所述客戶數(shù)據(jù)的時候,獲取預緩存的所述客戶數(shù)據(jù),使得后臺應用系統(tǒng)可直接從分布式緩存中獲取數(shù)據(jù),從而可避免過大的系統(tǒng)開銷,優(yōu)化系統(tǒng)的處理性能。
為保證預緩存的數(shù)據(jù)與數(shù)據(jù)庫中保存的數(shù)據(jù)的一致性,所述緩存單元203,還用于:
在所述處理單元202確定后臺應用系統(tǒng)中的數(shù)據(jù)訪問對象接收到對所述客戶數(shù)據(jù)的更新操作時,通過所述數(shù)據(jù)訪問對象,同步更新預緩存的所述客戶數(shù)據(jù);其中,所述數(shù)據(jù)訪問對象為操作所述客戶數(shù)據(jù)的接口。
可選的,所述數(shù)據(jù)訪問對象預配置有緩存標記。所述處理單元202,還用于:在所述緩存單元203通過所述數(shù)據(jù)訪問對象,同步更新預緩存的所述客戶數(shù)據(jù)之前,確定所述數(shù)據(jù)訪問對象預配置有緩存標記。
為節(jié)省緩存資源,保證緩存資源的持續(xù)利用,所述處理單元202,還用于:基于所述服務請求開始執(zhí)行客戶會話之后,生成緩存清理策略,所述緩存清理策略中包括緩存所述客戶會話對應的客戶數(shù)據(jù)所持續(xù)時長,并判斷所述客戶數(shù)據(jù)的時長是否達到所述緩存清理策略中包括的時長。
所述緩存單元203,還用于:在所述處理單元202確定緩存所述客戶數(shù)據(jù)的時長達到所述緩存清理策略中包括的時長時,清除預緩存的所述客戶數(shù)據(jù)。
可選的,所述緩存單元203,還用于在預緩存獲取的所述客戶數(shù)據(jù)之后,若所述處理單元202結束執(zhí)行客戶會話,則清除預緩存的所述客戶數(shù)據(jù)。
本發(fā)明實施例提供的后臺應用系統(tǒng)200可用于實現(xiàn)上述實施例涉及的數(shù)據(jù)緩存方法,具備上述實施例實現(xiàn)數(shù)據(jù)緩存過程中的所有功能,其具體實現(xiàn)過程 可參閱上述實施例及相關附圖的描述,在此不再贅述。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。