客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法
【專利摘要】一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,先配置一數(shù)據(jù)庫、中間件、一均衡器及一緩存器,所述緩存器包括一數(shù)據(jù)緩存和一交換緩存;所述方法包括加載緩存數(shù)據(jù)步驟、上報(bào)數(shù)據(jù)更新步驟、更新緩存數(shù)據(jù)步驟及數(shù)據(jù)校驗(yàn)步驟等。本發(fā)明的有益效果在于:降低系統(tǒng)頻繁訪問遠(yuǎn)程數(shù)據(jù)的需要,保障本地內(nèi)存數(shù)據(jù)與遠(yuǎn)程數(shù)據(jù)的一致性,使互聯(lián)網(wǎng)數(shù)據(jù)檢索,如同本機(jī)數(shù)據(jù)庫檢索一樣快速,而不會(huì)受網(wǎng)絡(luò)速度的不穩(wěn)定性制約;無須額外部署多余的節(jié)點(diǎn)代理服務(wù)器,避免了不斷增加服務(wù)器代理節(jié)點(diǎn)的成本投入。
【專利說明】客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明具體涉及一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的成熟和應(yīng)用普及,越來越多的用戶和企業(yè)開始使用計(jì)算機(jī)管理一些事務(wù)。PC機(jī)的資源沒有大型、中型甚至小型主機(jī)豐富,但將多臺(tái)PC機(jī)聯(lián)成網(wǎng),必然會(huì)增加資源含量,各個(gè)用戶都在網(wǎng)絡(luò)上來共享所有資源。根據(jù)客戶/服務(wù)器(Client/Server簡記為C / S)體系結(jié)構(gòu)的概念,至少用兩臺(tái)計(jì)算機(jī)來分別充當(dāng)客戶機(jī)和服務(wù)器角色。
[0003]進(jìn)入了分布式樣計(jì)算的時(shí)代后,C / S架構(gòu)的系統(tǒng)面對B/S運(yùn)用程序,面臨著重大的挑戰(zhàn),雖然在瘦客戶端、易維護(hù)等方面B/S更具優(yōu)勢,但是很多分布式運(yùn)用,需要C / S的架構(gòu)軟件才能滿足。其次,由于C/S在網(wǎng)絡(luò)數(shù)據(jù)庫交互中,只需要數(shù)據(jù)交互,不需要傳輸網(wǎng)頁界面、布局、交互腳本等內(nèi)容,在速度上往往比B/S系統(tǒng)更快速。但是,隨著B/S系統(tǒng)緩存技術(shù)運(yùn)用以后,這個(gè)明顯的優(yōu)勢被不斷的拉進(jìn)。為了提升C / S的分布式運(yùn)用效率,B/S與C / S混合(即WebService+Client)日益成為了一種主流架構(gòu)之一。
[0004]在現(xiàn)有的C/S集中分布式管理系統(tǒng)中(如0A、CRM等),用戶在客戶端的每次查詢操作,都需要客戶端通過中間件(Webservice、RMI等)從數(shù)據(jù)庫中讀取數(shù)據(jù),回傳到客戶端??蛻翎槍σ粋€(gè)或多個(gè)事務(wù)流程的查詢,將進(jìn)行多次的同樣操作,如果在用戶數(shù)高并發(fā)的情形下,這樣的查詢將會(huì)更加頻繁,將會(huì)造成客戶端數(shù)據(jù)顯示的延遲加載。
[0005]其次,越來越多的分布式運(yùn)用,并不僅僅是在局域網(wǎng)內(nèi)運(yùn)用,很多的運(yùn)用都通過了廣域網(wǎng)(Internet)進(jìn)行集中式的管理。例如一些網(wǎng)絡(luò)運(yùn)用軟件、集團(tuán)跨區(qū)域管理系統(tǒng)等。Internet速率的不穩(wěn)定性和其他網(wǎng)絡(luò)因素很容易造成數(shù)據(jù)傳輸?shù)难舆t、丟包、粘包、斷網(wǎng)等異常,造成客戶端數(shù)據(jù)顯示延遲加載或響應(yīng)異?!,F(xiàn)有技術(shù)中也出現(xiàn)了采用增加服務(wù)器代理節(jié)點(diǎn)的方式來解決上面的問題,但是所造成的結(jié)果是信息化建設(shè)成本的不斷增高,維護(hù)難度加大。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題在于提供一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,使互聯(lián)網(wǎng)數(shù)據(jù)檢索,如同本機(jī)數(shù)據(jù)庫檢索一樣快速。
[0007]本發(fā)明是通過以下技術(shù)方案解決上述技術(shù)問題的:
[0008]本發(fā)明的有益效果在于:一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,先配置一數(shù)據(jù)庫、中間件、一均衡器以及一緩存器,所述緩存器包括一數(shù)據(jù)緩存和一交換緩存;所述方法包括加載緩存數(shù)據(jù)步驟,具體為:
[0009]步驟1:所述均衡器向中間件發(fā)出緩存數(shù)據(jù)請求,中間件從數(shù)據(jù)庫獲取數(shù)據(jù)并發(fā)送給均衡器;
[0010]步驟2:均衡器將所述數(shù)據(jù)寫入客戶端的虛擬緩存,同時(shí)識(shí)別其中的常用數(shù)據(jù),并將常用數(shù)據(jù)寫入所述數(shù)據(jù)緩存;
[0011]步驟3:客戶端的運(yùn)用程序向均衡器發(fā)出查詢數(shù)據(jù)請求,均衡器判斷所查詢數(shù)據(jù)是否為常用數(shù)據(jù),若是,則從所述數(shù)據(jù)緩存中讀取并輸出讀取結(jié)果給所述運(yùn)用程序;若否,則從所述虛擬緩存中查詢并輸出查詢結(jié)果給所述運(yùn)用程序。
[0012]進(jìn)一步地,還包括上報(bào)數(shù)據(jù)更新步驟,具體為:
[0013]步驟4:所述運(yùn)用程序向均衡器發(fā)送數(shù)據(jù)更新請求,均衡器再將所述請求發(fā)送到中間件;
[0014]步驟5:中間件對數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)進(jìn)行更新操作,并把操作結(jié)果返回均衡器,同時(shí)把數(shù)據(jù)庫中已更新數(shù)據(jù)的更新日志廣播給其他客戶端;
[0015]步驟6:均衡器判斷被更新的數(shù)據(jù)是否為常用數(shù)據(jù),若是,則分別修改所述數(shù)據(jù)緩存和虛擬緩存中的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序;若否,則直接更新所述虛擬緩存的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序。
[0016]進(jìn)一步地,還包括更新緩存數(shù)據(jù)步驟,具體為:
[0017]步驟7:當(dāng)中間件廣播更新日志時(shí),均衡器接收更新日志,并逐條寫入所述交換緩存;
[0018]步驟8:均衡器逐一判斷所述更新日志是否為常用數(shù)據(jù),若是,則均衡器將交換緩存中的更新日志異步寫入所述數(shù)據(jù)緩存,對數(shù)據(jù)緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新;若否,則均衡器將交換緩存中的更新日志異步寫入所述虛擬緩存,對所述虛擬緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新。
[0019]進(jìn)一步地,還包括緩存數(shù)據(jù)校驗(yàn)步驟,具體為:
[0020]步驟9:當(dāng)客戶端的運(yùn)用程序再次啟動(dòng)時(shí),均衡器向中間件發(fā)出驗(yàn)證數(shù)據(jù)請求,該請求中包含了上次更新日志的版本信息;
[0021]步驟10:中間件根據(jù)所述版本信息查詢數(shù)據(jù)庫,判斷是否有新版本日志,若是,則將所有新版本日志發(fā)送給均衡器,并執(zhí)行步驟11 ;若否,則結(jié)束流程;
[0022]步驟11:均衡器將新版本日志逐條放入交換緩存,然后異步將交換緩存中的新版本日志寫入所述虛擬緩存,并將其中的常用數(shù)據(jù)從所述虛擬緩存讀入數(shù)據(jù)緩存。
[0023]降低系統(tǒng)頻繁訪問遠(yuǎn)程數(shù)據(jù)的需要,保障本地內(nèi)存數(shù)據(jù)與遠(yuǎn)程數(shù)據(jù)的一致性,使互聯(lián)網(wǎng)數(shù)據(jù)檢索,如同本機(jī)數(shù)據(jù)庫檢索一樣快速,而不會(huì)受網(wǎng)絡(luò)速度的不穩(wěn)定性制約;無須額外部署多余的節(jié)點(diǎn)代理服務(wù)器,避免了不斷增加服務(wù)器代理節(jié)點(diǎn)的成本投入。
【專利附圖】
【附圖說明】
[0024]下面參照附圖結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步的描述。
[0025]圖1為本發(fā)明中客戶端加載緩存數(shù)據(jù)的流程圖。
[0026]圖2為本發(fā)明中運(yùn)用程序查詢緩存數(shù)據(jù)的流程圖。
[0027]圖3為本發(fā)明中運(yùn)用程序上報(bào)數(shù)據(jù)更新的流程圖。
[0028]圖4為本發(fā)明中客戶端更新緩存數(shù)據(jù)的流程圖。
[0029]圖5為本發(fā)明中客戶端緩存數(shù)據(jù)效驗(yàn)的流程圖。
【具體實(shí)施方式】[0030]一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,先配置一數(shù)據(jù)庫、中間件、一均衡器、一緩存器,所述緩存器包括一數(shù)據(jù)緩存和一交換緩存;所述均衡器和緩存器均位于客戶端上,所述數(shù)據(jù)庫位于服務(wù)器上。
[0031 ] 所述數(shù)據(jù)緩存用于緩存常用數(shù)據(jù)。
[0032]所述交換緩存用于存儲(chǔ)接收到的更新消息廣播,并將廣播逐一寫入本地虛擬緩存。數(shù)據(jù)內(nèi)容采用JSON格式存儲(chǔ),以Ley-Value方式緩存。
[0033]均衡器:
[0034]負(fù)責(zé)調(diào)配數(shù)據(jù)緩存、交換緩存、數(shù)據(jù)請求和輸出等事件處理。均衡器能夠在初始化的時(shí)候,通過向中間件獲取數(shù)據(jù),將常用數(shù)據(jù)存儲(chǔ)所述數(shù)據(jù)緩存,同時(shí)加密寫入客戶端的虛擬緩存中。
[0035]均衡器負(fù)責(zé)對運(yùn)用程序發(fā)出的數(shù)據(jù)查詢請求,在數(shù)據(jù)緩存或本地虛擬緩存中檢索,并輸出給運(yùn)用程序。
[0036]負(fù)責(zé)實(shí)時(shí)接收中間件廣播出來的數(shù)據(jù)更新消息,并將消息加入交換緩存中。
[0037]在每次運(yùn)用程序啟動(dòng)前,與中間件進(jìn)行緩存數(shù)據(jù)的比對,對有更新變化的數(shù)據(jù),請求中間件獲取并將數(shù)據(jù)加入交換緩存;異步將交換緩存中的數(shù)據(jù)寫入所述虛擬緩存。
[0038]所述客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法包括加載緩存數(shù)據(jù)步驟、上報(bào)數(shù)據(jù)更新步驟、更新緩存數(shù)據(jù)步驟及數(shù)據(jù)校驗(yàn)步驟等。
[0039]請參閱圖1和圖2,所述加載緩存數(shù)據(jù)步驟具體為:
[0040]步驟1:所述均衡器向中間件發(fā)出緩存數(shù)據(jù)請求,中間件從數(shù)據(jù)庫獲取數(shù)據(jù)并發(fā)送給均衡器;
[0041]步驟2:均衡器將所述數(shù)據(jù)寫入客戶端的虛擬緩存,同時(shí)識(shí)別其中的常用數(shù)據(jù),并將常用數(shù)據(jù)寫入所述數(shù)據(jù)緩存;所述常用數(shù)據(jù)是指在一預(yù)設(shè)周期內(nèi)達(dá)到預(yù)設(shè)查詢次數(shù)以上的數(shù)據(jù)。
[0042]步驟3:客戶端的運(yùn)用程序向均衡器發(fā)出查詢數(shù)據(jù)請求,均衡器判斷所查詢數(shù)據(jù)是否為常用數(shù)據(jù),若是,則從所述數(shù)據(jù)緩存中讀取并輸出讀取結(jié)果給所述運(yùn)用程序;若否,則從所述虛擬緩存中查詢并輸出查詢結(jié)果給所述運(yùn)用程序。即此時(shí)客戶端查詢數(shù)據(jù)只需從本機(jī)的所述數(shù)據(jù)緩存或虛擬緩存中查詢即可,不需再通過網(wǎng)絡(luò)查詢遠(yuǎn)端的數(shù)據(jù)庫。
[0043]運(yùn)用程序僅在首次運(yùn)行時(shí)進(jìn)行數(shù)據(jù)的加載,完成加載后,數(shù)據(jù)的查詢將不再依賴遠(yuǎn)程網(wǎng)絡(luò)數(shù)據(jù),完全實(shí)現(xiàn)本地?cái)?shù)據(jù)高速查詢。
[0044]請參閱圖3,所述上報(bào)數(shù)據(jù)更新步驟具體為:
[0045]步驟4:所述運(yùn)用程序向均衡器發(fā)送數(shù)據(jù)更新請求,均衡器再將所述請求發(fā)送到中間件;
[0046]步驟5:中間件對數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)進(jìn)行更新操作,并把操作結(jié)果返回均衡器,同時(shí)把數(shù)據(jù)庫中已更新數(shù)據(jù)的更新日志廣播給其他客戶端;
[0047]步驟6:均衡器判斷被更新的數(shù)據(jù)是否為常用數(shù)據(jù),若是,則分別修改所述數(shù)據(jù)緩存和虛擬緩存中的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序;若否,則直接更新所述虛擬緩存的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序。
[0048]請參閱圖4,均衡器保持與服務(wù)器上的數(shù)據(jù)庫之間的通訊調(diào)度,能夠及時(shí)發(fā)現(xiàn)遠(yuǎn)程服務(wù)器中最新的文件更新廣播,保障本地內(nèi)存數(shù)據(jù)與遠(yuǎn)程數(shù)據(jù)的一致性。所述更新緩存數(shù)據(jù)步驟具體為:
[0049]步驟7:當(dāng)中間件廣播更新日志時(shí),均衡器接收更新日志,并逐條寫入所述交換緩存;
[0050]步驟8:均衡器逐一判斷所述更新日志是否為常用數(shù)據(jù),若是,則均衡器將交換緩存中的更新日志異步寫入所述數(shù)據(jù)緩存,對數(shù)據(jù)緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新;若否,則均衡器清除交換緩存中的舊日志,同時(shí)將交換緩存中的更新日志異步寫入所述虛擬緩存,對所述虛擬緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新。
[0051]所述緩存數(shù)據(jù)校驗(yàn)步驟具體為:
[0052]步驟9:當(dāng)客戶端的運(yùn)用程序再次啟動(dòng)時(shí),均衡器向中間件發(fā)出驗(yàn)證數(shù)據(jù)請求,該請求中包含了上次更新日志的版本信息;
[0053]步驟10:中間件根據(jù)所述版本信息查詢數(shù)據(jù)庫,判斷是否有新版本日志,若是,則將所有新版本日志發(fā)送給均衡器,并執(zhí)行步驟11 ;若否,則結(jié)束流程;
[0054]步驟11:均衡器將新版本日志逐條放入交換緩存,然后異步將交換緩存中的新版本日志寫入所述虛擬緩存,并將其中的常用數(shù)據(jù)從所述虛擬緩存讀入數(shù)據(jù)緩存。
【權(quán)利要求】
1.一種客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,其特征在于:先配置一數(shù)據(jù)庫、中間件、一均衡器以及一緩存器,所述緩存器包括一數(shù)據(jù)緩存和一交換緩存;所述方法包括加載緩存數(shù)據(jù)步驟,具體為: 步驟1:所述均衡器向中間件發(fā)出緩存數(shù)據(jù)請求,中間件從數(shù)據(jù)庫獲取數(shù)據(jù)并發(fā)送給均衡器; 步驟2:均衡器將所述數(shù)據(jù)寫入客戶端的虛擬緩存,同時(shí)識(shí)別其中的常用數(shù)據(jù),并將常用數(shù)據(jù)寫入所述數(shù)據(jù)緩存; 步驟3:客戶端的運(yùn)用程序向均衡器發(fā)出查詢數(shù)據(jù)請求,均衡器判斷所查詢數(shù)據(jù)是否為常用數(shù)據(jù),若是,則從所述數(shù)據(jù)緩存中讀取并輸出讀取結(jié)果給所述運(yùn)用程序;若否,則從所述虛擬緩存中查詢并輸出查詢結(jié)果給所述運(yùn)用程序。
2.如權(quán)利要求1所述的客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,其特征在于:還包括上報(bào)數(shù)據(jù)更新步驟,具體為: 步驟4:所述運(yùn)用程序向均衡器發(fā)送數(shù)據(jù)更新請求,均衡器再將所述請求發(fā)送到中間件; 步驟5:中間件對數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)進(jìn)行更新操作,并把操作結(jié)果返回均衡器,同時(shí)把數(shù)據(jù)庫中已更新數(shù)據(jù)的更新日志廣播給其他客戶端; 步驟6:均衡器判斷被更新的數(shù)據(jù)是否為常用數(shù)據(jù),若是,則分別修改所述數(shù)據(jù)緩存和虛擬緩存中的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序;若否,則直接更新所述虛擬緩存的相應(yīng)數(shù)據(jù),并把操作結(jié)果返回給運(yùn)用程序。
3.如權(quán)利要求2所述的客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,其特征在于:還包括更新緩存數(shù)據(jù)步驟,具體為: 步驟7:當(dāng)中間件廣播更新日志時(shí),均衡器接收更新日志,并逐條寫入所述交換緩存; 步驟8:均衡器逐一判斷所述更新日志是否為常用數(shù)據(jù),若是,則均衡器將交換緩存中的更新日志異步寫入所述數(shù)據(jù)緩存,對數(shù)據(jù)緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新;若否,則均衡器將交換緩存中的更新日志異步寫入所述虛擬緩存,對所述虛擬緩存中的相應(yīng)數(shù)據(jù)進(jìn)行更新。
4.如權(quán)利要求1所述的客戶端基于緩存數(shù)據(jù)實(shí)現(xiàn)查詢網(wǎng)絡(luò)數(shù)據(jù)的方法,其特征在于:還包括緩存數(shù)據(jù)校驗(yàn)步驟,具體為: 步驟9:當(dāng)客戶端的運(yùn)用程序再次啟動(dòng)時(shí),均衡器向中間件發(fā)出驗(yàn)證數(shù)據(jù)請求,該請求中包含了上次更新日志的版本信息; 步驟10:中間件根據(jù)所述版本信息查詢數(shù)據(jù)庫,判斷是否有新版本日志,若是,則將所有新版本日志發(fā)送給均衡器,并執(zhí)行步驟11 ;若否,則結(jié)束流程; 步驟11:均衡器將新版本日志逐條放入交換緩存,然后異步將交換緩存中的新版本日志寫入所述虛擬緩存,并將其中的常用數(shù)據(jù)從所述虛擬緩存讀入數(shù)據(jù)緩存。
【文檔編號】G06F12/08GK103793485SQ201410023958
【公開日】2014年5月14日 申請日期:2014年1月20日 優(yōu)先權(quán)日:2014年1月20日
【發(fā)明者】丁萬年, 洪文潔, 陳日良, 姜士鎰 申請人:銳達(dá)互動(dòng)科技股份有限公司