本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)獲取方法及裝置。
背景技術(shù):
代理(Proxy),也稱網(wǎng)絡(luò)代理,是一種特殊的網(wǎng)絡(luò)服務(wù),允許一個(gè)網(wǎng)絡(luò)終端(一般為客戶端)通過(guò)代理的服務(wù)與另一個(gè)網(wǎng)絡(luò)終端(一般為服務(wù)器)進(jìn)行非直接的連接,從而為客戶端提供服務(wù)。隨著云計(jì)算服務(wù)領(lǐng)域的發(fā)展壯大,云代理服務(wù)器(Proxy Server)已經(jīng)慢慢成為云計(jì)算服務(wù)的重要組成部分,能夠作為面向各類互聯(lián)網(wǎng)用戶提供綜合業(yè)務(wù)能力的服務(wù)平臺(tái)。在實(shí)際應(yīng)用中,云代理服務(wù)器與普通代理手段相類似,集成于能夠提供代理服務(wù)的電腦系統(tǒng)或其它類型的網(wǎng)絡(luò)終端,進(jìn)而為云網(wǎng)絡(luò)中的客戶端提供服務(wù)。
實(shí)施時(shí),一個(gè)完整的云代理請(qǐng)求過(guò)程為:
首先,客戶端與云代理服務(wù)器創(chuàng)建連接;
其次,云代理服務(wù)器接收來(lái)自客戶端的連接請(qǐng)求消息,進(jìn)而根據(jù)云代理服務(wù)器所使用的代理協(xié)議,請(qǐng)求對(duì)目標(biāo)服務(wù)器建立連接;
最后,在云代理服務(wù)器與目標(biāo)服務(wù)器間成功建立連接之后,獲得目標(biāo)服務(wù)器提供的相應(yīng)資源。
云代理服務(wù)器獲取目標(biāo)服務(wù)器提供的相應(yīng)資源后,已將返回的資源下載至緩存中。隨著云計(jì)算服務(wù)領(lǐng)域的發(fā)展壯大,云代理服務(wù)器的緩存中已存儲(chǔ)了的大量的數(shù)據(jù)資源。目前,客戶端發(fā)起請(qǐng)求消息后,云代理服務(wù)器并沒(méi)有對(duì)其緩存中的資源進(jìn)行利用,而是直接與目標(biāo)服務(wù)器創(chuàng)建連接,向目標(biāo)服務(wù)器發(fā)起請(qǐng)求。另外,云代理服務(wù)器也沒(méi)有對(duì)其緩存中的資源的有效性做出判斷,不能保證客戶端獲取云代理服務(wù)器緩存中的資源的準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的數(shù)據(jù)獲取方法及裝置。
基于本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)獲取方法,應(yīng)用于云代理服務(wù)器, 包括:
接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息;
查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù);
若是,則從所述云代理服務(wù)器的緩存中讀取所述有效數(shù)據(jù),并返回所述客戶端。
可選地,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù),包括:
查找所述云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù);
若是,則進(jìn)一步判斷所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否未超過(guò)第一存儲(chǔ)時(shí)間閾值t1;
若是,則確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù);
若任一不符合,則確定所述緩存中的數(shù)據(jù)為無(wú)效數(shù)據(jù)。
可選地,確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù)之后,還包括:
若所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)所述t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則
進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器,由所述預(yù)取服務(wù)器針對(duì)所述數(shù)據(jù)請(qǐng)求消息發(fā)起預(yù)取請(qǐng)求,以獲得所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
可選地,進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器之后,還包括:
接收所述預(yù)取服務(wù)器返回的所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源;
判斷所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同;
若是,則保持所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)不變;
若否,則利用所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)。
可選地,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)之后,還包括:
若否,則解析所述數(shù)據(jù)請(qǐng)求消息,確定其目的地;
與所述目的地建立連接,到所述目的地獲取與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源;
將獲取的資源返回至所述客戶端。
可選地,所述目的地包括:
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的其他客戶端;或者
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的遠(yuǎn)程服務(wù)器。
基于本發(fā)明的另一個(gè)方面,還提供了一種數(shù)據(jù)獲取裝置,應(yīng)用于云代理服務(wù)器,包括:
接收模塊,適于接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息;
查找模塊,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù);
讀取模塊,適于若是,則從所述云代理服務(wù)器的緩存中讀取所述有效數(shù)據(jù);
傳輸模塊,適于將所述讀取模塊讀取的所述有效數(shù)據(jù)返回所述客戶端。
可選地,所述查找模塊還適于:
查找所述云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù);
若是,則進(jìn)一步判斷所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否未超過(guò)第一存儲(chǔ)時(shí)間閾值t1;
若是,則確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù);
若任一不符合,則確定所述緩存中的數(shù)據(jù)為無(wú)效數(shù)據(jù)。
可選地,還包括:
預(yù)取模塊,適于若所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)所述t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則
進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器,由所述預(yù)取服務(wù)器針對(duì)所述數(shù)據(jù)請(qǐng)求消息發(fā)起預(yù)取請(qǐng)求,以獲得所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
可選地,所述接收模塊還適于接收所述預(yù)取服務(wù)器返回的所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源;
所述裝置還包括:
更新模塊,適于判斷所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同;若是,則保持所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)不變;若否,則利用所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)。
可選地,還包括:獲取模塊,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有 所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)之后,若否,則解析所述數(shù)據(jù)請(qǐng)求消息,確定其目的地;與所述目的地建立連接,到所述目的地獲取與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源;將獲取的資源返回至所述客戶端。
可選地,所述目的地包括:
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的其他客戶端;或者
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的遠(yuǎn)程服務(wù)器。
采用本發(fā)明實(shí)施例提供的方法,云代理服務(wù)器接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息后,并不立即連接客戶端請(qǐng)求消息對(duì)應(yīng)的接收方,而是查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),從緩存中查找需要的數(shù)據(jù),能夠有效地利用緩存中的資源。另外,若在云代理服務(wù)器中查找到了客戶端請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)后,直接從緩存獲取,相對(duì)于從客戶端請(qǐng)求消息對(duì)應(yīng)的目標(biāo)地址獲取數(shù)據(jù),從緩存中獲取數(shù)據(jù)的速度更快,減輕了系統(tǒng)的負(fù)擔(dān)。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的網(wǎng)址訪問(wèn)方法的處理流程圖;
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的獲取客戶端請(qǐng)求消息對(duì)應(yīng)的接收方地址以及將地址與黑名單比對(duì)方法的處理流程圖;
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的網(wǎng)址訪問(wèn)裝置的結(jié)構(gòu)示意圖;
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的網(wǎng)址訪問(wèn)裝置的另一種結(jié)構(gòu)示意圖;
圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)獲取方法的處理流程圖;
圖6示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的數(shù)據(jù)獲取方法的另一種處理流程圖;
圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)獲取裝置的結(jié)構(gòu)示意圖;
圖8示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)獲取裝置的另一種結(jié)構(gòu)示意圖;
圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的純異步數(shù)據(jù)傳輸方法的處理流程圖;
圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的純異步數(shù)據(jù)傳輸方法的另一種處理流程圖;
圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理服務(wù)器的結(jié)構(gòu)示意圖;
圖12示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理服務(wù)器的另一種結(jié)構(gòu)示意圖;以及
圖13示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的純異步數(shù)據(jù)傳輸系統(tǒng)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
在本發(fā)明實(shí)施例中,云代理服務(wù)器需要分別與客戶端、接收方建立通信鏈路,以供云代理服務(wù)器與客戶端、云代理服務(wù)器與接收方之間進(jìn)行通信。
在三者間的通信鏈路建立成功后,云代理服務(wù)器會(huì)接收客戶端的連接請(qǐng)求消息。在本發(fā)明實(shí)施例中,為解決現(xiàn)有技術(shù)中提及的云代理服務(wù)器缺乏多任務(wù)處理能力的技術(shù)問(wèn)題,本發(fā)明實(shí)施例對(duì)云代理服務(wù)器進(jìn)行改進(jìn)設(shè)置,使其具備異步處理能力。
因此,在本發(fā)明實(shí)施例中,若云代理服務(wù)器接收多個(gè)客戶端發(fā)起的連接請(qǐng)求消息時(shí),采用異步處理方式分別接收來(lái)自多個(gè)客戶端的連接請(qǐng)求消息。進(jìn)一步,在消息的處理階段,也采用異步處理方式對(duì)連接請(qǐng)求消息進(jìn)行異步處理。相應(yīng)的,在后續(xù)的資源請(qǐng)求階段以及將資源返回至不同的客戶端的階段也均采用異步處理方式。
當(dāng)然,云代理服務(wù)器具備一定的訪問(wèn)限制,例如,有部分網(wǎng)址是預(yù)先設(shè)置的、該云代理服務(wù)器禁止訪問(wèn)的網(wǎng)址(黑名單中記錄的禁止訪問(wèn)的url(統(tǒng)一資源定位符,Uniform Resource Locator))。若發(fā)生這種意外情況,那么,云代理服務(wù)器接收到連接請(qǐng)求消息時(shí)即可以斷定是否能夠提供與該連接請(qǐng)求 消息對(duì)應(yīng)的訪問(wèn)服務(wù)。以黑名單中記錄的禁止訪問(wèn)的url為例,云代理服務(wù)解析連接請(qǐng)求消息,將該連接請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單進(jìn)行比對(duì),根據(jù)比對(duì)結(jié)果確定是否需要執(zhí)行后續(xù)的步驟,若不需要,則直接向客戶端返回?zé)o法訪問(wèn)或者無(wú)法提供相應(yīng)服務(wù)的告知消息即可。
進(jìn)一步,在實(shí)施時(shí),若客戶端所請(qǐng)求訪問(wèn)的服務(wù)能夠被提供,那么,為了加速云代理服務(wù)器的服務(wù)提供速度,云代理服務(wù)器可以設(shè)置緩存(cache),用于緩存目標(biāo)服務(wù)器提供的資源。在該情況下,當(dāng)客戶端再次請(qǐng)求相同的服務(wù)器,云代理服務(wù)器可以直接從緩存中讀取資源直接返回給客戶端即可,無(wú)須再向目標(biāo)服務(wù)器請(qǐng)求服務(wù)或資源,能夠在較短時(shí)間內(nèi)為客戶端提供服務(wù),節(jié)省時(shí)間;進(jìn)一步,從緩存中直接讀取資源的方式,使得云代理服務(wù)器也縮減了與目標(biāo)服務(wù)器的交互次數(shù),減輕網(wǎng)絡(luò)負(fù)擔(dān)。但是,緩存中的資源是具備時(shí)效性的,若超過(guò)時(shí)效,則可能會(huì)變成失效數(shù)據(jù)。這些均是本發(fā)明實(shí)施例需要注意并解決的問(wèn)題,具體的解決手段見(jiàn)下文具體實(shí)施例。
需要說(shuō)明地是,連接請(qǐng)求消息對(duì)應(yīng)的接收方可以是服務(wù)器,也可以是終端,例如電腦、PDA、筆記本等,也可以是某些提供具體功能的客戶端,例如,目前常見(jiàn)的各類應(yīng)用程序(APP),本發(fā)明對(duì)此不做任何限定。
下面將以幾個(gè)具體實(shí)施例介紹云代理服務(wù)器對(duì)客戶端請(qǐng)求消息的處理流程。
實(shí)施例一
本發(fā)明實(shí)施例中,云代理服務(wù)器接收到來(lái)自客戶端的連接請(qǐng)求消息,為加速處理進(jìn)程,首先將客戶端請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單進(jìn)行比對(duì),若命中黑名單,則無(wú)須繼續(xù)處理,若未命中,則繼續(xù)進(jìn)行其他操作。
具體地,將客戶端請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單進(jìn)行比對(duì),需要獲取客戶端請(qǐng)求消息對(duì)應(yīng)的接收方對(duì)應(yīng)的網(wǎng)絡(luò)地址。圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的網(wǎng)址訪問(wèn)方法的處理流程圖。參見(jiàn)圖1,該方法至少包括以下步驟S102至步驟S106。
本發(fā)明實(shí)施例中,首先,執(zhí)行步驟S102,接收來(lái)自客戶端的請(qǐng)求消息,并解析獲取請(qǐng)求消息對(duì)應(yīng)的url。
獲取請(qǐng)求消息對(duì)應(yīng)的url后,執(zhí)行步驟S104,確定請(qǐng)求消息對(duì)應(yīng)的url 是否命中黑名單。
最后,執(zhí)行步驟S106,若是,則將錯(cuò)誤碼返回客戶端,告知客戶端請(qǐng)求消息對(duì)應(yīng)的url在云代理服務(wù)器上被設(shè)置為禁止訪問(wèn)。
采用本發(fā)明實(shí)施例中的方法,云代理服務(wù)器接收到來(lái)自客戶端的請(qǐng)求消息后,解析獲取請(qǐng)求消息對(duì)應(yīng)的url,根據(jù)請(qǐng)求消息對(duì)應(yīng)的url確定是否命中黑名單,進(jìn)一步確定客戶端的請(qǐng)求消息對(duì)應(yīng)的地址是否是限制云代理服務(wù)器的訪問(wèn)。采用本發(fā)明實(shí)施例中的方法,能夠及時(shí)判斷出客戶端請(qǐng)求消息對(duì)應(yīng)的地址是否能夠訪問(wèn)。若確定客戶端請(qǐng)求消息對(duì)應(yīng)的地址限制云代理服務(wù)器訪問(wèn),則云代理服務(wù)器不再向該地址發(fā)起連接,避免了因不能識(shí)別客戶端請(qǐng)求消息對(duì)應(yīng)的地址限制云代理服務(wù)器訪問(wèn),繼續(xù)耗費(fèi)大量時(shí)間執(zhí)行客戶端的請(qǐng)求消息的問(wèn)題。
需要說(shuō)明地是,url是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址,互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的url。
具體地,為了便于理解客戶端請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單的比對(duì)流程,圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的獲取客戶端請(qǐng)求消息對(duì)應(yīng)的接收方地址以及將地址與黑名單比對(duì)方法的處理流程圖,參見(jiàn)圖2,該方法至少包括S201至步驟S206。
云代理服務(wù)器通過(guò)通信鏈路接收多個(gè)客戶端發(fā)送的請(qǐng)求消息后,對(duì)多個(gè)客戶端的請(qǐng)求消息進(jìn)行異步處理,首先執(zhí)行步驟S201,異步讀取各請(qǐng)求消息的請(qǐng)求報(bào)文頭部。其中,請(qǐng)求報(bào)文頭部是通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息,由關(guān)鍵字/值(key-value)對(duì)組成,每行一對(duì),關(guān)鍵字和值可以用英文冒號(hào)“:”分隔。請(qǐng)求報(bào)文頭部至少包括下列內(nèi)容:產(chǎn)生請(qǐng)求的瀏覽器類型,客戶端可識(shí)別的內(nèi)容類型列表,請(qǐng)求的主機(jī)名。
由于本發(fā)明實(shí)施例可以根據(jù)各請(qǐng)求報(bào)文頭部的內(nèi)容確定各請(qǐng)求消息所對(duì)應(yīng)的主機(jī)(host),因此,各請(qǐng)求報(bào)文頭部的完整性保證了對(duì)各請(qǐng)求消息所對(duì)應(yīng)的host進(jìn)行確定的準(zhǔn)確性。在請(qǐng)求報(bào)文頭部被接收的過(guò)程中,進(jìn)一步,執(zhí)行步驟S202,判斷各請(qǐng)求報(bào)文頭部是否被完整收取。
若各請(qǐng)求報(bào)文頭部沒(méi)有被完整收取,繼續(xù)執(zhí)行步驟S201,直至各請(qǐng)求報(bào)文頭部被完整收取。若各請(qǐng)求報(bào)文頭部被完整收取,則執(zhí)行步驟S203,解析請(qǐng)求報(bào)文頭部,確定各請(qǐng)求消息所對(duì)應(yīng)的host,再根據(jù)host確定請(qǐng)求消息對(duì)應(yīng)的url。
獲取請(qǐng)求消息對(duì)應(yīng)的url后,執(zhí)行步驟S204,判斷請(qǐng)求消息對(duì)應(yīng)的url 是否命中黑名單。若命中黑名單,執(zhí)行步驟S205,將錯(cuò)誤碼返回客戶端,告知客戶端請(qǐng)求消息對(duì)應(yīng)的url在云代理服務(wù)器上被設(shè)置為禁止訪問(wèn)。若沒(méi)有命中黑名單,則執(zhí)行步驟S206,云代理服務(wù)器立即連接客戶端請(qǐng)求消息對(duì)應(yīng)的接收方,并接收與客戶端請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),將接收完畢的數(shù)據(jù)一次性轉(zhuǎn)發(fā)至客戶端。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,黑名單可以通過(guò)對(duì)云代理服務(wù)器的訪問(wèn)日志進(jìn)行挖掘得到的。具體地,首先獲得云代理服務(wù)器的訪問(wèn)日志,然后通過(guò)對(duì)代理服務(wù)器的訪問(wèn)日志挖掘到有用信息。例如,對(duì)訪問(wèn)日志進(jìn)行比對(duì),查找出其中包括的訪問(wèn)失敗的網(wǎng)頁(yè)。
進(jìn)一步,還需要對(duì)云代理服務(wù)器中的訪問(wèn)失敗的網(wǎng)頁(yè)進(jìn)行判斷,根據(jù)判斷結(jié)果確定該網(wǎng)頁(yè)是否為禁止訪問(wèn)網(wǎng)頁(yè),進(jìn)而判斷該網(wǎng)頁(yè)對(duì)應(yīng)的url是否為限制云代理服務(wù)器訪問(wèn)。在本發(fā)明實(shí)施例中,具體判斷過(guò)程可采用直連測(cè)試的方式。直連測(cè)試是指直接與目的地址進(jìn)行連接,不需要經(jīng)過(guò)云代理服務(wù)器。當(dāng)多個(gè)客戶端訪問(wèn)一個(gè)網(wǎng)頁(yè),返回結(jié)果都不正常時(shí),可以通過(guò)程序進(jìn)行直連測(cè)試,驗(yàn)證無(wú)法訪問(wèn)的網(wǎng)頁(yè)的內(nèi)容是否能夠正常顯示。若無(wú)法訪問(wèn)的網(wǎng)頁(yè)的內(nèi)容能夠正常顯示,則進(jìn)一步獲取該網(wǎng)頁(yè)由云代理服務(wù)器訪問(wèn)失敗的次數(shù),根據(jù)訪問(wèn)失敗的次數(shù)確定該網(wǎng)址是否應(yīng)該被收錄進(jìn)黑名單。
實(shí)施時(shí),可以通過(guò)如下兩種計(jì)算方式對(duì)直連測(cè)試的結(jié)果進(jìn)行判定:
第一種,將云代理服務(wù)器中該網(wǎng)頁(yè)對(duì)應(yīng)的訪問(wèn)失敗的次數(shù)與次數(shù)閾值進(jìn)行比較。若云代理服務(wù)器訪問(wèn)失敗的次數(shù)超過(guò)次數(shù)閾值,例如,設(shè)定的訪問(wèn)失敗次數(shù)閾值為100次,云代理服務(wù)器訪問(wèn)失敗的次數(shù)為120次,則確定該網(wǎng)頁(yè)為禁止訪問(wèn)網(wǎng)頁(yè),進(jìn)而判斷該網(wǎng)頁(yè)對(duì)應(yīng)的url為限制云代理服務(wù)器訪問(wèn),并將該網(wǎng)頁(yè)對(duì)應(yīng)的url加入黑名單。
第二種,將云代理服務(wù)器中該網(wǎng)頁(yè)對(duì)應(yīng)的訪問(wèn)失敗次數(shù)在總訪問(wèn)次數(shù)中占的比例,與比例閾值進(jìn)行比較。若訪問(wèn)失敗的次數(shù)在訪問(wèn)總次數(shù)中占的比例超過(guò)比例閾值,例如,設(shè)定的訪問(wèn)失敗比例閾值為50%,云代理服務(wù)器訪問(wèn)失敗次數(shù)占總訪問(wèn)次數(shù)的比例為60%,則確定該網(wǎng)頁(yè)為禁止訪問(wèn)網(wǎng)頁(yè),進(jìn)而判斷該網(wǎng)頁(yè)對(duì)應(yīng)的url為限制云代理服務(wù)器訪問(wèn),并將該網(wǎng)頁(yè)對(duì)應(yīng)的url加入黑名單。
本發(fā)明實(shí)施例提供的黑名單的生成方法,不再需要人工手動(dòng)完成,只需對(duì)訪問(wèn)日志中的網(wǎng)頁(yè)的訪問(wèn)失敗次數(shù)與設(shè)定的閾值進(jìn)行比較,就可以判斷該網(wǎng)頁(yè)是否為禁止訪問(wèn)網(wǎng)頁(yè),進(jìn)而判斷是否加入黑名單,整個(gè)判斷過(guò)程不需要大量的人力,均是自動(dòng)完成,耗費(fèi)的時(shí)間短,效率高。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種云代理的網(wǎng)址訪問(wèn)裝置,應(yīng)用于云代理服務(wù)器。圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的網(wǎng)址訪問(wèn)裝置的結(jié)構(gòu)示意圖。參見(jiàn)圖3,該裝置至少包括:
存儲(chǔ)模塊310,適于設(shè)置記錄禁止訪問(wèn)的url的黑名單;
接收模塊320,適于接收來(lái)自客戶端的請(qǐng)求消息;
解析模塊330,與接收模塊320耦合,適于解析獲取請(qǐng)求消息對(duì)應(yīng)的url;
命中模塊340,一端與解析模塊330耦合,一端與存儲(chǔ)模塊310耦合,適于確定請(qǐng)求消息對(duì)應(yīng)的url是否命中黑名單;
錯(cuò)誤碼返回模塊350,與命中模塊340耦合,適于若是,則將錯(cuò)誤碼返回客戶端,告知客戶端請(qǐng)求消息對(duì)應(yīng)的url在云代理服務(wù)器上被設(shè)置為禁止訪問(wèn)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,參見(jiàn)圖4,云代理的網(wǎng)址訪問(wèn)裝置還包括:
挖掘模塊360,與解析模塊330耦合,適于對(duì)云代理服務(wù)器的訪問(wèn)日志進(jìn)行挖掘以得到黑名單。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,挖掘模塊360還適于:
獲得云代理服務(wù)器的訪問(wèn)日志;
對(duì)訪問(wèn)日志進(jìn)行比對(duì),查找出無(wú)法訪問(wèn)的網(wǎng)頁(yè);
對(duì)無(wú)法訪問(wèn)的網(wǎng)頁(yè)進(jìn)行直連測(cè)試,驗(yàn)證無(wú)法訪問(wèn)的網(wǎng)頁(yè)的內(nèi)容是否能夠正常顯示;
若無(wú)法訪問(wèn)的網(wǎng)頁(yè)的內(nèi)容能夠正常顯示,則獲取該網(wǎng)頁(yè)由云代理服務(wù)器訪問(wèn)失敗的次數(shù);
若該網(wǎng)頁(yè)由云代理服務(wù)器訪問(wèn)失敗的次數(shù)超過(guò)次數(shù)閾值,或者,訪問(wèn)失敗的次數(shù)在訪問(wèn)總次數(shù)中占的比例超過(guò)比例閾值,則將網(wǎng)頁(yè)的url加入黑名單。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,解析模塊330還適于:
解析并讀取請(qǐng)求消息的請(qǐng)求報(bào)文頭部;
當(dāng)請(qǐng)求報(bào)文頭部讀取結(jié)束時(shí),根據(jù)請(qǐng)求報(bào)文頭部匹配請(qǐng)求消息對(duì)應(yīng)的主機(jī)host;
根據(jù)匹配結(jié)果確定請(qǐng)求消息對(duì)應(yīng)的url。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,參見(jiàn)圖4,云代理的網(wǎng)址訪問(wèn)裝置還包括:
異步模塊370,與接收模塊320耦合,適于若接收模320接收到多個(gè)客戶端發(fā)送的請(qǐng)求消息,調(diào)用其他模塊對(duì)多個(gè)客戶端的請(qǐng)求消息進(jìn)行異步處理。
實(shí)施例二
本發(fā)明實(shí)施例中,若客戶端請(qǐng)求的網(wǎng)址并未命中黑名單,那么云代理服務(wù)器就可以與客戶端間建立連接,進(jìn)而對(duì)客戶端發(fā)起的請(qǐng)求進(jìn)行應(yīng)答。前文提及,云代理服務(wù)器對(duì)客戶端的請(qǐng)求消息進(jìn)行處理,為了加速處理進(jìn)程,對(duì)于客戶端之前已經(jīng)請(qǐng)求過(guò)的服務(wù),可以將相應(yīng)資源保存在cache中,由cache提供相應(yīng)服務(wù),而并不是連接客戶端請(qǐng)求消息對(duì)應(yīng)的接收方。即,云代理服務(wù)器首先會(huì)到云代理服務(wù)器的cache中查找是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)。圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)獲取方法的處理流程圖。參見(jiàn)圖5,該方法至少包括以下步驟S502至步驟S506。
本發(fā)明實(shí)施例中,首先執(zhí)行步驟S502,接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息。
接收到客戶端發(fā)起的數(shù)據(jù)請(qǐng)求消息后,執(zhí)行步驟S504,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)。
最后,執(zhí)行步驟S506,若是,則從云代理服務(wù)器的緩存中讀取有效數(shù)據(jù),并返回客戶端。
采用本發(fā)明實(shí)施例提供的方法,云代理服務(wù)器接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息后,并不立即連接客戶端請(qǐng)求消息對(duì)應(yīng)的接收方,而是查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),從緩存中查找需要的數(shù)據(jù),能夠有效地利用緩存中的資源。另外,若在云代理服務(wù)器中查找到了客戶端請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)后,直接從緩存獲取,相對(duì)于從客戶端請(qǐng)求消息對(duì)應(yīng)的目標(biāo)地址獲取數(shù)據(jù),從緩存中獲取數(shù)據(jù)的速度更快,減輕了系統(tǒng)的負(fù)擔(dān)。
本發(fā)明實(shí)施例中,云代理服務(wù)器接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息后,并不立即連接對(duì)應(yīng)的接收方,而是根據(jù)各客戶端的數(shù)據(jù)請(qǐng)求消息,在云代理服務(wù)器的緩存中進(jìn)行查找。例如,根據(jù)各客戶端的請(qǐng)求頭部(headers),確定緩存中是否存儲(chǔ)有客戶端的headers命中的有效數(shù)據(jù)。若云代理服務(wù)器的緩存中均存儲(chǔ)有headers命中的有效數(shù)據(jù),將有效數(shù)據(jù)返回至各客戶端,云代理服務(wù)器不再連接對(duì)應(yīng)的接收方,接收方也不再需要響應(yīng)客戶端的消息請(qǐng)求。
本發(fā)明實(shí)施例判斷云代理服務(wù)器緩存中的數(shù)據(jù)是否有效,首先判斷云代理服務(wù)器的緩存中是否存儲(chǔ)有客戶端的headers對(duì)應(yīng)的數(shù)據(jù),若存在,則進(jìn)一步對(duì)該數(shù)據(jù)進(jìn)行判斷,即判斷客戶端的headers對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否超過(guò)第一存儲(chǔ)時(shí)間閾值t1。若沒(méi)有超過(guò)第一存儲(chǔ)時(shí)間閾值t1,則確定客戶端的headers對(duì)應(yīng)的數(shù)據(jù)為有效數(shù)據(jù)。若代理服務(wù)器的緩存中沒(méi)有存儲(chǔ)有客戶端的headers對(duì)應(yīng)的數(shù)據(jù),或者,若云代理服務(wù)器的緩存中存儲(chǔ)有客戶端的headers對(duì)應(yīng)的數(shù)據(jù),但是客戶端的headers對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間超過(guò)了第一存儲(chǔ)時(shí) 間閾值t1,以上兩種情況均確定為無(wú)效數(shù)據(jù)。
本發(fā)明實(shí)施例通過(guò)對(duì)云代理服務(wù)器緩存中客戶端的headers對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間進(jìn)行判斷,進(jìn)一步確定緩存中數(shù)據(jù)是否是有效數(shù)據(jù),保證了客戶端獲取云代理服務(wù)器緩存中的資源的時(shí)效性和準(zhǔn)確性。
當(dāng)緩存中存儲(chǔ)的客戶端的headers對(duì)應(yīng)的數(shù)據(jù)為無(wú)效數(shù)據(jù)時(shí),云代理服務(wù)器解析客戶端的數(shù)據(jù)請(qǐng)求消息,根據(jù)數(shù)據(jù)請(qǐng)求消息中的內(nèi)容確定目的地。其中,目的地可以是服務(wù)器,也可以是終端,例如電腦、PDA、筆記本等,也可以是存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的客戶端,例如,各類APP,本發(fā)明對(duì)此不做任何限定。
云代理服務(wù)器連接對(duì)應(yīng)的接收方,接收方響應(yīng)客戶端的消息請(qǐng)求,并將查詢到的、與請(qǐng)求相關(guān)的數(shù)據(jù)返回至云代理服務(wù)器。云代理服務(wù)器判斷對(duì)各遠(yuǎn)端服務(wù)器的數(shù)據(jù)接收完畢,則將接收完畢的數(shù)據(jù)一次性轉(zhuǎn)發(fā)至對(duì)應(yīng)的客戶端。
當(dāng)緩存中存儲(chǔ)的客戶端的headers對(duì)應(yīng)的數(shù)據(jù)為有效數(shù)據(jù),還需要對(duì)其存儲(chǔ)時(shí)間進(jìn)行進(jìn)一步判斷。若有效數(shù)據(jù)的存儲(chǔ)時(shí)間沒(méi)有超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,則直接將云代理服務(wù)器中的有效數(shù)據(jù)返回至客戶端。若有效數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)第一存儲(chǔ)時(shí)間閾值t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則進(jìn)一步將有效數(shù)據(jù)的請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器。t2通常設(shè)置的與t1間隔較小,其間隔甚至可能會(huì)小于云代理服務(wù)器到目的地讀取數(shù)據(jù)所需時(shí)間,以保證數(shù)據(jù)的有效性。例如t1設(shè)置為30分鐘,而t2設(shè)置為28分鐘,云代理服務(wù)器到cache中讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)數(shù)據(jù)在緩存中的存儲(chǔ)時(shí)間已超過(guò)28分鐘,但是未超過(guò)30分鐘,此時(shí)緩存中數(shù)據(jù)仍為有效數(shù)據(jù),可以將緩存中數(shù)據(jù)返回至發(fā)起數(shù)據(jù)請(qǐng)求的客戶端。但是,因數(shù)據(jù)在緩存中的存儲(chǔ)時(shí)間已超過(guò)28分鐘,與有效時(shí)間較為接近,此時(shí)真實(shí)數(shù)據(jù)有可能會(huì)發(fā)生改變,或者可能在云代理服務(wù)器到目的地獲取的時(shí)間段內(nèi)發(fā)生改變,因此可以同步發(fā)起真實(shí)數(shù)據(jù)的預(yù)取過(guò)程。
預(yù)取服務(wù)器針對(duì)該有效數(shù)據(jù)的請(qǐng)求消息向?qū)?yīng)的接收方發(fā)起預(yù)取請(qǐng)求,接收方響應(yīng)預(yù)取請(qǐng)求,并將預(yù)取請(qǐng)求對(duì)應(yīng)的當(dāng)前資源返回至預(yù)取服務(wù)器,因目的地的實(shí)際數(shù)據(jù)會(huì)根據(jù)實(shí)際情況而改變,因此預(yù)取服務(wù)器的預(yù)取行為可能出現(xiàn)以下兩種情況:
第一種,若預(yù)取服務(wù)器預(yù)取到的當(dāng)前資源與緩存中命中數(shù)據(jù)一致,則保持?jǐn)?shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù)不變,并且將云代理服務(wù)器的緩存命中的數(shù)據(jù)返回至客戶端。
第二種,若預(yù)取服務(wù)器預(yù)取到的當(dāng)前資源與緩存中命中數(shù)據(jù)不一致,則將 預(yù)取請(qǐng)求對(duì)應(yīng)的當(dāng)前資源更新數(shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù),并將更新后的云代理服務(wù)器的緩存命中的數(shù)據(jù)返回至客戶端。其中,預(yù)取服務(wù)器預(yù)取到的當(dāng)前資源與緩存中命中數(shù)據(jù)不一致的原因可能有多種,本發(fā)明實(shí)施例提供了兩種可能性較強(qiáng)的方案:第一種方案,目的地的資源在有效時(shí)間段內(nèi)被更新;第二種方案,預(yù)取服務(wù)器到目的地預(yù)取資源的時(shí)間較長(zhǎng),使得讀取當(dāng)前資源時(shí),已超過(guò)緩存中數(shù)據(jù)存儲(chǔ)的有效時(shí)長(zhǎng),讀取到的數(shù)據(jù)自然也可能是新的數(shù)據(jù),與緩存中命中的數(shù)據(jù)不同。
為了便于理解在云代理服務(wù)器緩存應(yīng)用于客戶端請(qǐng)求消息的有效數(shù)據(jù)的獲取過(guò)程,本發(fā)明實(shí)施例提供了一個(gè)具體的實(shí)施例對(duì)其進(jìn)行說(shuō)明。圖6示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的數(shù)據(jù)獲取方法的另一種處理流程圖,參見(jiàn)圖6,該方法至少包括步驟S601至步驟S611。
本發(fā)明實(shí)施例中,首先執(zhí)行步驟S601,接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息。然后執(zhí)行步驟S602,解析客戶端的數(shù)據(jù)請(qǐng)求消息的headers。其中,客戶端的headers的請(qǐng)求內(nèi)容為今日黃金價(jià)格。獲取客戶端的headers的請(qǐng)求內(nèi)容后,執(zhí)行步驟S603,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有客戶端的headers對(duì)應(yīng)的數(shù)據(jù)。若不存在,則執(zhí)行步驟S604,確定目的地,與目的地建立連接,到目的地獲取今日黃金價(jià)格對(duì)應(yīng)的資源,并將獲取的資源返回至客戶端。
若存在,則執(zhí)行步驟S605,判斷緩存中客戶端的headers對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否超過(guò)第一存儲(chǔ)時(shí)間閾值t1。
若超過(guò)第一存儲(chǔ)時(shí)間閾值t1,則執(zhí)行步驟S604,確定目的地,與目的地建立連接,到目的地獲取今日黃金價(jià)格對(duì)應(yīng)的資源,并將獲取的資源返回至客戶端。例如,云代理服務(wù)器的緩存中存儲(chǔ)的今日黃金價(jià)格的存儲(chǔ)時(shí)間為2015年12月15日10:00,由于黃金價(jià)格每天都會(huì)有浮動(dòng),截止到2015年12月16日00:00時(shí),黃金的價(jià)格就會(huì)更新,因此今日黃金價(jià)格對(duì)應(yīng)的第一存儲(chǔ)時(shí)間閾值為14個(gè)小時(shí),客戶端的headers的請(qǐng)求時(shí)間為2015年12月16日08:00,可以得出超過(guò)了14個(gè)小時(shí),此時(shí),不能將云代理服務(wù)器中存儲(chǔ)有的今日黃金價(jià)格返回至客戶端。
若沒(méi)有超過(guò)第一存儲(chǔ)時(shí)間閾值t1,則執(zhí)行步驟S606,判斷緩存中客戶端的headers對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否超過(guò)第二存儲(chǔ)時(shí)間閾值t2。
若沒(méi)有超過(guò)第二存儲(chǔ)時(shí)間閾值t2,則將執(zhí)行步驟S607,將云代理服務(wù)器的緩存中存儲(chǔ)的今日黃金價(jià)格返回至客戶端。
若超過(guò)第二存儲(chǔ)時(shí)間閾值t2,執(zhí)行步驟S608,將客戶端的數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器。例如,云代理服務(wù)器的緩存中存儲(chǔ)的今日黃金價(jià)格的存儲(chǔ)時(shí) 間為2015年12月15日10:00,預(yù)設(shè)的第二存儲(chǔ)時(shí)間閾值t2對(duì)應(yīng)的截止時(shí)間為2015年12月15日23:50,則第二存儲(chǔ)時(shí)間閾值t2為13個(gè)小時(shí)50分鐘。當(dāng)客戶端的headers的請(qǐng)求時(shí)間為2015年12月15日23:54,超出了第二存儲(chǔ)時(shí)間閾值t2,則將客戶端的數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器。
預(yù)取服務(wù)器針對(duì)客戶端的數(shù)據(jù)請(qǐng)求消息向?qū)?yīng)的接收方發(fā)起預(yù)取請(qǐng)求,接收方響應(yīng)預(yù)取請(qǐng)求,并將預(yù)取請(qǐng)求對(duì)應(yīng)的當(dāng)前資源返回至預(yù)取服務(wù)器,執(zhí)行步驟S609,接收預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
預(yù)取服務(wù)器發(fā)起預(yù)取請(qǐng)求,接收方響應(yīng)預(yù)取請(qǐng)求,并將預(yù)取請(qǐng)求對(duì)應(yīng)的當(dāng)前資源返回至預(yù)取服務(wù)器。進(jìn)一步,執(zhí)行步驟S610,判斷數(shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù)與數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同。
若步驟S610的執(zhí)行結(jié)果是相同,例如,預(yù)取服務(wù)器發(fā)起預(yù)取請(qǐng)求,接收方響應(yīng)預(yù)取請(qǐng)求,并將預(yù)取請(qǐng)求對(duì)應(yīng)的當(dāng)前資源返回至預(yù)取服務(wù)器,然后云代理服務(wù)器接收預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源,預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源與請(qǐng)求消息在云代理服務(wù)器的緩存中的今日黃金價(jià)格一致,則執(zhí)行步驟S611,將云代理服務(wù)器的緩存中存儲(chǔ)的今日黃金價(jià)格返回至客戶端。當(dāng)然,在執(zhí)行過(guò)程中,步驟S608至S610與S611的順序并不是一定的,因此時(shí)緩存中命中數(shù)據(jù)仍為有效數(shù)據(jù),因此,也可以在執(zhí)行步驟S608的同時(shí),執(zhí)行S611,將緩存中命中數(shù)據(jù)直接返回至客戶端。
若步驟S610的執(zhí)行結(jié)果是不相同,例如,整個(gè)響應(yīng)進(jìn)程的結(jié)束時(shí)間為2015年12月16日00:06,則說(shuō)明預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是2015年12月16日的黃金價(jià)格,且與請(qǐng)求消息在云代理服務(wù)器的緩存中的今日黃金價(jià)格不一致,此時(shí),將預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的今日黃金價(jià)格替換掉云代理服務(wù)器的緩存中的今日黃金價(jià)格,則執(zhí)行步驟S612,將預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新云代理服務(wù)器的緩存中的今日黃金價(jià)格。替換掉以后,執(zhí)行步驟S613,將更新后的云代理服務(wù)器的緩存中的今日黃金價(jià)格返回至客戶端。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)獲取裝置,應(yīng)用于云代理服務(wù)器。圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)獲取裝置的結(jié)構(gòu)示意圖。參見(jiàn)圖7,該裝置至少包括:
接收模塊710,適于接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息;
查找模塊720,與接收模塊710耦合,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù);
讀取模塊730,與查找模塊720耦合,適于若是,則從云代理服務(wù)器的緩 存中讀取有效數(shù)據(jù);
傳輸模塊740,與讀取模塊730耦合,適于將讀取模塊讀取的有效數(shù)據(jù)返回客戶端。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,查找模塊720還適于:
查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù);
若是,則進(jìn)一步判斷數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否未超過(guò)第一存儲(chǔ)時(shí)間閾值t1;
若是,則確定緩存中的數(shù)據(jù)為有效數(shù)據(jù);
若任一不符合,則確定緩存中的數(shù)據(jù)為無(wú)效數(shù)據(jù)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,參見(jiàn)圖8,數(shù)據(jù)獲取裝置還包括:
預(yù)取模塊750,與查找模塊720耦合,適于若數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則
進(jìn)一步將數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器,由預(yù)取服務(wù)器針對(duì)數(shù)據(jù)請(qǐng)求消息發(fā)起預(yù)取請(qǐng)求,以獲得數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,接收模塊710還適于接收預(yù)取服務(wù)器返回的數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源;
參見(jiàn)圖8,數(shù)據(jù)獲取裝置還包括:
更新模塊760,與預(yù)取模塊750耦合,適于判斷數(shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù)與數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同;若是,則保持?jǐn)?shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù)不變;若否,則利用數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新數(shù)據(jù)請(qǐng)求消息在云代理服務(wù)器的緩存命中的數(shù)據(jù)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,參見(jiàn)圖8,數(shù)據(jù)獲取裝置還包括:
獲取模塊770,與查找模塊720耦合,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)之后,若否,則解析數(shù)據(jù)請(qǐng)求消息,確定其目的地;與目的地建立連接,到目的地獲取與數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源;將獲取的資源返回至客戶端。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,目的地包括:
存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的其他客戶端;或者存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的遠(yuǎn)程服務(wù)器。
實(shí)施例三
實(shí)施例一和實(shí)施例二分別闡述了云代理服務(wù)器具備黑名單和緩存的情況下的具體實(shí)施方式,而通常對(duì)于客戶端發(fā)起的絕大多數(shù)請(qǐng)求,云代理服 務(wù)器仍然是遵循到接收方獲取相應(yīng)資源的方式進(jìn)行處理。現(xiàn)有技術(shù)中指出,目前的云代理服務(wù)器缺少處理多任務(wù)的能力。
為解決這一技術(shù)問(wèn)題,本發(fā)明實(shí)施例對(duì)云代理服務(wù)器的任務(wù)處理方式進(jìn)行改進(jìn)。在本發(fā)明實(shí)施例中,云代理服務(wù)器采用異步處理方式接收來(lái)自多個(gè)客戶端的連接請(qǐng)求消息,進(jìn)而對(duì)連接請(qǐng)求消息進(jìn)行異步處理,隨后采用直接向客戶端請(qǐng)求消息對(duì)應(yīng)的接收方異步發(fā)起連接。云代理服務(wù)器與接收方異步建立連接后,將客戶端請(qǐng)求消息中的數(shù)據(jù)異步發(fā)送至接收方,異步接收由接收方發(fā)送的數(shù)據(jù),并向客戶端異步轉(zhuǎn)發(fā)接收方發(fā)送的數(shù)據(jù)。即,整個(gè)數(shù)據(jù)請(qǐng)求過(guò)程中,本發(fā)明實(shí)施例均采用異步的方式進(jìn)行處理,大大增加了數(shù)據(jù)處理的并行性,使得云代理服務(wù)器具備并行高性能。圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的純異步數(shù)據(jù)傳輸方法的處理流程圖。參見(jiàn)圖9,該方法至少包括以下步驟S902至步驟S906。
本發(fā)明實(shí)施例中,首先,執(zhí)行步驟S902,異步接收來(lái)自多個(gè)客戶端的連接請(qǐng)求消息。
異步接收到客戶端請(qǐng)求后,執(zhí)行步驟S904,對(duì)多個(gè)連接請(qǐng)求消息進(jìn)行異步處理,分別連接至對(duì)應(yīng)的接收方。
最后,執(zhí)行步驟S906,在連接成功之后,在各客戶端與其對(duì)應(yīng)的接收方之間異步進(jìn)行數(shù)據(jù)傳輸。
采用本發(fā)明實(shí)施例提供的方法,接收多個(gè)客戶端的多個(gè)連接請(qǐng)求,對(duì)多個(gè)連接請(qǐng)求進(jìn)行處理,連接至對(duì)應(yīng)的接收方,以及在客戶端與其對(duì)應(yīng)的接收方之間進(jìn)行數(shù)據(jù)傳輸,以上每一個(gè)執(zhí)行環(huán)節(jié)均是異步進(jìn)行。異步執(zhí)行使得每一個(gè)執(zhí)行環(huán)節(jié)不用阻塞當(dāng)前線程來(lái)等待處理完成,而是使用異步回調(diào)其他線程的方式進(jìn)行處理,當(dāng)其他線程完成操作處于空閑狀態(tài)時(shí),回調(diào)通知空閑線程,使得空閑線程能夠得到充分利用。由此可見(jiàn),異步執(zhí)行的方式使得線程調(diào)用更為靈活,避免過(guò)于集中于某一個(gè)或某幾個(gè)線程所造成的網(wǎng)絡(luò)堵塞甚至崩潰,保證了云代理服務(wù)的高性能,高并發(fā),提高了云代理服務(wù)的響應(yīng)性,進(jìn)而提高了用戶體驗(yàn)。另外,異步執(zhí)行避免了調(diào)用線程阻塞的問(wèn)題,進(jìn)而避免了某條線程阻塞導(dǎo)致網(wǎng)絡(luò)崩潰的問(wèn)題,也避免了某一條線程堵塞,而其他線程處于閑置狀態(tài)的問(wèn)題,使得網(wǎng)絡(luò)資源能夠得到充分利用。
圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理的純異步數(shù)據(jù)傳輸方法的另一種處理流程圖。參見(jiàn)圖10,首先云代理服務(wù)器讀取客戶端請(qǐng)求(proxy_read_firstline),進(jìn)一步讀取客戶端的請(qǐng)求頭部(proxy_read_headers), 并根據(jù)客戶端請(qǐng)求的內(nèi)容確定對(duì)應(yīng)的接收方(process_request_headers),然后與對(duì)應(yīng)的接收方建立連接(proxy_connect),將客戶端的請(qǐng)求頭部發(fā)送至接收方(proxy_send_headers),后續(xù)將客戶端提供的數(shù)據(jù)緩存至客戶端側(cè)緩存(process_client_buffer)中。
接收方讀取云代理服務(wù)器轉(zhuǎn)發(fā)的客戶端的請(qǐng)求消息后(proxy_read_firstline),進(jìn)一步讀取客戶端的請(qǐng)求頭部(proxy_read_headers),根據(jù)客戶端請(qǐng)求頭部的內(nèi)容響應(yīng)客戶端的請(qǐng)求(process_response_headers),后續(xù)將查詢到的、與請(qǐng)求相關(guān)的數(shù)據(jù)返回至云代理服務(wù)器(proxy_send_headers),將查詢到的、與請(qǐng)求相關(guān)的數(shù)據(jù)緩存至接收方側(cè)緩存(process_server_buffer)中。
需要補(bǔ)充地是,云代理服務(wù)器讀取客戶端側(cè)緩存中的客戶端提供的數(shù)據(jù)以及讀取接收方側(cè)緩存中的與客戶端側(cè)請(qǐng)求相關(guān)的數(shù)據(jù),是通過(guò)云代理繼電器連接(proxy_relay_connnection)進(jìn)行讀取的。
具體地,云代理服務(wù)器異步讀取各連接請(qǐng)求消息的請(qǐng)求報(bào)文頭部,直至各請(qǐng)求報(bào)文頭部被完整收取。本發(fā)明實(shí)施例中根據(jù)各請(qǐng)求報(bào)文頭部的內(nèi)容確定各連接請(qǐng)求消息所對(duì)應(yīng)的接收方,因此,各請(qǐng)求報(bào)文頭部的完整性保證了對(duì)各連接請(qǐng)求消息所對(duì)應(yīng)的接收方進(jìn)行確定的準(zhǔn)確性。
其中,請(qǐng)求報(bào)文頭部是通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息,由關(guān)鍵字/值對(duì)組成,每行一對(duì),關(guān)鍵字和值用英文冒號(hào)“:”分隔。請(qǐng)求報(bào)文頭部至少包括下列內(nèi)容:產(chǎn)生請(qǐng)求的瀏覽器類型,客戶端可識(shí)別的內(nèi)容類型列表,請(qǐng)求的主機(jī)名。
根據(jù)各請(qǐng)求報(bào)文頭部的內(nèi)容,確定連接請(qǐng)求消息的各自對(duì)應(yīng)的接收方,例如,根據(jù)接收到的請(qǐng)求報(bào)文頭部中的請(qǐng)求消息類型確定接收方,搜索類連接請(qǐng)求確定對(duì)應(yīng)的搜索服務(wù)器,下載類服務(wù)器確定對(duì)應(yīng)的下載服務(wù)器,或者,還可以根據(jù)接收到的請(qǐng)求報(bào)文頭部中的主機(jī)名確定接收方。
當(dāng)接收方為服務(wù)器端時(shí),需要確定接收方的遠(yuǎn)端服務(wù)器的地址,具體地,向計(jì)算機(jī)域名系統(tǒng)(Domain Name System,簡(jiǎn)稱DNS)服務(wù)器異步請(qǐng)求各客戶端對(duì)應(yīng)的遠(yuǎn)端服務(wù)器的地址。DNS服務(wù)器保存有網(wǎng)絡(luò)中所有主機(jī)的域名和對(duì)應(yīng)IP地址,并且能夠?qū)⒂蛎D(zhuǎn)換為IP地址。DNS服務(wù)器將接收方對(duì)應(yīng)的遠(yuǎn)程服務(wù)器的地址返回至云代理服務(wù)器,云代理服務(wù)器再分別異步連接接收方對(duì)應(yīng)的遠(yuǎn)端服務(wù)器。
云代理服務(wù)器與各遠(yuǎn)端服務(wù)器異步連接成功后,異步接收各客戶端的請(qǐng)求 body,并轉(zhuǎn)發(fā)至對(duì)應(yīng)的遠(yuǎn)端服務(wù)器。客戶端的body通常由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。云代理服務(wù)器異步接收各客戶端的body,實(shí)際上是接收各客戶端的body的請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文,并將接收的body異步保存至云代理服務(wù)器的第一存儲(chǔ)器中。另外,云代理服務(wù)器還需要異步判斷是否對(duì)客戶端的body接收完畢,即判斷各客戶端的body的請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文是否全部接收完畢,若確定每個(gè)客戶端的body均已接收完畢,則將則將接收完畢的body轉(zhuǎn)發(fā)至對(duì)應(yīng)的遠(yuǎn)端服務(wù)器。
各遠(yuǎn)端服務(wù)器異步接收到云代理服務(wù)器異步轉(zhuǎn)發(fā)的各客戶端的body后,根據(jù)各客戶端的body的請(qǐng)求正文,響應(yīng)對(duì)應(yīng)的客戶端的請(qǐng)求,并將查詢到的、與請(qǐng)求相關(guān)的數(shù)據(jù)異步返回至云代理服務(wù)器。云代理服務(wù)器異步接收各遠(yuǎn)端服務(wù)器返回的數(shù)據(jù)后,將數(shù)據(jù)異步保存至第二存儲(chǔ)器中。遠(yuǎn)端服務(wù)器返回的數(shù)據(jù)通常由三部分組成,分別是狀態(tài)行、消息報(bào)頭、響應(yīng)正文。云代理服務(wù)器還需要異步判斷是否對(duì)各遠(yuǎn)端服務(wù)器的數(shù)據(jù)接收完畢,即判斷各遠(yuǎn)端服務(wù)器端返回?cái)?shù)據(jù)中的狀態(tài)行、消息報(bào)頭、響應(yīng)正文是否全部接收完畢,若確定每個(gè)遠(yuǎn)端服務(wù)器的返回的數(shù)據(jù)均已接收完畢,則將接收完畢的數(shù)據(jù)一次性轉(zhuǎn)發(fā)至對(duì)應(yīng)的客戶端。
下面以一個(gè)具體實(shí)施例對(duì)本發(fā)明實(shí)施例提供的云代理的純異步數(shù)據(jù)傳輸方法進(jìn)行說(shuō)明。
設(shè)定當(dāng)前具備3條線程,即線程1、線程2、線程3。兩個(gè)客戶端同時(shí)向云代理服務(wù)器發(fā)起連接請(qǐng)求消息,即客戶端1發(fā)起連接請(qǐng)求消息1,客戶端2發(fā)起連接請(qǐng)求消息2。云代理服務(wù)器接收到兩個(gè)客戶端的連接請(qǐng)求消息后,調(diào)用線程1處理數(shù)據(jù)連接請(qǐng)求消息1,調(diào)用線程2處理連接請(qǐng)求消息2。當(dāng)客戶端3和客戶端4先后發(fā)起連接請(qǐng)求消息3和連接請(qǐng)求消息4時(shí),調(diào)用線程3處理連接請(qǐng)求消息3和連接請(qǐng)求消息4。此時(shí),線程3正在處理客戶端3的連接請(qǐng)求消息3,線程2正在處于客戶端2的連接請(qǐng)求消息2,而線程1已處理完客戶端1的連接請(qǐng)求消息1,處于空閑狀態(tài),客戶端4的數(shù)據(jù)請(qǐng)求消息4并不處于等待狀態(tài),而是轉(zhuǎn)至線程1進(jìn)行處理。
云代理服務(wù)器接收客戶端的連接請(qǐng)求消息后,將客戶端1、客戶端2、客戶端3、客戶端4請(qǐng)求消息中的數(shù)據(jù)異步發(fā)送至對(duì)應(yīng)的接收方,接收方響應(yīng)客戶端的請(qǐng)求,然后云代理服務(wù)器異步接收由接收方返回的數(shù)據(jù),并向這四個(gè)客戶端異步轉(zhuǎn)發(fā)對(duì)應(yīng)的接收方發(fā)送的數(shù)據(jù),整個(gè)執(zhí)行過(guò)程,每一個(gè)執(zhí)行步驟中設(shè)定的線程并不是只處理指定的消息,若某一線程處于空閑狀態(tài), 均可以調(diào)用其他線程中的等待處理的消息,并將其進(jìn)行處理,以實(shí)現(xiàn)純異步數(shù)據(jù)傳輸。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種云代理服務(wù)器,用于支持本發(fā)明實(shí)施例提供的云代理的純異步數(shù)據(jù)傳輸方法。圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的云代理服務(wù)器的結(jié)構(gòu)示意圖。參見(jiàn)圖11,該裝置至少包括:
異步接收模塊1110,適于異步接收來(lái)自多個(gè)客戶端的多個(gè)連接請(qǐng)求消息;
異步連接模塊1120,與異步接收模塊1110耦合,適于對(duì)多個(gè)連接請(qǐng)求消息進(jìn)行異步處理,分別連接至對(duì)應(yīng)的接收方;
異步傳輸模塊1130,與異步連接模塊1120耦合,適于在連接成功之后,在各客戶端與其對(duì)應(yīng)的接收方之間異步進(jìn)行數(shù)據(jù)傳輸。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,異步連接模塊1120還適于:
異步讀取各連接請(qǐng)求消息的請(qǐng)求報(bào)文頭部,直至各請(qǐng)求報(bào)文頭部被完整收?。?/p>
根據(jù)各請(qǐng)求報(bào)文頭部的內(nèi)容確定各連接請(qǐng)求消息所對(duì)應(yīng)的接收方。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,異步連接模塊1120還適于:
當(dāng)接收方為服務(wù)器端時(shí),為各客戶端異步向DNS服務(wù)器請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端服務(wù)器的地址;
接收DNS服務(wù)器返回的各遠(yuǎn)端服務(wù)器的地址,并分別異步連接。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,異步傳輸模塊1130還適于:
異步接收各客戶端的請(qǐng)求體body,并轉(zhuǎn)發(fā)至對(duì)應(yīng)的接收方;
異步接收各接收方返回的數(shù)據(jù),并轉(zhuǎn)發(fā)至對(duì)應(yīng)的客戶端。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,異步接收模塊1110還適于:異步接收各客戶端的body;
參見(jiàn)圖12,云代理服務(wù)器還包括:第一存儲(chǔ)器1140,與異步接收模塊耦合1110,適于保存異步接收模塊接收的數(shù)據(jù);
異步傳輸模塊1130還適于:異步判斷各客戶端的body是否接收完畢;若是,則將接收完畢的body轉(zhuǎn)發(fā)至對(duì)應(yīng)的接收方。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,異步接收模塊1110還適于:當(dāng)接收方為服務(wù)器端時(shí),異步接收各遠(yuǎn)端服務(wù)器返回的數(shù)據(jù);
參見(jiàn)圖12,云代理服務(wù)器還包括:第二存儲(chǔ)器1150,與異步接收模塊1110耦合,適于保存異步接收模塊接收的數(shù)據(jù);
異步傳輸模塊1130還適于:異步判斷是否對(duì)各遠(yuǎn)端服務(wù)器的數(shù)據(jù)接收完 畢;若是,則將接收完畢的數(shù)據(jù)一次性轉(zhuǎn)發(fā)至對(duì)應(yīng)的客戶端。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種純異步數(shù)據(jù)傳輸系統(tǒng),包括:
多個(gè)客戶端,適于發(fā)起連接請(qǐng)求消息;還包括上述任一項(xiàng)的云代理服務(wù)器。
本發(fā)明實(shí)施例提供的任意一個(gè)優(yōu)選實(shí)施例或其組合,可應(yīng)用于客戶端、云代理服務(wù)器、接收方間的異步數(shù)據(jù)傳輸過(guò)程,圖13示出了根據(jù)本發(fā)明一個(gè)優(yōu)選實(shí)施例的純異步數(shù)據(jù)傳輸系統(tǒng)示意圖。參見(jiàn)圖13,該系統(tǒng)包括客戶端1310、云代理服務(wù)器1320。為了體現(xiàn)純異步數(shù)據(jù)傳輸系統(tǒng)的完整性,圖13還包括作為接收方的終端1330。圖13的客戶端、終端的個(gè)數(shù)僅僅為示意值,在實(shí)際應(yīng)用中可能成千上百甚至更多,本發(fā)明對(duì)此不做任何限定。
實(shí)施例四
本發(fā)明實(shí)施例中,云代理服務(wù)器接收到客戶端發(fā)起的數(shù)據(jù)請(qǐng)求消息之后,首先查看該請(qǐng)求是否命中黑名單,若沒(méi)有,則進(jìn)行一步采用純異步方式對(duì)數(shù)據(jù)請(qǐng)求消息進(jìn)行處理。
具體地,云代理服務(wù)器對(duì)客戶端的數(shù)據(jù)請(qǐng)求消息進(jìn)行異步處理之前,首先將客戶端請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單進(jìn)行比對(duì),具體實(shí)施方式請(qǐng)參照?qǐng)D2中的步驟S201至步驟S204。
若獲取客戶端的請(qǐng)求消息對(duì)應(yīng)的url后沒(méi)有命中黑名單,則采用純異步方式對(duì)數(shù)據(jù)請(qǐng)求消息進(jìn)行具體操作,具體步驟請(qǐng)參照?qǐng)D9的步驟S904至步驟S906,在此不做過(guò)多贅述。
實(shí)施例五
本發(fā)明實(shí)施例中,云代理服務(wù)器對(duì)客戶端的請(qǐng)求消息進(jìn)行處理,為了加速處理進(jìn)程,云代理服務(wù)器首先會(huì)到云代理服務(wù)器的cache中查找是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)。若有,則直接將cache中存儲(chǔ)的數(shù)據(jù)返回至客戶端,若沒(méi)有,則采用純異步方式對(duì)數(shù)據(jù)請(qǐng)求消息進(jìn)行處理。
具體地,云代理服務(wù)器對(duì)客戶端的數(shù)據(jù)請(qǐng)求消息進(jìn)行異步之前,首先查找云代理服務(wù)器的緩存中是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),具體實(shí)施方式參照?qǐng)D5中步驟S502至步驟S506,若圖5中步驟S504的執(zhí)行結(jié)果為云代理服務(wù)器的緩存中沒(méi)有存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù),參照?qǐng)D9中的步驟S904至步驟S906執(zhí)行,在此不做過(guò)多贅述。
其中,圖6中的步驟S604,是對(duì)圖9中步驟S904至步驟S906執(zhí)行步驟的一個(gè)概述,在此也不做過(guò)多贅述。
實(shí)施例六
本發(fā)明實(shí)施例中,云代理服務(wù)器接收到客戶端發(fā)起的數(shù)據(jù)請(qǐng)求消息之后,首先查看該請(qǐng)求是否命中黑名單,若命中黑名單,告知客戶端請(qǐng)求消息對(duì)應(yīng)的url在云代理服務(wù)器上被設(shè)置為禁止訪問(wèn),若沒(méi)有命中黑名單,為了加速處理進(jìn)程,會(huì)到云代理服務(wù)器的cache中查找是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)。若cache中存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),則直接將cache中存儲(chǔ)的數(shù)據(jù)返回至客戶端,若沒(méi)有,則采用純異步方式對(duì)數(shù)據(jù)請(qǐng)求消息進(jìn)行處理。
具體地,云代理服務(wù)器對(duì)客戶端的連接請(qǐng)求消息進(jìn)行異步處理,首先將客戶端請(qǐng)求消息對(duì)應(yīng)的接收方與云代理服務(wù)器記錄的禁止訪問(wèn)的url的黑名單進(jìn)行比對(duì),具體實(shí)施方式請(qǐng)參照?qǐng)D2中的步驟S201至步驟S204,若獲取客戶端的請(qǐng)求消息對(duì)應(yīng)的url后沒(méi)有命中黑名單,到云代理服務(wù)器的緩存中查找是否存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù),具體實(shí)施方式請(qǐng)參照?qǐng)D5中的步驟S502至步驟S506,若圖5中的步驟S504的執(zhí)行結(jié)果為云代理服務(wù)器的緩存中沒(méi)有存儲(chǔ)有數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù),參照?qǐng)D9中的步驟S904至步驟S906執(zhí)行,在此不做過(guò)多贅述。
上述列舉的實(shí)施例四、實(shí)施例五、實(shí)施例六提供的方案均是采用組合形式,需要說(shuō)明地是,本發(fā)明的組合方式并不僅限于實(shí)施例四、實(shí)施例五、實(shí)施例六,還可以根據(jù)實(shí)際情況,形成其他組合,因此,實(shí)施例四、實(shí)施例五、實(shí)施例六中的組合對(duì)本發(fā)明并不造成限定。
在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要 求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)獲取裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是 通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開(kāi)的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
基于本發(fā)明的一個(gè)方面,還公開(kāi)了:A1、一種數(shù)據(jù)獲取方法,應(yīng)用于云代理服務(wù)器,包括:
接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息;
查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù);
若是,則從所述云代理服務(wù)器的緩存中讀取所述有效數(shù)據(jù),并返回所述客戶端。
A2、根據(jù)A1所述的方法,其中,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù),包括:
查找所述云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù);
若是,則進(jìn)一步判斷所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否未超過(guò)第一存儲(chǔ)時(shí)間閾值t1;
若是,則確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù);
若任一不符合,則確定所述緩存中的數(shù)據(jù)為無(wú)效數(shù)據(jù)。
A3、根據(jù)A2所述的方法,其中,確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù)之后,還包括:
若所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)所述t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則
進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器,由所述預(yù)取服務(wù)器針對(duì)所述數(shù)據(jù)請(qǐng)求消息發(fā)起預(yù)取請(qǐng)求,以獲得所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
A4、根據(jù)A3所述的方法,其中,進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器之后,還包括:
接收所述預(yù)取服務(wù)器返回的所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源;
判斷所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同;
若是,則保持所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)不變;
若否,則利用所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)。
A5、根據(jù)A1-A4任一項(xiàng)所述的方法,其中,查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)之后,還包括:
若否,則解析所述數(shù)據(jù)請(qǐng)求消息,確定其目的地;
與所述目的地建立連接,到所述目的地獲取與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源;
將獲取的資源返回至所述客戶端。
A6、根據(jù)A5所述的方法,其中,所述目的地包括:
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的其他客戶端;或者
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的遠(yuǎn)程服務(wù)器。
基于本發(fā)明的另一個(gè)方面,還公開(kāi)了:B7、一種數(shù)據(jù)獲取裝置,應(yīng)用于云代理服務(wù)器,包括:
接收模塊,適于接收來(lái)自客戶端的數(shù)據(jù)請(qǐng)求消息;
查找模塊,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù);
讀取模塊,適于若是,則從所述云代理服務(wù)器的緩存中讀取所述有效數(shù)據(jù);
傳輸模塊,適于將所述讀取模塊讀取的所述有效數(shù)據(jù)返回所述客戶端。
B8、根據(jù)B7所述的裝置,其中,所述查找模塊還適于:
查找所述云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù);
若是,則進(jìn)一步判斷所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間是否未超過(guò)第一存儲(chǔ)時(shí)間閾值t1;
若是,則確定所述緩存中的數(shù)據(jù)為有效數(shù)據(jù);
若任一不符合,則確定所述緩存中的數(shù)據(jù)為無(wú)效數(shù)據(jù)。
B9、根據(jù)B8所述的裝置,其中,還包括:
預(yù)取模塊,適于若所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的數(shù)據(jù)的存儲(chǔ)時(shí)間未超過(guò)所 述t1,但是超過(guò)設(shè)定的第二存儲(chǔ)時(shí)間閾值t2,其中,t2<t1,則
進(jìn)一步將所述數(shù)據(jù)請(qǐng)求消息轉(zhuǎn)發(fā)至預(yù)取服務(wù)器,由所述預(yù)取服務(wù)器針對(duì)所述數(shù)據(jù)請(qǐng)求消息發(fā)起預(yù)取請(qǐng)求,以獲得所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源。
B10、根據(jù)B9所述的裝置,其中,
所述接收模塊還適于接收所述預(yù)取服務(wù)器返回的所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源;
所述裝置還包括:
更新模塊,適于判斷所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源是否相同;若是,則保持所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)不變;若否,則利用所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的當(dāng)前資源更新所述數(shù)據(jù)請(qǐng)求消息在所述云代理服務(wù)器的緩存命中的數(shù)據(jù)。
B11、根據(jù)B7-B10任一項(xiàng)所述的裝置,其中,還包括:
獲取模塊,適于查找云代理服務(wù)器的緩存中是否存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息命中的有效數(shù)據(jù)之后,若否,則解析所述數(shù)據(jù)請(qǐng)求消息,確定其目的地;與所述目的地建立連接,到所述目的地獲取與所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源;將獲取的資源返回至所述客戶端。
B12、根據(jù)B11所述的裝置,其中,所述目的地包括:
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的其他客戶端;或者
存儲(chǔ)有所述數(shù)據(jù)請(qǐng)求消息對(duì)應(yīng)的資源的遠(yuǎn)程服務(wù)器。