亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法和裝置與流程

文檔序號(hào):11657530閱讀:699來(lái)源:國(guó)知局
網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法和裝置與流程

本發(fā)明實(shí)施例涉及信息處理技術(shù),尤其涉及一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法和裝置。



背景技術(shù):

網(wǎng)絡(luò)資源訪(fǎng)問(wèn)是互聯(lián)網(wǎng)發(fā)展離不開(kāi)的一項(xiàng)技術(shù),很多應(yīng)用場(chǎng)景都伴隨著網(wǎng)絡(luò)資源訪(fǎng)問(wèn)的發(fā)生,如訪(fǎng)問(wèn)網(wǎng)站、下載文件以及即時(shí)通訊等。然而,由于網(wǎng)絡(luò)條件時(shí)常不夠穩(wěn)定或者網(wǎng)絡(luò)環(huán)境不同導(dǎo)致的訪(fǎng)問(wèn)速度低下,很多網(wǎng)絡(luò)服務(wù)公司都會(huì)提供基于中轉(zhuǎn)服務(wù)器的網(wǎng)絡(luò)資源訪(fǎng)問(wèn)加速服務(wù),從而讓用戶(hù)可以更加穩(wěn)定和高速地進(jìn)行網(wǎng)絡(luò)資源訪(fǎng)問(wèn)。

在大量用戶(hù)需要使用上述服務(wù)的情況下,中轉(zhuǎn)服務(wù)器就需要提供高并發(fā)的網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)服務(wù),以支持大規(guī)模用戶(hù)的同時(shí)使用。為了實(shí)現(xiàn)對(duì)于高并發(fā)的支持,目前主流的方案是提高中轉(zhuǎn)服務(wù)器的硬件性能,如處理器、網(wǎng)絡(luò)帶寬等,以同時(shí)處理大規(guī)模的用戶(hù)請(qǐng)求。

但是,硬件性能的提高往往需要投入更多的成本,且在硬件性能無(wú)法繼續(xù)提高的情況下,現(xiàn)有技術(shù)無(wú)法為我們提供其他有效的實(shí)現(xiàn)方式,以提高中轉(zhuǎn)服務(wù)器的高并發(fā)性能。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法和裝置,以提供一種以軟件方式提高中轉(zhuǎn)服務(wù)器高并發(fā)性能的新方法。

第一方面,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法,包括:

中轉(zhuǎn)服務(wù)器獲取用戶(hù)發(fā)送的指向代理服務(wù)器的網(wǎng)絡(luò)資源請(qǐng)求;

所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中,其中,所述兩個(gè)待處理任務(wù)分別指向所述代理服務(wù)器以及所述用戶(hù);

所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),并通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理。

進(jìn)一步的,所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中包括:

所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為第一待處理任務(wù)以及第二待處理任務(wù);

其中,所述第一待處理任務(wù),指向所述代理服務(wù)器,用于向所述代理服務(wù)器請(qǐng)求所述用戶(hù)所需的網(wǎng)絡(luò)資源,所述第二待處理任務(wù),指向所述用戶(hù),用于向所述用戶(hù)轉(zhuǎn)發(fā)所述代理服務(wù)器返回的網(wǎng)絡(luò)資源;

所述中轉(zhuǎn)服務(wù)器將與各所述待處理任務(wù)分別對(duì)應(yīng)的任務(wù)處理參數(shù)附加在對(duì)應(yīng)的待處理任務(wù)中;

所述中轉(zhuǎn)服務(wù)器將添加所述任務(wù)處理參數(shù)后的所述兩個(gè)待處理任務(wù)分別添加至所述本地消息隊(duì)列的尾部。

進(jìn)一步的,所述任務(wù)處理參數(shù)包括:任務(wù)所需的網(wǎng)絡(luò)連接參數(shù),和/或任務(wù)類(lèi)型。

進(jìn)一步的,所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),包括:

所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù)。

進(jìn)一步的,所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理,包括:

如果所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程使用非阻塞的通信方式,將所述第一目標(biāo)任務(wù)轉(zhuǎn)發(fā)給所述代理服務(wù)器,以使所述代理服務(wù)器返回用戶(hù)所需的網(wǎng)絡(luò)資源;

