專利名稱:Web輪詢方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體涉及一種Web輪詢方法、裝置及系統(tǒng)。
背景技術(shù):
網(wǎng)絡(luò)(Web)輪詢是指在互聯(lián)網(wǎng)中,客戶端通過HTTP (HTTP-Hypertext transferprotocol,超文本傳輸協(xié)議)的方式,周期性的訪問服務(wù)端,以獲取新數(shù)據(jù)。因為HTTP本質(zhì)上是無狀態(tài)的,所以客戶端和服務(wù)端的交互必須遵循請求/響應(yīng)的模式來進行。當(dāng)前網(wǎng)站最常見的架構(gòu)是前端使用Nginx等Web服務(wù)器,后端使用MySQL等DB (Data Base,數(shù)據(jù)庫)服務(wù)器。當(dāng)用戶發(fā)起用戶文件請求時,Nginx服務(wù)器訪問MySQL服務(wù)器,獲取相應(yīng)的數(shù)據(jù)并呈現(xiàn)給用戶。圖1示出了根據(jù)現(xiàn)有技術(shù)的傳統(tǒng)Web輪詢的流程圖。參見圖1,客戶端(Client)為了獲取最新的數(shù)據(jù),會按照一定的時間間隔不斷去服務(wù)端查詢(Request)。在服務(wù)端,Nginx服務(wù)器將Request轉(zhuǎn)至MySQL服務(wù)器,MySQL服務(wù)器返回響應(yīng)消息(Response),然后Nginx服務(wù)器將Response返回客戶端。在Web輪詢中,客戶端為了能夠盡可能快的獲取到最新的數(shù)據(jù),通常會加快輪詢的頻率,也就是說,各個Request之間的間隔時間會縮小。而在服務(wù)端,Nginx服務(wù)器和MySQL服務(wù)器通常分屬不同的物理服務(wù)器,當(dāng)客戶端加快輪詢Nginx服務(wù)器的頻率時,Nginx服務(wù)器同樣也要加快輪詢MySQL服務(wù)器的頻率,而MySQL服務(wù)器的抗壓能力通常不如Nginx服務(wù)器,如此一來MySQL服務(wù)器就會表現(xiàn)出高負(fù)載,從而導(dǎo)致系統(tǒng)整體出現(xiàn)性能的短板。需要說明的是,此處僅僅是使用Nginx服務(wù)器和MySQL服務(wù)器作為例證,在實施過程中所使用的服務(wù)器并不限于Nginx服務(wù)器,也不限于MySQL服務(wù)器。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的Web輪詢方法、裝置和相應(yīng)的系統(tǒng)。依據(jù)本發(fā)明的一個方面,提供了一種網(wǎng)絡(luò)Web輪詢系統(tǒng),包括至少一個客戶端、網(wǎng)絡(luò)服務(wù)器和數(shù)據(jù)庫服務(wù)器,其中:所述客戶端,配置為發(fā)送Web輪詢請求;所述數(shù)據(jù)庫服務(wù)器,配置為實時將本地增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器;所述網(wǎng)絡(luò)服務(wù)器,配置為存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù);以及,接收所述客戶端發(fā)送的網(wǎng)絡(luò)Web輪詢請求時,從所述網(wǎng)絡(luò)服務(wù)器自身存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端??蛇x地,所述數(shù)據(jù)庫服務(wù)器還配置為:為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵;當(dāng)本地存儲的ID字段增加時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器??蛇x地,所述網(wǎng)絡(luò)服務(wù)器還配置為在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)??蛇x地,所述網(wǎng)絡(luò)服務(wù)器還配置為:比較所述客戶端已收到的ID字段和本地存儲的ID字段,判斷本地存儲的ID字段是否有增加;若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端;若判斷結(jié)果為否,則返回比較操作。可選地,所述網(wǎng)絡(luò)服務(wù)器還配置為:對所述客戶端與所述網(wǎng)絡(luò)服務(wù)器本身的連接時間進行計時;若計時時長超過設(shè)定時間,則斷開與所述客戶端的連接。依據(jù)本發(fā)明的另一個方面,提供了一種數(shù)據(jù)庫服務(wù)器,包括:獲取模塊,配置為實時獲取本地增加的數(shù)據(jù);推送模塊,配置為將實時獲取的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器??蛇x地,所述推送模塊還配置為:為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵;當(dāng)本地存儲的ID字段增加時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器。依據(jù)本發(fā)明的另一個方面,提供了一種網(wǎng)絡(luò)服務(wù)器,包括:存儲模塊,配置為存儲數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù);接收模塊,配置為接收客戶端發(fā)送的網(wǎng)絡(luò)Web輪詢請求;查詢模塊,配置為從所述存儲模塊存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端。可選地,所述存儲模塊還配置為在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)??蛇x地,所述查詢模塊還配置為:比較所述客戶端已收到的標(biāo)識ID字段和所述網(wǎng)絡(luò)服務(wù)器本地存儲的ID字段,判斷本地存儲的ID字段是否有增加;若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端;若判斷結(jié)果為否,則返回比較操作。依據(jù)本發(fā)明的另一個方面,提供了一種網(wǎng)絡(luò)Web輪詢方法,包括:接收客戶端發(fā)送的Web輪詢請求;根據(jù)所述Web輪詢請求在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端;其中,數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器,并將所述增加的數(shù)據(jù)存儲在網(wǎng)絡(luò)服務(wù)器中。可選地,所述數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器,包括:所述數(shù)據(jù)庫服務(wù)器為自身存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵;
當(dāng)所述數(shù)據(jù)庫服務(wù)器存儲的ID字段增加時,所述數(shù)據(jù)庫服務(wù)器將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器??蛇x地,還包括:所述網(wǎng)絡(luò)服務(wù)器在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)??蛇x地,所述在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端,包括:比較客戶端已收到的ID字段和所述網(wǎng)絡(luò)服務(wù)器存儲的ID字段,判斷所述網(wǎng)絡(luò)服務(wù)器存儲的ID字段是否有增加;若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端;若判斷結(jié)果為否,則返回比較操作。可選地,還包括:對所述網(wǎng)絡(luò)服務(wù)器與所述客戶端的連接時間進行計時;若計時時長超過設(shè)定時間,則斷開所述網(wǎng)絡(luò)服務(wù)器與所述客戶端的連接。在本發(fā)明實施例中,改變了現(xiàn)有的Web輪詢方式,前臺服務(wù)器不再到后臺服務(wù)器中輪詢獲取數(shù)據(jù),而是由作為后臺服務(wù)器的數(shù)據(jù)庫服務(wù)器實時將數(shù)據(jù)推送到作為前臺的網(wǎng)絡(luò)服務(wù)器中。當(dāng)客戶端需要查詢數(shù)據(jù)時,網(wǎng)絡(luò)服務(wù)器只需要在自身存儲的數(shù)據(jù)中進行輪詢,而不需要到后臺服務(wù)器進行輪詢,輪詢成本大大降低,即使加快輪詢頻率也不會給后臺服務(wù)器造成過重負(fù)載,解決了硬件短板的問題,降低了對后臺服務(wù)器的要求,節(jié)省硬件成本。另外,輪詢成本降低,就可以加快輪詢頻率,客戶端可能更快輪詢到相關(guān)數(shù)據(jù),從而達到準(zhǔn)實時的效果,提升客戶端的體驗。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據(jù)現(xiàn)有技術(shù)的傳統(tǒng)Web輪詢的流程圖;圖2示出了根據(jù)本發(fā)明一個實施例的Web輪詢系統(tǒng)的結(jié)構(gòu)示意圖;圖3示出了根據(jù)本發(fā)明一個實施例的數(shù)據(jù)庫服務(wù)器的結(jié)構(gòu)示意圖;圖4示出了根據(jù)本發(fā)明一個實施例的網(wǎng)絡(luò)服務(wù)器的結(jié)構(gòu)示意圖;圖5示出了根據(jù)本發(fā)明一個實施例的Web輪詢方法的處理流程圖;以及圖6示出了根據(jù)本發(fā)明一個實施例的Web輪詢方法的實例示意圖。
具體實施例方式在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。由現(xiàn)在技術(shù)中的描述可知,傳統(tǒng)Web輪詢的最大弊端在于會造成后端數(shù)據(jù)庫服務(wù)器負(fù)載激增。為解決該技術(shù)問題,本發(fā)明實施例提供了一種新的Web輪詢系統(tǒng)。圖2提供了根據(jù)本發(fā)明一個實施例的Web輪詢系統(tǒng)的結(jié)構(gòu)示意圖。參見圖2,Web輪詢系統(tǒng)中至少包括有客戶端210、網(wǎng)絡(luò)服務(wù)器220 (作為服務(wù)端的前端服務(wù)器)和數(shù)據(jù)庫服務(wù)器230 (作為服務(wù)端的后端服務(wù)器)。現(xiàn)對Web輪詢系統(tǒng)的組成部件以及各部件的功能進行具體說明。首先,介紹客戶端210。在系統(tǒng)中,客戶端210配置為發(fā)送Web輪詢請求。客戶端210的數(shù)量可以根據(jù)實際情況確定,在輪詢狀態(tài)下,客戶端210通常為至少一個,例如兩個、三個、四個甚至更多。圖2中客戶端210數(shù)量為三個,僅用于示意客戶端的數(shù)量為至少一個,對于客戶端實際數(shù)量并不產(chǎn)生限定。其次,介紹數(shù)據(jù)庫服務(wù)器220。參見圖2,數(shù)據(jù)庫服務(wù)器220與網(wǎng)絡(luò)服務(wù)器230耦合。數(shù)據(jù)庫服務(wù)器220作為后臺服務(wù)器,配置為實時將本地增加的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器230,保證網(wǎng)絡(luò)服務(wù)器230中的數(shù)據(jù)是最新的,實現(xiàn)數(shù)據(jù)的實時更新,以便于給用戶提供最新的數(shù)據(jù),提高用戶感受體驗。然后,介紹網(wǎng)絡(luò)服務(wù)器230。參見圖2,網(wǎng)絡(luò)服務(wù)器一端與客戶端210相耦合,另一端與數(shù)據(jù)庫服務(wù)器220相耦合。作為服務(wù)端的前臺服務(wù)器,網(wǎng)絡(luò)服務(wù)器230會存儲數(shù)據(jù)庫服務(wù)器220推送的數(shù)據(jù)。進一步,當(dāng)接收客戶端210發(fā)送的Web輪詢請求時,網(wǎng)絡(luò)服務(wù)器230從網(wǎng)絡(luò)服務(wù)器230自身存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至客戶端210。在本發(fā)明實施例中,改變了現(xiàn)有的Web輪詢方式,前臺服務(wù)器不再到后臺服務(wù)器中輪詢獲取數(shù)據(jù),而是由作為后臺服務(wù)器的數(shù)據(jù)庫服務(wù)器實時將數(shù)據(jù)推送到作為前臺的網(wǎng)絡(luò)服務(wù)器中。當(dāng)客戶端需要查詢數(shù)據(jù)時,網(wǎng)絡(luò)服務(wù)器只需要在自身存儲的數(shù)據(jù)中進行輪詢,而不需要到后臺服務(wù)器進行輪詢,輪詢成本大大降低,即使加快輪詢頻率也不會給后臺服務(wù)器造成過重負(fù)載,解決了硬件短板的問題,降低了對后臺服務(wù)器的要求,節(jié)省硬件成本。另外,輪詢成本降低,就可以加快輪詢頻率,客戶端可能更快輪詢到相關(guān)數(shù)據(jù),從而達到準(zhǔn)實時的效果,提升客戶端的體驗。數(shù)據(jù)庫服務(wù)器220在推送過程中,為保證數(shù)據(jù)推送的實時性,為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵。每個數(shù)據(jù)都有一個對應(yīng)的ID字段,當(dāng)本地存儲的ID字段增加時,則獲知本地存儲的數(shù)據(jù)增加。此時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器230。此處可以采用的ID字段有多種,例如,為每個數(shù)據(jù)設(shè)置一個關(guān)鍵字key,利用key作為ID字段。再例如,以自然數(shù)的順序依次為本地數(shù)據(jù)設(shè)置ID字段,若原存儲有4個數(shù)據(jù),其ID字段分別為0-3,若出現(xiàn)ID字段為4,則該數(shù)據(jù)必然是新增的數(shù)據(jù)。再例如,也可以以英文字母A-Z為本地數(shù)據(jù)設(shè)置ID字段等等。用于作為ID字段的信息能夠起到標(biāo)識作用即可。進一步,需要說明的是,數(shù)據(jù)庫服務(wù)器220發(fā)現(xiàn)自身存儲有新數(shù)據(jù)時,可以采用數(shù)據(jù)庫服務(wù)器220本身的觸發(fā)器或者在邏輯層代碼里利用觀察者模式主動通知網(wǎng)絡(luò)服務(wù)器230,以便網(wǎng)絡(luò)服務(wù)器230作為數(shù)據(jù)接收的準(zhǔn)備。網(wǎng)絡(luò)服務(wù)器230在存儲數(shù)據(jù)過程中,優(yōu)選在本地的共享內(nèi)存中存儲數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù),由于共享內(nèi)存具備多進程可以共享的特性,因此,網(wǎng)絡(luò)服務(wù)器230中的所有進程都可以查詢或調(diào)用在共享內(nèi)容中存儲的數(shù)據(jù),提高數(shù)據(jù)的輪詢效率。在本發(fā)明實施例中,網(wǎng)絡(luò)服務(wù)器230接收到客戶端210發(fā)送的Web論詢請求后,比較客戶端210之前已收到的ID字段和當(dāng)前網(wǎng)絡(luò)服務(wù)器230本地存儲的ID字段,判斷網(wǎng)絡(luò)服務(wù)器230本地存儲的ID字段是否有增加。若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至客戶端210,若判斷結(jié)果為否,則返回比較操作。在實施過程中,需要說明的是,服務(wù)端將增加的數(shù)據(jù)發(fā)送至客戶端210后,服務(wù)端會斷開與客戶端210的連接,以提高系統(tǒng)的安全性。在本例,網(wǎng)絡(luò)服務(wù)器230代表服務(wù)端與客戶端210連接,因此,在網(wǎng)絡(luò)服務(wù)器230將數(shù)據(jù)發(fā)送至客戶端210后,網(wǎng)絡(luò)服務(wù)器230斷開與客戶端210的連接。若網(wǎng)絡(luò)服務(wù)器230 —直沒有發(fā)送新的數(shù)據(jù)至客戶端210,則保持與客戶端210的連接。但是,考慮到服務(wù)穩(wěn)定性,若一直執(zhí)行長連接,則穩(wěn)定性容易被影響,因此,網(wǎng)絡(luò)服務(wù)器230可以對客戶端210與網(wǎng)絡(luò)服務(wù)器230本身的連接時間進行計時,若計時時長超過設(shè)定時間,則斷開與客戶端210的連接。在連接斷開之后,客戶端210會再度重新發(fā)起Web輪詢請求,周而復(fù)始,以保證數(shù)據(jù)的實時獲取。上文對整個Web輪詢系統(tǒng)進行介紹,現(xiàn)分別對其中的數(shù)據(jù)庫服務(wù)器以及網(wǎng)絡(luò)服務(wù)器的架構(gòu)進行具體說明?;谕话l(fā)明構(gòu)思,本發(fā)明實施例還提供了 一種數(shù)據(jù)庫服務(wù)器220。該數(shù)據(jù)庫服務(wù)器220可以主動推送增加的數(shù)據(jù)至網(wǎng)絡(luò)服務(wù)器230。圖3示出根據(jù)本發(fā)明一個實施例的數(shù)據(jù)庫服務(wù)器的結(jié)構(gòu)示意圖。參見圖3,該數(shù)據(jù)庫服務(wù)器220至少包括獲取模塊221和推送模塊222。其中,各模塊的結(jié)構(gòu)以及功能如下。獲取模塊221,配置為實時獲取本地增加的數(shù)據(jù);推送模塊222,與獲取模塊221相耦合,配置為將實時獲取的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器。其中,推送模塊222可以選擇的一種優(yōu)選的推送方式如下:為本地存儲的數(shù)據(jù)增加ID字段作為主鍵。隨后,因ID字段具備自增能力,因此,只需監(jiān)控ID字段,當(dāng)本地存儲的ID字段增加時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器230?;谕话l(fā)明構(gòu)思,本發(fā)明實施例還提供了一種網(wǎng)絡(luò)服務(wù)器230。圖4示出了根據(jù)本發(fā)明一個實施例的網(wǎng)絡(luò)服務(wù)器的結(jié)構(gòu)示意圖。參見圖4,該網(wǎng)絡(luò)服務(wù)器230至少包括存儲模塊231、接收模塊232以及查詢模塊233?,F(xiàn)對各模塊的功能以及其結(jié)構(gòu)連接進行具體分析。存儲模塊231,配置為存儲數(shù)據(jù)庫服務(wù)器220推送的數(shù)據(jù);接收模塊232,配置為接收客戶端210發(fā)送的Web輪詢請求;查詢模塊233,配置為從存儲模塊231存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至客戶端210。為便于各進程均能夠調(diào)用新增數(shù)據(jù),優(yōu)選的,存儲模塊231選擇在本地的共享內(nèi)存中存儲數(shù)據(jù)庫服務(wù)器220推送的數(shù)據(jù)。在一個優(yōu)選的實施例中,查詢模塊233可以通過比較客戶端210已收到的標(biāo)識ID字段和網(wǎng)絡(luò)服務(wù)器本地存儲的ID字段,判斷本地存儲的ID字段是否有增加。若判斷結(jié)果為是,則查詢模塊233將增加的ID字段對應(yīng)的數(shù)據(jù)返回至客戶端210。若判斷結(jié)果為否,則查詢模塊233返回比較操作,繼續(xù)對客戶端210已收到的標(biāo)識ID字段和網(wǎng)絡(luò)服務(wù)器本地存儲的ID字段進行比較?;谕话l(fā)明構(gòu)思,本發(fā)明實施例還提供了一種Web輪詢方法。圖5示出了根據(jù)本發(fā)明一個實施例的Web輪詢方法的處理流程圖。參見圖5,Web輪詢方法包括步驟S502至步驟S506。步驟S502、數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器,并將增加的數(shù)據(jù)存儲在網(wǎng)絡(luò)服務(wù)器中。步驟S502、接收客戶端發(fā)送的Web輪詢請求。步驟S504、根據(jù)Web輪詢請求在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至客戶端。在本發(fā)明實施例中,改變了現(xiàn)有的Web輪詢方式,前臺服務(wù)器不再到后臺服務(wù)器中輪詢獲取數(shù)據(jù),而是由作為后臺服務(wù)器的數(shù)據(jù)庫服務(wù)器實時將數(shù)據(jù)推送到作為前臺的網(wǎng)絡(luò)服務(wù)器中。當(dāng)客戶端需要查詢數(shù)據(jù)時,只需要在網(wǎng)絡(luò)服務(wù)器自身存儲的數(shù)據(jù)中進行輪詢,而不需要由網(wǎng)絡(luò)服務(wù)器到后臺服務(wù)器進行輪詢,輪詢成本大大降低,即使加快輪詢頻率也不會給后臺服務(wù)器造成過重負(fù)載,解決了硬件短板的問題,降低了對后臺服務(wù)器的要求,節(jié)省硬件成本。另外,輪詢成本降低,就可以加快輪詢頻率,客戶端可能更快輪詢到相關(guān)數(shù)據(jù),從而達到準(zhǔn)實時的效果,提升客戶端的體驗。其中,步驟S502在實施時提及,數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器。為保證數(shù)據(jù)推送的實時性,為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵。每個數(shù)據(jù)都有一個對應(yīng)的ID字段,當(dāng)本地存儲的ID字段增加時,則獲知本地存儲的數(shù)據(jù)增加。此時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器。此處可以采用的ID字段有多種,例如,為每個數(shù)據(jù)設(shè)置一個關(guān)鍵字key,利用key作為ID字段。再例如,以自然數(shù)的順序依次為本地數(shù)據(jù)設(shè)置ID字段,若原存儲有4個數(shù)據(jù),其ID字段分別為0-3,若出現(xiàn)ID字段為4,則該數(shù)據(jù)必然是新增的數(shù)據(jù)。再例如,也可以以英文字母A-Z為本地數(shù)據(jù)設(shè)置ID字段等等。用于作為ID字段的信息能夠起到標(biāo)識作用即可。進一步,需要說明的是,數(shù)據(jù)庫服務(wù)器發(fā)現(xiàn)自身存儲有新數(shù)據(jù)時,可以采用數(shù)據(jù)庫服務(wù)器本身的觸發(fā)器或者在邏輯層代碼里利用觀察者模式主動通知網(wǎng)絡(luò)服務(wù)器,以便網(wǎng)絡(luò)服務(wù)器作為數(shù)據(jù)接收的準(zhǔn)備。在網(wǎng)絡(luò)服務(wù)器中存儲數(shù)據(jù)時,優(yōu)選在網(wǎng)絡(luò)服務(wù)器的共享內(nèi)存中存儲數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù),由于共享內(nèi)存具備多進程可以共享的特性,因此,網(wǎng)絡(luò)服務(wù)器中的所有進程都可以查詢或調(diào)用在共享內(nèi)容中存儲的數(shù)據(jù),提高數(shù)據(jù)的輪詢效率。網(wǎng)絡(luò)服務(wù)器接收到客戶端發(fā)送的Web輪詢請求后,會在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,比較客戶端已收到的ID字段和網(wǎng)絡(luò)服務(wù)器存儲的ID字段,判斷網(wǎng)絡(luò)服務(wù)器存儲的ID字段是否有增加。若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至客戶端。若判斷結(jié)果為否,則返回比較操作。在實施過程中,需要說明的是,服務(wù)端將增加的數(shù)據(jù)發(fā)送至客戶端后,服務(wù)端會斷開與客戶端的連接,以提高系統(tǒng)的安全性。在本例,網(wǎng)絡(luò)服務(wù)器代表服務(wù)端與客戶端連接,因此,在網(wǎng)絡(luò)服務(wù)器將數(shù)據(jù)發(fā)送至客戶端后,網(wǎng)絡(luò)服務(wù)器斷開與客戶端的連接。
若網(wǎng)絡(luò)服務(wù)器一直沒有發(fā)送新的數(shù)據(jù)至客戶端,則保持與客戶端的連接。但是,考慮到服務(wù)穩(wěn)定性,若一直執(zhí)行長連接,則穩(wěn)定性容易被影響,因此,網(wǎng)絡(luò)服務(wù)器可以對客戶端與網(wǎng)絡(luò)服務(wù)器本身的連接時間進行計時,若計時時長超過設(shè)定時間,則斷開與客戶端的連接。為將本發(fā)明實施例所采用的Web輪詢方法所能達到的效果闡述地更清楚更明白,且與現(xiàn)有技術(shù)形成對比,現(xiàn)提供一個與圖1相同的具體應(yīng)用環(huán)境對其進行說明。圖6示出了根據(jù)本發(fā)明一個實施例的Web輪詢方法的實例示意圖。由于應(yīng)用環(huán)境與圖1相同,在此不做贅述。需要說明的是,此處僅僅是使用Nginx服務(wù)器和MySQL服務(wù)器作為例證,在本發(fā)明實施例的實施過程中所使用的服務(wù)器并不限于Nginx服務(wù)器,也不限于MySQL服務(wù)器,即,不限于特定的數(shù)據(jù)庫服務(wù)器和網(wǎng)絡(luò)服務(wù)器類型。具體的,本例中,假設(shè)數(shù)據(jù)保存到MySQL服務(wù)器中時,使用了一個自增ID字段作為主鍵??蛻舳税l(fā)出請求后,使用HTTP1.1中提供的Ke印Alive形式與服務(wù)端保持長連接,同時查詢出當(dāng)前用戶已經(jīng)收到的最新的ID字段,以備稍后使用。在本例中,Nginx服務(wù)器不再主動查詢MySQL服務(wù)器,而是由MySQL服務(wù)器把新數(shù)據(jù)的ID字段主動推送(push)到Nginx服務(wù)器上。具體的做法是:當(dāng)MySQL服務(wù)器上存儲了新數(shù)據(jù)的時候,可以利用MySQL服務(wù)器本身的觸發(fā)器或者在邏輯層代碼里利用觀察者模式主動通知前端Nginx服務(wù)器。而前端Nginx服務(wù)器則把相應(yīng)的新數(shù)據(jù)ID字段保存在Nginx共享內(nèi)存中,以便所有的Nginx進程都可以使用。并且,Nginx服務(wù)器輪詢不必再輪詢遠(yuǎn)程MySQL服務(wù)器,只需要輪詢本地共享內(nèi)存即可,由于輪詢本地共享內(nèi)存的開銷相對較低,所以可以加快輪詢的頻率,從而到到準(zhǔn)實時的效果,提升了客戶端的體驗。同時由于減低了對后端MySQL服務(wù)器的請求書,可以節(jié)省硬件成本??蛻舳溯喸僋ginx服務(wù)器時,Nginx服務(wù)器可以比對用戶已經(jīng)收到的最新的ID和保存在共享內(nèi)存中的系統(tǒng)的最新的ID,因為ID是自增的,所以很容易判斷出此客戶端是否有新消息(即是否有新數(shù)據(jù)需要發(fā)送到客戶端,對客戶端的數(shù)據(jù)進行更新)。一旦確定有新消息,就把新消息反饋給客戶端,并立刻終止連接。隨后,客戶端會重新發(fā)送Web輪詢請求。反之如果沒有新消息,服務(wù)端會保持連接,但出于服務(wù)穩(wěn)定性的考慮,這個長連接不會永久保持下去,通常會設(shè)定一個時長,一旦連接時間達到該設(shè)定時長,服務(wù)端就會主動斷開。然后由客戶端再重新發(fā)起Web輪詢請求,建立連接,如此周而復(fù)始。技術(shù)關(guān)鍵點在于以Nginx共享內(nèi)存為基礎(chǔ)現(xiàn)實本地輪詢,以替代傳統(tǒng)的遠(yuǎn)程輪詢,從而極大的提升客戶端體驗,降低硬件成本。由此可見,本發(fā)明實施例將在保證客戶端使用方法兼容傳統(tǒng)Web輪詢方案的基礎(chǔ)上,有效降低后端數(shù)據(jù)庫服務(wù)器的負(fù)載,使之不再成為系統(tǒng)整體性能的短板。采用本發(fā)明實施例提供的Web輪詢方法、裝置以系統(tǒng)能夠達到如下有益效果:在本發(fā)明實施例中,改變了現(xiàn)有的Web輪詢方式,前臺服務(wù)器不再到后臺服務(wù)器中輪詢獲取數(shù)據(jù),而是由作為后臺服務(wù)器的數(shù)據(jù)庫服務(wù)器實時將數(shù)據(jù)推送到作為前臺的網(wǎng)絡(luò)服務(wù)器中。當(dāng)客戶端需要查詢數(shù)據(jù)時,網(wǎng)絡(luò)服務(wù)器只需要在自身存儲的數(shù)據(jù)中進行輪詢,而不需要到后臺服務(wù)器進行輪詢,輪詢成本大大降低,即使加快輪詢頻率也不會給后臺服務(wù)器造成過重負(fù)載,解決了硬件短板的問題,降低了對后臺服務(wù)器的要求,節(jié)省硬件成本。另外,輪詢成本降低,就可以加快輪詢頻率,客戶端可能更快輪詢到相關(guān)數(shù)據(jù),從而達到準(zhǔn)實時的效果,提升客戶端的體驗。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
的權(quán)利要求書由此明確地并入該具體實施方式
,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的Web輪詢系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
權(quán)利要求
1.一種網(wǎng)絡(luò)Web輪詢系統(tǒng),包括至少一個客戶端、網(wǎng)絡(luò)服務(wù)器和數(shù)據(jù)庫服務(wù)器,其中: 所述客戶端,配置為發(fā)送Web輪詢請求; 所述數(shù)據(jù)庫服務(wù)器,配置為實時將本地增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器; 所述網(wǎng)絡(luò)服務(wù)器,配置為存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù);以及,接收所述客戶端發(fā)送的網(wǎng)絡(luò)Web輪詢請求時,從所述網(wǎng)絡(luò)服務(wù)器自身存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫服務(wù)器還配置為: 為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵; 當(dāng)本地存儲的ID字段增加時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述網(wǎng)絡(luò)服務(wù)器還配置為在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)。
4.根據(jù)權(quán)利要求1至3任一項所述的系統(tǒng),其特征在于,所述網(wǎng)絡(luò)服務(wù)器還配置為: 比較所述客戶端已收到的ID字段和本地存儲的ID字段,判斷本地存儲的ID字段是否有增加; 若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端; 若判斷結(jié)果為否,則返回比較操作。
5.根據(jù)權(quán)利要求1至 4任一項所述的系統(tǒng),其特征在于,所述網(wǎng)絡(luò)服務(wù)器還配置為: 對所述客戶端與所述網(wǎng)絡(luò)服務(wù)器本身的連接時間進行計時; 若計時時長超過設(shè)定時間,則斷開與所述客戶端的連接。
6.一種數(shù)據(jù)庫服務(wù)器,包括: 獲取模塊,配置為實時獲取本地增加的數(shù)據(jù); 推送模塊,配置為將實時獲取的數(shù)據(jù)推送到網(wǎng)絡(luò)服務(wù)器。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫服務(wù)器,其特征在于,所述推送模塊還配置為: 為本地存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵; 當(dāng)本地存儲的ID字段增加時,將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器。
8.一種網(wǎng)絡(luò)服務(wù)器,包括: 存儲模塊,配置為存儲數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù); 接收模塊,配置為接收客戶端發(fā)送的網(wǎng)絡(luò)Web輪詢請求; 查詢模塊,配置為從所述存儲模塊存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端。
9.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)服務(wù)器,其特征在于,所述存儲模塊還配置為在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)。
10.根據(jù)權(quán)利要求8或9所述的網(wǎng)絡(luò)服務(wù)器,其特征在于,所述查詢模塊還配置為: 比較所述客戶端已收到的標(biāo)識ID字段和所述網(wǎng)絡(luò)服務(wù)器本地存儲的ID字段,判斷本地存儲的ID字段是否有增加; 若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端; 若判斷結(jié)果為否,則返回比較操作。
11.一種網(wǎng)絡(luò)Web輪詢方法,包括: 接收客戶端發(fā)送的Web輪詢請求; 根據(jù)所述Web輪詢請求在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端; 其中,數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器,并將所述增加的數(shù)據(jù)存儲在網(wǎng)絡(luò)服務(wù)器中。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)庫服務(wù)器實時將自身增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器,包括: 所述數(shù)據(jù)庫服務(wù)器為自身存儲的數(shù)據(jù)增加標(biāo)識ID字段作為主鍵; 當(dāng)所述數(shù)據(jù)庫服務(wù)器存儲的ID字段增加時,所述數(shù)據(jù)庫服務(wù)器將增加的ID字段以及對應(yīng)的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器。
13.根據(jù)權(quán)利要求11或12所述的方法,其特征在于,還包括:所述網(wǎng)絡(luò)服務(wù)器在本地的共享內(nèi)存中存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù)。
14.根據(jù)權(quán)利要求11至13任一項所述的方法,其特征在于,所述在網(wǎng)絡(luò)服務(wù)器存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端,包括: 比較客戶端已收到的ID字段和所述網(wǎng)絡(luò)服務(wù)器存儲的ID字段,判斷所述網(wǎng)絡(luò)服務(wù)器存儲的ID字段是否有增加; 若判斷結(jié)果為是,則將增加的ID字段對應(yīng)的數(shù)據(jù)返回至所述客戶端; 若判斷結(jié)果為否,則返回比較操作`。
15.根據(jù)權(quán)利要求11至14任一項的方法,還包括: 對網(wǎng)絡(luò)服務(wù)器與客戶端的連接時間進行計時; 若計時時長超過設(shè)定時間,則斷開網(wǎng)絡(luò)服務(wù)器與客戶端的連接。
全文摘要
本發(fā)明公開了一種Web輪詢系統(tǒng),包括至少一個客戶端、網(wǎng)絡(luò)服務(wù)器和數(shù)據(jù)庫服務(wù)器,其中所述客戶端,配置為發(fā)送Web輪詢請求;所述數(shù)據(jù)庫服務(wù)器,配置為實時將本地增加的數(shù)據(jù)推送到所述網(wǎng)絡(luò)服務(wù)器;所述網(wǎng)絡(luò)服務(wù)器,配置為存儲所述數(shù)據(jù)庫服務(wù)器推送的數(shù)據(jù);以及,接收所述客戶端發(fā)送的Web輪詢請求時,從所述網(wǎng)絡(luò)服務(wù)器自身存儲的數(shù)據(jù)中進行查詢,并將查詢到的數(shù)據(jù)返回至所述客戶端。采用本發(fā)明能夠降低系統(tǒng)負(fù)載,減少硬件成本。本發(fā)明還公開了相應(yīng)的裝置以及方法。
文檔編號H04L29/08GK103167017SQ20131000788
公開日2013年6月19日 申請日期2013年1月9日 優(yōu)先權(quán)日2013年1月9日
發(fā)明者王博, 葉劍鋒 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司