如果所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取的任務(wù)為指向用戶(hù)的第二目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程獲取與所述第二目標(biāo)任務(wù)對(duì)應(yīng)的網(wǎng)絡(luò)資源,并使用非阻塞的通信方式,將獲取的所述網(wǎng)絡(luò)資源轉(zhuǎn)發(fā)給對(duì)應(yīng)的用戶(hù)。

在第二方面,本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置,配置于中轉(zhuǎn)服務(wù)器中,包括:

網(wǎng)絡(luò)資源請(qǐng)求獲取模塊,用于獲取用戶(hù)發(fā)送的指向代理服務(wù)器的網(wǎng)絡(luò)資源請(qǐng)求;

網(wǎng)絡(luò)資源請(qǐng)求分解模塊,用于將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中,其中,所述兩個(gè)待處理任務(wù)分別指向所述代理服務(wù)器以及所述用戶(hù);

任務(wù)處理模塊,用于通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),并通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理。

進(jìn)一步的,所述網(wǎng)絡(luò)資源請(qǐng)求分解模塊,具體用于:

將所述網(wǎng)絡(luò)資源請(qǐng)求分解為第一待處理任務(wù)以及第二待處理任務(wù);

其中,所述第一待處理任務(wù),指向所述代理服務(wù)器,用于向所述代理服務(wù)器請(qǐng)求所述用戶(hù)所需的網(wǎng)絡(luò)資源,所述第二待處理任務(wù),指向所述用戶(hù),用于向所述用戶(hù)轉(zhuǎn)發(fā)所述代理服務(wù)器返回的網(wǎng)絡(luò)資源;

將與各所述待處理任務(wù)分別對(duì)應(yīng)的任務(wù)處理參數(shù)附加在對(duì)應(yīng)的待處理任務(wù)中;

將附加所述任務(wù)處理參數(shù)后的所述兩個(gè)待處理任務(wù)分別添加至所述本地消息隊(duì)列的尾部。

進(jìn)一步的,所述任務(wù)處理參數(shù)包括:任務(wù)所需的網(wǎng)絡(luò)連接參數(shù),和/或任務(wù)類(lèi)型。

進(jìn)一步的,所述任務(wù)處理模塊,進(jìn)一步用于:

通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù)。

進(jìn)一步的,所述任務(wù)處理模塊,進(jìn)一步用于:

如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程使用非阻塞的通信方式,將所述第一目標(biāo)任務(wù)轉(zhuǎn)發(fā)給所述代理服務(wù)器,以使所述代理服務(wù)器返回用戶(hù)所需的網(wǎng)絡(luò)資源;

如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向用戶(hù)的第二目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程獲取與所述第二目標(biāo)任務(wù)對(duì)應(yīng)的網(wǎng)絡(luò)資源,并使用非阻塞的通信方式,將獲取的所述網(wǎng)絡(luò)資源轉(zhuǎn)發(fā)給對(duì)應(yīng)的用戶(hù)。

本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法和裝置,中轉(zhuǎn)服務(wù)器將用戶(hù)發(fā)送的一個(gè)向代理服務(wù)器請(qǐng)求網(wǎng)絡(luò)資源的請(qǐng)求,分解兩個(gè)彼此獨(dú)立的待處理任務(wù)后添加至本地消息隊(duì)列中,并通過(guò)線(xiàn)程使用非阻塞的通信方式對(duì)本地消息隊(duì)列中的緩存的任務(wù)進(jìn)行處理,解決了高并發(fā)下,網(wǎng)絡(luò)通信容易阻塞進(jìn)而產(chǎn)生較長(zhǎng)時(shí)延的問(wèn)題,此外,在中轉(zhuǎn)服務(wù)器中使用本地消息隊(duì)列將用戶(hù)的網(wǎng)絡(luò)請(qǐng)求進(jìn)行緩存,再使用線(xiàn)程池的方式通過(guò)多線(xiàn)程對(duì)其進(jìn)行依次處理,可以并發(fā)地處理大規(guī)模的用戶(hù)請(qǐng)求,從而支持多用戶(hù)的高并發(fā)訪(fǎng)問(wèn),同時(shí),本發(fā)明實(shí)施例的技術(shù)方案能夠使網(wǎng)絡(luò)服務(wù)提供商便捷地開(kāi)發(fā)出支持高并發(fā)的網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)服務(wù)。

附圖說(shuō)明

圖1是本發(fā)明實(shí)施例一中的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法的流程圖;

圖2a是本發(fā)明實(shí)施例二中的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法的流程圖;

圖2b是本發(fā)明實(shí)施例所適用的一種網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)系統(tǒng)的結(jié)構(gòu)示意圖;

圖3是本發(fā)明實(shí)施例三中的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置的結(jié)構(gòu)圖。

具體實(shí)施方式

下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部?jī)?nèi)容,除非另有定義,本文所使用的所有技術(shù)和科學(xué)術(shù)語(yǔ)與屬于本發(fā)明的技術(shù)領(lǐng)域的技術(shù)人員通常理解的含義相同。本文中所使用的術(shù)語(yǔ)只是為了描述具體的實(shí)施例,不是旨在于限制本發(fā)明。

另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部?jī)?nèi)容。在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作(或步驟)描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對(duì)應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。

實(shí)施例一

圖1為本發(fā)明實(shí)施例一提供的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法的流程圖,本實(shí)施例可適用于使用中轉(zhuǎn)服務(wù)器提供網(wǎng)絡(luò)資源訪(fǎng)問(wèn)加速服務(wù)的情況,該方法可以由本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置來(lái)執(zhí)行,該裝置可采用軟件和/或硬件的方式實(shí)現(xiàn),并一般可集成在中轉(zhuǎn)服務(wù)器中。如圖1所示,本實(shí)施例的方法具體包括:

s110、中轉(zhuǎn)服務(wù)器獲取用戶(hù)發(fā)送的指向代理服務(wù)器的網(wǎng)絡(luò)資源請(qǐng)求。

在本實(shí)施例中,所述中轉(zhuǎn)服務(wù)器在獲取用戶(hù)發(fā)送的網(wǎng)絡(luò)資源請(qǐng)求后,向?qū)?yīng)的代理服務(wù)器獲取所述用戶(hù)請(qǐng)求的資源,之后將該資源轉(zhuǎn)發(fā)至對(duì)應(yīng)的用戶(hù),以使用戶(hù)可以更加穩(wěn)定和高速地進(jìn)行網(wǎng)絡(luò)資源訪(fǎng)問(wèn)。

其中,用戶(hù)向中轉(zhuǎn)服務(wù)器發(fā)送的網(wǎng)絡(luò)請(qǐng)求可以是基于tcp(transmissioncontrolprotocol,傳輸控制協(xié)議)協(xié)議的任何形式,如ftp(filetransferprotocol,文件傳輸協(xié)議)、http(hypertexttransferprotocol),超文本傳輸協(xié)議)和https(hypertexttransferprotocoloversecuresocketlayer,超文本傳輸協(xié)議安全版)等,本實(shí)施例對(duì)此并不進(jìn)行限制。

s120、所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中。

在現(xiàn)有技術(shù)中,所述中轉(zhuǎn)服務(wù)器在獲取用戶(hù)發(fā)送的一個(gè)網(wǎng)絡(luò)資源請(qǐng)求時(shí),會(huì)將該網(wǎng)絡(luò)資源請(qǐng)求作為一個(gè)整體進(jìn)行處理,對(duì)于中轉(zhuǎn)服務(wù)器中的一個(gè)線(xiàn)程來(lái)說(shuō),在該線(xiàn)程當(dāng)前處理的網(wǎng)絡(luò)資源請(qǐng)求沒(méi)有處理完成前,其不能處理其他任務(wù)。

現(xiàn)有技術(shù)的上述設(shè)置會(huì)有一個(gè)比較明顯的缺陷,例如,當(dāng)中轉(zhuǎn)服務(wù)器端到代理服務(wù)器端的網(wǎng)絡(luò)發(fā)生故障,而中轉(zhuǎn)服務(wù)器端到用戶(hù)端的網(wǎng)絡(luò)完好時(shí),由于必須將一個(gè)網(wǎng)絡(luò)資源請(qǐng)求作為一個(gè)整體進(jìn)行處理,則整個(gè)系統(tǒng)都會(huì)等待中轉(zhuǎn)服務(wù)器端到代理服務(wù)器端的網(wǎng)絡(luò)完好后才能持續(xù)處理,而無(wú)法正常使用中轉(zhuǎn)服務(wù)器端到用戶(hù)端的網(wǎng)絡(luò)。

基于此,發(fā)明人創(chuàng)造性的提出將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù)的方案,從而在軟件上提高中轉(zhuǎn)服務(wù)器的高并發(fā)性能。

其中,所述兩個(gè)待處理任務(wù)分別指向所述代理服務(wù)器以及所述用戶(hù)。也即:一個(gè)待處理任務(wù)用于向代理服務(wù)器請(qǐng)求用戶(hù)所需的網(wǎng)絡(luò)資源(指向所述代理服務(wù)器),一個(gè)待處理用于向用戶(hù)轉(zhuǎn)發(fā)代理服務(wù)器反饋的網(wǎng)絡(luò)資源(指向用戶(hù))。上述兩個(gè)待處理任務(wù)之間彼此獨(dú)立,沒(méi)有任何依賴(lài)關(guān)系,基于此,可以將一個(gè)網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),以實(shí)現(xiàn)將中轉(zhuǎn)服務(wù)器到代理服務(wù)器端的網(wǎng)絡(luò)性能,與中轉(zhuǎn)服務(wù)器到用戶(hù)端的網(wǎng)絡(luò)性能獨(dú)立開(kāi)來(lái)。

s130、所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),并通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理。

其中,所述中轉(zhuǎn)服務(wù)器的線(xiàn)程池中維護(hù)了多個(gè)用于處理任務(wù)的線(xiàn)程,每個(gè)空閑的線(xiàn)程可以按照先進(jìn)先出的處理機(jī)制從本地消息隊(duì)列中緩存的待處理任務(wù)中獲取一個(gè)任務(wù)進(jìn)行處理。

在本實(shí)施例中,所述非阻塞的通信方式具體是指一個(gè)線(xiàn)程在處理完一個(gè)任務(wù)之前,如果該任務(wù)因?yàn)楦鞣N原因未能成功處理完成,則該進(jìn)程可以中斷對(duì)該任務(wù)的處理,而重新處理新的任務(wù)。相對(duì)應(yīng)的,阻塞的通信方式具體是指,一個(gè)線(xiàn)程在處理完成一個(gè)任務(wù)之前,不會(huì)去處理一個(gè)新的任務(wù)。

在本實(shí)施例中,中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程使用非阻塞的socket(套接字)通信方式,以支持所有基于tcp的網(wǎng)絡(luò)傳輸協(xié)議。這樣設(shè)置的好處是:非阻塞的通信方式使得網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送以及接收更為高效,即使當(dāng)前線(xiàn)程沒(méi)有處理好當(dāng)前的網(wǎng)絡(luò)數(shù)據(jù),也不會(huì)影響后續(xù)網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收。

本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法,中轉(zhuǎn)服務(wù)器將用戶(hù)發(fā)送的一個(gè)向代理服務(wù)器請(qǐng)求網(wǎng)絡(luò)資源的請(qǐng)求,分解兩個(gè)彼此獨(dú)立的待處理任務(wù)后添加至本地消息隊(duì)列中,并通過(guò)線(xiàn)程使用非阻塞的通信方式對(duì)本地消息隊(duì)列中的緩存的任務(wù)進(jìn)行處理,解決了高并發(fā)下,網(wǎng)絡(luò)通信容易阻塞進(jìn)而產(chǎn)生較長(zhǎng)時(shí)延的問(wèn)題,此外,在中轉(zhuǎn)服務(wù)器中使用本地消息隊(duì)列將用戶(hù)的網(wǎng)絡(luò)請(qǐng)求進(jìn)行緩存,再使用線(xiàn)程池的方式通過(guò)多線(xiàn)程對(duì)其進(jìn)行依次處理,可以并發(fā)地處理大規(guī)模的用戶(hù)請(qǐng)求,從而支持多用戶(hù)的高并發(fā)訪(fǎng)問(wèn),同時(shí),本發(fā)明實(shí)施例的技術(shù)方案能夠使網(wǎng)絡(luò)服務(wù)提供商便捷地開(kāi)發(fā)出支持高并發(fā)的網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)服務(wù)。

實(shí)施例二

圖2a是本發(fā)明實(shí)施例二提供的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法的流程圖,本實(shí)施例以上述實(shí)施例為基礎(chǔ)進(jìn)行優(yōu)化,在本實(shí)施例中,將所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中具體優(yōu)化為:所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為第一待處理任務(wù)以及第二待處理任務(wù);所述中轉(zhuǎn)服務(wù)器將與各所述待處理任務(wù)分別對(duì)應(yīng)的任務(wù)處理參數(shù)附加在對(duì)應(yīng)的待處理任務(wù)中;所述中轉(zhuǎn)服務(wù)器將添加所述任務(wù)處理參數(shù)后的所述兩個(gè)待處理任務(wù)分別添加至所述本地消息隊(duì)列的尾部;

以及,將所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),具體優(yōu)化為:所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù);

同時(shí),將所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理,具體優(yōu)化為:如果所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程使用非阻塞的通信方式,將所述第一目標(biāo)任務(wù)轉(zhuǎn)發(fā)給所述代理服務(wù)器,以使所述代理服務(wù)器返回用戶(hù)所需的網(wǎng)絡(luò)資源;如果所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取的任務(wù)為指向用戶(hù)的第二目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程獲取與所述第二目標(biāo)任務(wù)對(duì)應(yīng)的網(wǎng)絡(luò)資源,并使用非阻塞的通信方式,將獲取的所述網(wǎng)絡(luò)資源轉(zhuǎn)發(fā)給對(duì)應(yīng)的用戶(hù)。

相應(yīng)的,本實(shí)施例的方法具體包括:

s210、中轉(zhuǎn)服務(wù)器獲取用戶(hù)發(fā)送的指向代理服務(wù)器的網(wǎng)絡(luò)資源請(qǐng)求。

s220、所述中轉(zhuǎn)服務(wù)器將所述網(wǎng)絡(luò)資源請(qǐng)求分解為第一待處理任務(wù)以及第二待處理任務(wù)。

其中,所述第一待處理任務(wù),指向所述代理服務(wù)器,用于向所述代理服務(wù)器請(qǐng)求所述用戶(hù)所需的網(wǎng)絡(luò)資源,所述第二待處理任務(wù),指向所述用戶(hù),用于向所述用戶(hù)轉(zhuǎn)發(fā)所述代理服務(wù)器返回的網(wǎng)絡(luò)資源。

s230、所述中轉(zhuǎn)服務(wù)器將與各所述待處理任務(wù)分別對(duì)應(yīng)的任務(wù)處理參數(shù)附加在對(duì)應(yīng)的待處理任務(wù)中。

在本實(shí)施例中,所述任務(wù)處理參數(shù)包括:任務(wù)所需的網(wǎng)絡(luò)連接參數(shù),和/或任務(wù)類(lèi)型。

s240、所述中轉(zhuǎn)服務(wù)器將添加所述任務(wù)處理參數(shù)后的所述兩個(gè)待處理任務(wù)分別添加至所述本地消息隊(duì)列的尾部。

在本實(shí)施例中,中轉(zhuǎn)服務(wù)器根據(jù)網(wǎng)絡(luò)數(shù)據(jù)的傳輸方向?qū)⒄麄€(gè)中轉(zhuǎn)服務(wù)分解為兩類(lèi)任務(wù),第一類(lèi)任務(wù)接受用戶(hù)的網(wǎng)絡(luò)資源請(qǐng)求并轉(zhuǎn)發(fā)至代理服務(wù)器,第二類(lèi)任務(wù)接受代理服務(wù)器的數(shù)據(jù)(也即,網(wǎng)絡(luò)資源)并返回給用戶(hù)。這兩類(lèi)任務(wù)之間互相沒(méi)有依賴(lài)關(guān)系,是非阻塞的形式。

相應(yīng)的,一個(gè)網(wǎng)絡(luò)資源請(qǐng)求會(huì)被分解為兩個(gè)任務(wù),一類(lèi)任務(wù)各一個(gè)。在分解完任務(wù)后,中轉(zhuǎn)服務(wù)器將每個(gè)任務(wù)中所需的網(wǎng)絡(luò)連接、任務(wù)類(lèi)型作為相關(guān)數(shù)據(jù)和任務(wù)一起添加進(jìn)本地消息隊(duì)列尾部,該本地消息隊(duì)列用以緩存所有需要處理的任務(wù)及其所需的數(shù)據(jù)。

s250、所述中轉(zhuǎn)服務(wù)器通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù)。

在本實(shí)施例中,中轉(zhuǎn)服務(wù)器的線(xiàn)程池中維護(hù)了若干個(gè)用以實(shí)際處理任務(wù)的線(xiàn)程,這些線(xiàn)程將不斷地從本地消息隊(duì)列中取出所需執(zhí)行的任務(wù)及相關(guān)數(shù)據(jù),當(dāng)本地消息隊(duì)列中沒(méi)有任何任務(wù)時(shí),線(xiàn)程將處于阻塞狀態(tài),從而不產(chǎn)生系統(tǒng)資源的消耗。

s260、所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程判斷獲取的任務(wù)類(lèi)型:如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù),則執(zhí)行s270;如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向用戶(hù)的第二目標(biāo)任務(wù),則執(zhí)行s280。

s270、所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程使用非阻塞的通信方式,將所述第一目標(biāo)任務(wù)轉(zhuǎn)發(fā)給所述代理服務(wù)器,以使所述代理服務(wù)器返回用戶(hù)所需的網(wǎng)絡(luò)資源。

在本實(shí)施例中,在中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù)時(shí),則將第一目標(biāo)任務(wù)以非阻塞的通信方式,發(fā)送給代理服務(wù)器。

其中,所述代理服務(wù)器在接收到第一目標(biāo)任務(wù)后,實(shí)時(shí)獲取用戶(hù)所請(qǐng)求的網(wǎng)絡(luò)資源。具體的,在所述代理服務(wù)器接收到所述第一目標(biāo)任務(wù)后,利用所述代理服務(wù)器本地的網(wǎng)絡(luò)代理模塊,完成對(duì)所述第一目標(biāo)任務(wù)所請(qǐng)求的網(wǎng)絡(luò)資源的獲取。之后,所述代理服務(wù)器可以同樣使用非阻塞的通信方式,將網(wǎng)絡(luò)資源返回給中轉(zhuǎn)服務(wù)器中的線(xiàn)程。

s280、所述中轉(zhuǎn)服務(wù)器通過(guò)所述線(xiàn)程獲取與所述第二目標(biāo)任務(wù)對(duì)應(yīng)的網(wǎng)絡(luò)資源,并使用非阻塞的通信方式,將獲取的所述網(wǎng)絡(luò)資源轉(zhuǎn)發(fā)給對(duì)應(yīng)的用戶(hù)。

本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法,中轉(zhuǎn)服務(wù)器將用戶(hù)發(fā)送的一個(gè)向代理服務(wù)器請(qǐng)求網(wǎng)絡(luò)資源的請(qǐng)求,分解兩個(gè)彼此獨(dú)立的待處理任務(wù)后添加至本地消息隊(duì)列中,并通過(guò)線(xiàn)程使用非阻塞的通信方式對(duì)本地消息隊(duì)列中的緩存的任務(wù)進(jìn)行處理,解決了高并發(fā)下,網(wǎng)絡(luò)通信容易阻塞進(jìn)而產(chǎn)生較長(zhǎng)時(shí)延的問(wèn)題,此外,在中轉(zhuǎn)服務(wù)器中使用本地消息隊(duì)列將用戶(hù)的網(wǎng)絡(luò)請(qǐng)求進(jìn)行緩存,再使用線(xiàn)程池的方式通過(guò)多線(xiàn)程對(duì)其進(jìn)行依次處理,可以并發(fā)地處理大規(guī)模的用戶(hù)請(qǐng)求,從而支持多用戶(hù)的高并發(fā)訪(fǎng)問(wèn),同時(shí),本發(fā)明實(shí)施例的技術(shù)方案能夠使網(wǎng)絡(luò)服務(wù)提供商便捷地開(kāi)發(fā)出支持高并發(fā)的網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)服務(wù)。

進(jìn)一步的,本實(shí)施例中通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù),可以進(jìn)一步減少系統(tǒng)資源的浪費(fèi)。

具體應(yīng)用場(chǎng)景

圖2b是本發(fā)明實(shí)施例所適用的一種網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)系統(tǒng)的結(jié)構(gòu)示意圖。如圖2b所示,該系統(tǒng)包括:

用戶(hù)交互模塊,用于實(shí)現(xiàn)和用戶(hù)之間的通信交互,在接收到用戶(hù)對(duì)網(wǎng)絡(luò)資源的訪(fǎng)問(wèn)請(qǐng)求后,將其分解為彼此獨(dú)立的兩個(gè)任務(wù),發(fā)送給消息隊(duì)列;

消息隊(duì)列,用于緩存用戶(hù)交互模塊發(fā)送來(lái)的任務(wù),并提供給線(xiàn)程池中的線(xiàn)程;

線(xiàn)程池,用于管理線(xiàn)程,負(fù)責(zé)維護(hù)全部線(xiàn)程的生命周期;當(dāng)系統(tǒng)被初始化時(shí),完成對(duì)全部線(xiàn)程的創(chuàng)建工作;在線(xiàn)程運(yùn)行過(guò)程中,負(fù)責(zé)調(diào)度線(xiàn)程獲取并完成消息隊(duì)列中的任務(wù);

線(xiàn)程,用于獲取和完成消息隊(duì)列中的任務(wù);采用阻塞的形式向消息隊(duì)列獲取其中的任務(wù),當(dāng)消息隊(duì)列為空時(shí),該線(xiàn)程將被阻塞直到消息隊(duì)列不為空;當(dāng)獲消息隊(duì)列不為空時(shí),獲取其中最新的一條任務(wù),然后根據(jù)任務(wù)需求使用非阻塞的通信方式與網(wǎng)絡(luò)代理模塊進(jìn)行通信以完成任務(wù);

網(wǎng)絡(luò)代理模塊,用于接受線(xiàn)程發(fā)送過(guò)來(lái)的任務(wù),并實(shí)際完成相關(guān)的網(wǎng)絡(luò)請(qǐng)求然后返回給線(xiàn)程。

實(shí)施例三

圖3為本發(fā)明實(shí)施例三提供的一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置的結(jié)構(gòu)示意圖,所述裝置配置于中轉(zhuǎn)服務(wù)器中,如圖3所示,所述裝置包括:網(wǎng)絡(luò)資源請(qǐng)求獲取模塊310、網(wǎng)絡(luò)資源請(qǐng)求分解模塊320、以及任務(wù)處理模塊330。其中:

網(wǎng)絡(luò)資源請(qǐng)求獲取模塊310,用于獲取用戶(hù)發(fā)送的指向代理服務(wù)器的網(wǎng)絡(luò)資源請(qǐng)求。

網(wǎng)絡(luò)資源請(qǐng)求分解模塊320,用于將所述網(wǎng)絡(luò)資源請(qǐng)求分解為兩個(gè)待處理任務(wù),并將所述兩個(gè)待處理任務(wù)添加至本地消息隊(duì)列中,其中,所述兩個(gè)待處理任務(wù)分別指向所述代理服務(wù)器以及所述用戶(hù)。

任務(wù)處理模塊330,用于通過(guò)線(xiàn)程池中的線(xiàn)程獲取所述本地消息隊(duì)列中的任務(wù),并通過(guò)所述線(xiàn)程使用非阻塞的通信方式對(duì)所述任務(wù)進(jìn)行處理。

本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置,中轉(zhuǎn)服務(wù)器將用戶(hù)發(fā)送的一個(gè)向代理服務(wù)器請(qǐng)求網(wǎng)絡(luò)資源的請(qǐng)求,分解兩個(gè)彼此獨(dú)立的待處理任務(wù)后添加至本地消息隊(duì)列中,并通過(guò)線(xiàn)程使用非阻塞的通信方式對(duì)本地消息隊(duì)列中的緩存的任務(wù)進(jìn)行處理,解決了高并發(fā)下,網(wǎng)絡(luò)通信容易阻塞進(jìn)而產(chǎn)生較長(zhǎng)時(shí)延的問(wèn)題,此外,在中轉(zhuǎn)服務(wù)器中使用本地消息隊(duì)列將用戶(hù)的網(wǎng)絡(luò)請(qǐng)求進(jìn)行緩存,再使用線(xiàn)程池的方式通過(guò)多線(xiàn)程對(duì)其進(jìn)行依次處理,可以并發(fā)地處理大規(guī)模的用戶(hù)請(qǐng)求,從而支持多用戶(hù)的高并發(fā)訪(fǎng)問(wèn),同時(shí),本發(fā)明實(shí)施例的技術(shù)方案能夠使網(wǎng)絡(luò)服務(wù)提供商便捷地開(kāi)發(fā)出支持高并發(fā)的網(wǎng)絡(luò)請(qǐng)求中轉(zhuǎn)服務(wù)。

在上述各實(shí)施例的基礎(chǔ)上,所述網(wǎng)絡(luò)資源請(qǐng)求分解模塊,具體可以用于:

將所述網(wǎng)絡(luò)資源請(qǐng)求分解為第一待處理任務(wù)以及第二待處理任務(wù);

其中,所述第一待處理任務(wù),指向所述代理服務(wù)器,用于向所述代理服務(wù)器請(qǐng)求所述用戶(hù)所需的網(wǎng)絡(luò)資源,所述第二待處理任務(wù),指向所述用戶(hù),用于向所述用戶(hù)轉(zhuǎn)發(fā)所述代理服務(wù)器返回的網(wǎng)絡(luò)資源;

將與各所述待處理任務(wù)分別對(duì)應(yīng)的任務(wù)處理參數(shù)附加在對(duì)應(yīng)的待處理任務(wù)中;

將附加所述任務(wù)處理參數(shù)后的所述兩個(gè)待處理任務(wù)分別添加至所述本地消息隊(duì)列的尾部。

在上述各實(shí)施例的基礎(chǔ)上,所述任務(wù)處理參數(shù)可以包括:任務(wù)所需的網(wǎng)絡(luò)連接參數(shù),和/或任務(wù)類(lèi)型。

在上述各實(shí)施例的基礎(chǔ)上,所述任務(wù)處理模塊,進(jìn)一步可以用于:

通過(guò)線(xiàn)程池中的線(xiàn)程,以阻塞的方式,獲取所述本地消息隊(duì)列中的任務(wù)。

在上述各實(shí)施例的基礎(chǔ)上,所述任務(wù)處理模塊,進(jìn)一步可以用于:

如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向所述代理服務(wù)器的第一目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程使用非阻塞的通信方式,將所述第一目標(biāo)任務(wù)轉(zhuǎn)發(fā)給所述代理服務(wù)器,以使所述代理服務(wù)器返回用戶(hù)所需的網(wǎng)絡(luò)資源;

如果通過(guò)所述線(xiàn)程獲取的任務(wù)為指向用戶(hù)的第二目標(biāo)任務(wù),則通過(guò)所述線(xiàn)程獲取與所述第二目標(biāo)任務(wù)對(duì)應(yīng)的網(wǎng)絡(luò)資源,并使用非阻塞的通信方式,將獲取的所述網(wǎng)絡(luò)資源轉(zhuǎn)發(fā)給對(duì)應(yīng)的用戶(hù)。

上述網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)裝置可執(zhí)行本發(fā)明任意實(shí)施例所提供的網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法,具備執(zhí)行網(wǎng)絡(luò)請(qǐng)求的中轉(zhuǎn)方法相應(yīng)的功能模塊和有益效果。

本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(read-onlymemory,rom)或隨機(jī)存儲(chǔ)記憶體(randomaccessmemory,ram)等。

注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1