專利名稱:處理用戶訪問網(wǎng)頁的請求的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及處理用戶訪問網(wǎng)頁的請求的方法及系統(tǒng)。
背景技術(shù):
瀏覽器是用來從網(wǎng)站獲取網(wǎng)頁內(nèi)容的工具軟件。一般而言,它必須具備解析網(wǎng)頁上的各種元素的能力,解析完成之后,要進(jìn)行頁面各個(gè)元素的定位計(jì)算。然后,瀏覽器在調(diào)用基于平臺的AP I來完成頁面的繪制,最終頁面上的各種元素才會(huì)顯示在用戶面前。這個(gè)過程在PC上是一個(gè)很順暢的過程,但是在手機(jī)等移動(dòng)終端上,由于移動(dòng)通信技術(shù)的限制, 目前移動(dòng)終端上網(wǎng)不可能達(dá)到以太網(wǎng)所能夠達(dá)到的傳輸速度,另外,由于一些移動(dòng)終端的硬件處理能力有限,而渲染、排版和繪制網(wǎng)頁頁面會(huì)耗費(fèi)大量的資源進(jìn)行計(jì)算,對于這些處理能力有限的移動(dòng)終端來說,需要消耗的 時(shí)間和電量等開銷就好比較大,為了解決這些問題,基于服務(wù)器渲染排版的技術(shù)便應(yīng)運(yùn)而生了。該技術(shù)把耗時(shí)且費(fèi)資源的操作封裝在服務(wù)端,使用這種技術(shù)的瀏覽器通常被設(shè)計(jì)為C/S (客戶端/代理服務(wù)器)架構(gòu)。在這種架構(gòu)下,用戶訪問網(wǎng)頁的請求會(huì)被瀏覽器的客戶端發(fā)送到代理服務(wù)器端,代理服務(wù)器向網(wǎng)頁服務(wù)器發(fā)送訪問網(wǎng)頁的請求,并獲取到網(wǎng)頁資源之后,能夠?qū)Υ罅髁康馁Y源進(jìn)行壓縮和處理,然后將壓縮和處理過的數(shù)據(jù)發(fā)送至客戶端,客戶端只需對數(shù)據(jù)做簡單的操作就能顯示網(wǎng)頁內(nèi)容。這種輕客戶端的模式降低了對移動(dòng)終端的要求,但是又能夠在移動(dòng)終端用戶使用的網(wǎng)絡(luò)低速,以及移動(dòng)設(shè)備的處理能力有限的情形下,也能獲得比較好的用戶體驗(yàn)。所以目前這種基于服務(wù)端渲染排版的模式在手機(jī)等移動(dòng)終端使用的瀏覽器上大行其道,并且該技術(shù)向著客戶端更輕量化、服務(wù)端更重量化的方向發(fā)展,例如,服務(wù)端負(fù)責(zé)大流量資源文件的壓縮、頁面的解析、頁面的定位計(jì)算和頁面的排版,以及將排版后的結(jié)構(gòu)體轉(zhuǎn)換為能夠讓客戶端解析出來的二進(jìn)制數(shù)據(jù),這樣客戶端直接根據(jù)對這些二進(jìn)制數(shù)據(jù)進(jìn)行解析,然后進(jìn)行相應(yīng)的繪制及顯示即可。這種發(fā)展方向有利于降低對移動(dòng)終端硬件性能的要求,但是其缺點(diǎn)在于由于服務(wù)端需要處理的工作大幅增加了,而所有使用其客戶端的用戶請求都會(huì)發(fā)送到服務(wù)端,由服務(wù)端進(jìn)行處理,因此,在同一時(shí)間段內(nèi)多個(gè)用戶請求并發(fā)的情況下,可能會(huì)降低服務(wù)端的響應(yīng)速度,結(jié)果反而降低了用戶的移動(dòng)終端上瀏覽器的響應(yīng)速度。
發(fā)明內(nèi)容
本發(fā)明提供了處理用戶訪問網(wǎng)頁的請求的方法及系統(tǒng),能夠在大用戶量并發(fā)的情況下,提高代理服務(wù)器的響應(yīng)速度。本發(fā)明提供了如下方案一種處理用戶訪問網(wǎng)頁的請求方法,在同一臺代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,所述方法包括在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程;在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元;通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。其中,將同一用戶的不同請求分配給同一進(jìn)程。其中,所述在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程,包括根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求;
如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程。其中,所述根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求包括獲取所述當(dāng)前請求對應(yīng)的用戶的屬性信息;如果當(dāng)前請求對應(yīng)的用戶的屬性信息未出現(xiàn)在所述歷史分配記錄中,則所述當(dāng)前請求為新用戶的請求;其中,所述歷史分配記錄用于記錄在歷史處理過程中,用戶請求對應(yīng)的用戶的屬性信息與分配給該用戶請求的進(jìn)程之間的對應(yīng)關(guān)系。其中,所述如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程,包括如果所述當(dāng)前請求不是新用戶的請求,并且歷史分配記錄中該用戶的屬性信息對應(yīng)的進(jìn)程包含空閑的處理單元,則將該進(jìn)程分配給當(dāng)前請求。其中,所述歷史分配記錄中還記錄有用戶請求對應(yīng)的用戶的屬性信息與分配給請求的處理單元之間的對應(yīng)關(guān)系;所述在分配的進(jìn)程中為所述請求分配處理單元,包括將歷史分配記錄中該用戶的屬性信息對應(yīng)的處理單元分配給當(dāng)前請求。其中,還包括如果當(dāng)前請求是新用戶的請求,則將當(dāng)前具有最多空閑處理單元的進(jìn)程分配給當(dāng)前請求。其中,還包括如果全部進(jìn)程中都不存在空閑處理單元,則判斷是否存在處理時(shí)間超時(shí)的處理單元,如果是,則將該處理單元所在的進(jìn)程分配給當(dāng)前請求;所述在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元包括將所述處理時(shí)間超時(shí)的處理單元的當(dāng)前任務(wù)結(jié)束,并將其分配給當(dāng)前請求。其中,所述代理服務(wù)器為至少兩個(gè),所述方法還包括為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器。其中,所述為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器包括對各代理服務(wù)器進(jìn)行實(shí)時(shí)的心跳監(jiān)控,將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中;從所述可用代理服務(wù)器列表中為當(dāng)前請求分配代理服務(wù)器。其中,還包括將未能監(jiān)測到心跳信息的代理服務(wù)器從所述可用代理服務(wù)器列表中刪除;當(dāng)重新監(jiān)測到代理服務(wù)器的心跳信息時(shí),將其加入到所述可用代理服務(wù)器列表中。一種處理用戶訪問網(wǎng)頁的請求系統(tǒng),在同一臺代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,所述系統(tǒng)包括進(jìn)程分配模塊,用于在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為所述各個(gè)用戶的當(dāng)前請求分配進(jìn)程;處理單元分配模塊,用于在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元;網(wǎng)頁內(nèi)容處理模塊,用于通過所 述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。其中,將同一用戶的不同請求分配給同一進(jìn)程。其中,所述進(jìn)程分配模塊包括判斷子模塊,用于根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求;進(jìn)程分配子模塊,用于如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程。其中,所述判斷子模塊包括用戶標(biāo)識獲取子模塊,用于獲取所述當(dāng)前請求對應(yīng)的用戶的屬性信息;比對子模塊,用于如果當(dāng)前請求對應(yīng)的用戶的屬性信息未出現(xiàn)在所述歷史分配記錄中,則所述當(dāng)前請求為新用戶的請求;其中,所述歷史分配記錄用于記錄在歷史處理過程中,用戶請求對應(yīng)的用戶的屬性信息與分配給該用戶請求的進(jìn)程之間的對應(yīng)關(guān)系。其中,所述進(jìn)程分配子模塊具體用于如果所述當(dāng)前請求不是新用戶的請求,并且歷史分配記錄中該用戶的屬性信息對應(yīng)的進(jìn)程包含空閑的處理單元,則將該進(jìn)程分配給當(dāng)前請求。其中,所述歷史分配記錄中還記錄有用戶請求對應(yīng)的用戶的屬性信息與分配給請求的處理單元之間的對應(yīng)關(guān)系;所述處理單元分配模塊具體用于將歷史分配記錄中該用戶的屬性信息對應(yīng)的處理單元分配給當(dāng)前請求。其中,還包括新用戶請求分配模塊,用于如果當(dāng)前請求是新用戶的請求,則將當(dāng)前具有最多空閑處理單元的進(jìn)程分配給當(dāng)前請求。其中,還包括超時(shí)處理模塊,用于如果全部進(jìn)程中都不存在空閑處理單元,則判斷是否存在處理時(shí)間超時(shí)的處理單元,如果是,則將該處理單元所在的進(jìn)程分配給當(dāng)前請求;所述處理單元分配模塊具體用于將所述處理時(shí)間超時(shí)的處理單元的當(dāng)前任務(wù)結(jié)束,并將其分配給當(dāng)前請求。其中,所述代理服務(wù)器為至少兩個(gè),所述系統(tǒng)還包括代理服務(wù)器分配模塊,用于為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器。其中,所述代理服務(wù)器分配模塊包括心跳監(jiān)控子模塊,用于對各代理服務(wù)器進(jìn)行實(shí)時(shí)的心跳監(jiān)控,將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中;代理服務(wù)器分配子模塊,用于從所述可用代理服務(wù)器列表中為當(dāng)前請求分配代理服務(wù)器。其中,還包括列表更新模塊,用于將未能監(jiān)測到心跳信息的代理服務(wù)器從所述可用代理服務(wù)器列表中刪除;當(dāng)重新監(jiān)測到代理服務(wù)器的心跳信息時(shí),將其加入到所述可用代理服務(wù)器列表中。根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開了以下技術(shù)效果通過本發(fā)明,可以預(yù)先在同一臺代理服務(wù)器中啟動(dòng)多個(gè)進(jìn)程并在每個(gè)進(jìn)程中創(chuàng)建多個(gè)處理單元,這樣,就不必在用戶請求到達(dá)時(shí)再重新進(jìn)行進(jìn)程及處理單元的創(chuàng)建,因此, 可以縮短用戶實(shí)際感知到的處理時(shí)間,而且能夠滿足大用戶量并發(fā)時(shí)的處理需求;同時(shí),多進(jìn)程的方式可以充分代理服務(wù)器中多核的資源,提高處理效率,這也能提高服務(wù)器的響應(yīng)速度。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹 ,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實(shí)施例提供的方法的流程圖;圖2是本發(fā)明實(shí)施例提供的另一方法的流程圖;圖3是本發(fā)明實(shí)施例提供的第一系統(tǒng)的示意圖;圖4是本發(fā)明實(shí)施例提供的第二系統(tǒng)的示意圖;圖5是本發(fā)明實(shí)施例提供的第三系統(tǒng)的示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。首先需要說明的是,本發(fā)明實(shí)施例是在基于服務(wù)器的網(wǎng)頁渲染排版技術(shù)基礎(chǔ)上進(jìn)行的改進(jìn),前提仍然是將耗時(shí)且費(fèi)資源的操作封裝在服務(wù)端,由服務(wù)端進(jìn)行需要大量計(jì)算作業(yè)的網(wǎng)頁資源壓縮、頁面的解析、定位以及渲染排版等工作,通過這一系列的操作,將網(wǎng)頁轉(zhuǎn)化為更加適合移動(dòng)終端設(shè)備顯示的頁面,并將頁面以二進(jìn)制數(shù)據(jù)的形式發(fā)送至移動(dòng)終端設(shè)備,由移動(dòng)終端設(shè)備進(jìn)行解析,由此,降低了使用移動(dòng)終端設(shè)備訪問網(wǎng)頁時(shí)對網(wǎng)絡(luò)的需求,以及移動(dòng)終端處理網(wǎng)頁資源時(shí)的計(jì)算量。然而,隨著移動(dòng)終端設(shè)備的多元化和普及程度的提高,使用移動(dòng)終端訪問網(wǎng)頁服務(wù)器的用戶數(shù)量高速增長,這就對傳統(tǒng)的基于服務(wù)器渲染排版的技術(shù)提出了新的要求,比如在同一時(shí)間段內(nèi),如果大量的用戶請求并發(fā),可能會(huì)降低服務(wù)端的響應(yīng)速度,服務(wù)端的作業(yè)出現(xiàn)延時(shí)甚至是服務(wù)器的部分資源停止響應(yīng),結(jié)果反而降低了瀏覽器的響應(yīng)速度。為了避免上述情況的發(fā)生,本發(fā)明實(shí)施例提供了相應(yīng)的解決方案,在此方案中,可以在代理服務(wù)器中預(yù)先啟動(dòng)多個(gè)進(jìn)程,并在每個(gè)進(jìn)程中啟動(dòng)多個(gè)處理單元;這些處理單元的作用相當(dāng)于普通瀏覽器(相對于C/S架構(gòu)瀏覽器沖的窗口(例如用戶在點(diǎn)擊某鏈接時(shí),普通的網(wǎng)頁瀏覽器會(huì)創(chuàng)建一個(gè)窗口,最終將頁面顯示在該窗口中),但也不完全等同。具體而言,這種處理單元可以對用戶訪問網(wǎng)頁的請求進(jìn)行處理,例如,包括將請求發(fā)送到網(wǎng)頁服務(wù)器,然后對接收到的網(wǎng)頁數(shù)據(jù)進(jìn)行解析、渲染、排版等一系列操作,但不同之處在于,由于這種處理單元位于代理服務(wù)器端,因此并不需要具有顯示界面;而真正的顯示界面是由用戶計(jì)算機(jī)上安裝的客戶端來創(chuàng)建的,因此,這種處理單元需要將網(wǎng)頁數(shù)據(jù)的處理結(jié)果通過一些私有的協(xié)議發(fā)送給客戶端,由客戶端進(jìn)行繪制并顯示在用戶界面上。換言之,本發(fā)明實(shí)施例中啟動(dòng)的處理單元,與傳統(tǒng)的C/S架構(gòu)下用于處理用戶請求的處理單元的作用相同,但創(chuàng)建的時(shí)機(jī)不同;在傳統(tǒng)的C/S架構(gòu)下,一般是在接收到用戶請求之后,再進(jìn)行處理單元的創(chuàng)建,這樣相當(dāng)于創(chuàng)建窗口的耗時(shí)也成為用戶可感知的網(wǎng)頁處理時(shí)間的一部分;雖然一般而言創(chuàng)建窗口是很快的,但是在大用戶量并發(fā)的情況下,仍然可能會(huì)導(dǎo)致整體處理時(shí)間的延長。而在本發(fā)明實(shí)施例中,處理單元是預(yù)先創(chuàng)建好的,當(dāng)接收到用戶請求之后,只需要將用戶請求按照一定的策略分配到指定的處理單元即可,而不需要每接收到一個(gè)用戶請求時(shí)再分別創(chuàng)建處理單元,因此可以從整體上提高響應(yīng)速度,從一定程度上縮短用戶可感知的處理時(shí)間。另外,由于具體的處理單元是需要在一定的進(jìn)程中創(chuàng)建的,而一個(gè)進(jìn)程中允許創(chuàng)建多個(gè)處理單元,這樣可以使得在一個(gè)進(jìn)程中處理多個(gè)用戶請求,因此,在本發(fā)明實(shí)施例中,采用了這種在進(jìn)程中創(chuàng)建多個(gè)處理單元的方式。同時(shí),一個(gè)進(jìn)程中允許創(chuàng)建的處理單元數(shù)目畢竟也是有限的,如果一臺代理服務(wù)器上僅啟動(dòng)一個(gè)進(jìn)程,則能夠容納的用戶請求數(shù)量仍然會(huì)比較有限;另一方面,代理服務(wù)器一般會(huì)采用多核技術(shù),也就是說一臺代理服務(wù)器具有多個(gè)內(nèi)核,不同的進(jìn)程在不同的內(nèi)核上可以同時(shí)運(yùn)行,這樣可以大大提高處理速度。 因此,在本發(fā)明實(shí)施例中,還采用了在同一臺代理服務(wù)器上創(chuàng)建多個(gè)進(jìn)程的方式,這樣,可以提高單臺代理服務(wù)器可容納的用戶請求數(shù)量,同時(shí)充分利用代理服務(wù)器的多核的資源。 當(dāng)然,代理服務(wù)器上的進(jìn)程也是先于用戶請求啟動(dòng)的。在以上所述的前提下,參見圖1,本發(fā)明實(shí)施例提供的處理用戶訪問網(wǎng)頁的請求的方法包括以下步驟SlOl :在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為所述各個(gè)用戶的當(dāng)前請求分配進(jìn)程;S102 :在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元;用戶計(jì)算機(jī)上安裝的瀏覽器客戶端會(huì)首先接收到用戶訪問某網(wǎng)頁的當(dāng)前請求(例如用戶當(dāng)前點(diǎn)擊了某鏈接,或者當(dāng)前在地址欄中輸入了某網(wǎng)址并執(zhí)行了確認(rèn)操作等),然后客戶端將該當(dāng)前請求發(fā)送到服務(wù)器端。代理服務(wù)器端由于已經(jīng)預(yù)先啟動(dòng)了多個(gè)進(jìn)程,因此, 在接收到用戶請求之后,就可以將用戶的當(dāng)前請求分配到其中一個(gè)進(jìn)程中。當(dāng)然,具體能夠?qū)τ脩粽埱筮M(jìn)行處理的是處理單元,而一個(gè)進(jìn)程中還創(chuàng)建了多個(gè)處理單元,因此,還需要將當(dāng)前請求分配到一個(gè)具體的處理單元中進(jìn)行處理。 具體在根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程及處理單元時(shí),可以有多種方式,例如,直接將當(dāng)前請求分配到空閑處理單元最多的進(jìn)程中,然后在該進(jìn)程中任選一個(gè)空閑的處理窗口等等。或者,在本發(fā)明實(shí)施例中,為了保證資源的重復(fù)利用,可以盡量將同一用戶的不同請求分配到同一進(jìn)程中,這樣可以進(jìn)一步節(jié)省處理時(shí)間。例如,有些網(wǎng)站(如某些購物網(wǎng)站等)需要用戶的賬戶及密碼等登錄信息,一般情況下,用戶在訪問同一網(wǎng)站下的不同網(wǎng)頁時(shí),只登錄一次即可,例如,用戶在某網(wǎng)站的首頁上登錄之后,在訪問該網(wǎng)站的所有網(wǎng)頁時(shí),登錄信息都是有效的。但在本發(fā)明實(shí)施例中,由于同一臺代理服務(wù)器上會(huì)處理多個(gè)用戶的請求,要實(shí)現(xiàn)這種效果,其前提是這些網(wǎng)頁對應(yīng)的處理單元在同一進(jìn)程中。這是因?yàn)?,?dāng)在某進(jìn)程中處理用戶的首次登陸請求后,可以在瀏覽器的Cookie中進(jìn)行保存一些信息,例如,在網(wǎng)站中的登錄信息,后續(xù)當(dāng)同一用戶訪問同一網(wǎng)站中的其他網(wǎng)頁時(shí),就可以從Cookie中取出保存的這些信息,從而保證登錄狀態(tài)的連續(xù)性?;蛘?,Cookie中還可以保存用戶訪問過的網(wǎng)頁的數(shù)據(jù)信息等,針對用戶訪問過的一個(gè)網(wǎng)頁 ,當(dāng)再次發(fā)起訪問時(shí),可以直接根據(jù)保存的信息返回給用戶,而不必再重新向網(wǎng)頁服務(wù)器發(fā)起請求,等等。這種Cookie會(huì)進(jìn)行持久化存儲,但是如果是同一進(jìn)程的不同處理單元或者不同的進(jìn)程處理“已經(jīng)有歷史記錄”的請求時(shí),需要從持久化存儲獲取一次信息,這樣不如直接由歷史處理單元處理時(shí)高效。因此,在本發(fā)明實(shí)施例中,為了實(shí)現(xiàn)前述目的,在為用戶請求分配進(jìn)程時(shí),可以進(jìn)來將同一用戶的請求分配到同一進(jìn)程,甚至還可以盡量分配到同一處理單元。為了該目的,具體實(shí)現(xiàn)時(shí),可以首先判斷當(dāng)請請求是否為新用戶的請求,然后根據(jù)判斷的結(jié)果向當(dāng)前請求進(jìn)行進(jìn)程的分配。具體實(shí)現(xiàn)時(shí),參見圖2,還可以采用如下方式來處理S201 :判斷當(dāng)前請求是否為新用戶的請求;如果是,則進(jìn)入步驟S202,否則進(jìn)入步驟 S206 ;為了能夠判斷當(dāng)前請求是否為新用戶的請求,可以在歷史處理的過程中,在為用戶請求分配進(jìn)程的同時(shí),還可以記錄下用戶請求對應(yīng)的用戶屬性信息與為該請求分配的進(jìn)程之間的對應(yīng)關(guān)系,這樣,在代理服務(wù)器端就可以維護(hù)一個(gè)歷史分配列表,在該列表中記錄了為各個(gè)用戶分配的進(jìn)程分別是哪個(gè)。當(dāng)接收到一個(gè)當(dāng)前請求時(shí),同樣可以先獲取到該請求對應(yīng)的用戶屬性信息,然后判斷該用戶屬性信息是否出現(xiàn)在歷史分配列表中,如果是,則證明該用戶之前訪問過其他的網(wǎng)頁,也就是說,該當(dāng)前請求不是一個(gè)新用戶的請求;否則, 如果未出現(xiàn)在歷史分配列表中,則證明當(dāng)前請求是一個(gè)新用戶的請求。需要說明的是,歷史分配記錄中記錄的數(shù)據(jù)并不是永久性的,而是要在一定時(shí)間后刪除,例如,對于某一條記錄,自生成之時(shí)起經(jīng)過一段預(yù)置的時(shí)間之后,就可以將其從歷史分配記錄中刪除。也就是說,同一個(gè)用戶的請求對應(yīng)著一個(gè)大的會(huì)話(session),該會(huì)話建立之后,即使中間插入了其他用戶的請求,也不會(huì)中斷,但是該會(huì)話的存續(xù)仍然存在超時(shí)時(shí)間,當(dāng)接收了一個(gè)用戶的某請求之后,如果很長一段時(shí)間之后都沒有再收到該用戶的請求,則證明用戶目前可能不再需要訪問其他的網(wǎng)頁,相應(yīng)的,該會(huì)話也就可以結(jié)束??梢?,這里所謂的“新用戶”并不是新入網(wǎng)的用戶,或者新安裝了該C/S架構(gòu)的瀏覽器的用戶等等, 而是指在一定時(shí)間段內(nèi)是否有過訪問請求的用戶。在具體實(shí)現(xiàn)時(shí),用戶屬性信息可以由瀏覽器客戶端的ID來表示。在實(shí)際應(yīng)用中, 在安裝瀏覽器客戶端時(shí),會(huì)帶有唯一標(biāo)識該瀏覽器客戶端的ID,客戶端在向服務(wù)器發(fā)送用戶的訪問請求時(shí),會(huì)攜帶該ID,因此,就可以通過該ID來區(qū)分不同的用戶。當(dāng)然,如果用戶注冊過瀏覽器賬戶,并且當(dāng)前處于登錄狀態(tài),則也可以根據(jù)用戶的登錄信息來獲取用戶屬性信息,或者,還可以將用戶的IP地址作為用戶屬性信息,等等。關(guān)于各個(gè)進(jìn)程的狀態(tài)信息可以包括進(jìn)程包括的空閑處理單元的數(shù)目等等。S202 :判斷各個(gè)進(jìn)程中是否存在空閑處理單元;如果是,則進(jìn)入步驟S203,如果每個(gè)進(jìn)程中都不存在空閑的處理單元,進(jìn)入步驟S204 ;S203 :選出空閑窗口最多的進(jìn)程分配給當(dāng)前請求,并從中選擇一個(gè)空閑窗口分配給當(dāng)前請求;S204 :判斷進(jìn)程中是否存在處理時(shí)間超時(shí)的處理單元;如果是,則進(jìn)入步驟S205, 否則,可以等待,直到有處理單元空閑,或者有處理單元的處理時(shí)間超時(shí);如果某處理單元的處理時(shí)間超時(shí),則證明該處理單元可能發(fā)生了故障,客戶端測的窗口可能早已被用戶關(guān)閉,因此,可以將其結(jié)束,分配給其他請求使用。S205 :將超時(shí)時(shí)間最長的處理單元及其對應(yīng)的進(jìn)程分配給當(dāng)前請求;S206 :獲取該用戶的歷史請求所在的進(jìn)程,將該進(jìn)程分配給當(dāng)前請求;當(dāng)然,在將該用戶的歷史請求所在的進(jìn)程分配給該當(dāng)前請求之前,還可以首先判斷下該進(jìn)程是否存在空閑的處理單元,如果存在,則將其分配給當(dāng)前請求,否則,可以等待, 直到有處理單元完成當(dāng)前的處理,或者將其他進(jìn)程分配給該當(dāng)前請求。S207 :判斷該用戶的歷史請求對應(yīng)的歷史處理單元是否空閑,如果空閑,則進(jìn)入步驟S208 ;否則進(jìn)入S209 ;S208 :將該歷史處理單元分配給當(dāng)前請求;S209:在該用戶的歷史請求所在的進(jìn)程選擇一個(gè)空閑處理單元分配給當(dāng)前請求。步驟S207及S208為可選的步驟,也就是說,在實(shí)際應(yīng)用中,在步驟S206之后可以直接進(jìn)入步驟S209,將該用戶的歷史請求所在的進(jìn)程中任意一個(gè)空閑處理單元分配給當(dāng)前請求;但如果經(jīng)過該步驟S207,則可以將同一用戶的請求盡量分配到同一進(jìn)程的同一處理單元中,這樣,可以進(jìn)一步保證資源的重復(fù)利用,提高處理效率??梢?,通過上述處理,不僅能夠增加代理服務(wù)器的吞吐量,還可以盡可能保證同一用戶在訪問中的連續(xù)性,從而進(jìn)一步提高處理及響應(yīng)速度。當(dāng)然,在實(shí)際應(yīng)用中,有些窗口可能在運(yùn)行中會(huì)出現(xiàn)故障,此時(shí),如果將用戶請求分配給該窗口,則會(huì)導(dǎo)致該請求無法得到及時(shí)處理。因此,在本發(fā)明實(shí)施例中,可以對各個(gè)處理單元的狀態(tài)進(jìn)行監(jiān)控,當(dāng)發(fā)現(xiàn)某處理單元出現(xiàn)故障時(shí),為了避免同一進(jìn)程中其他處理單元的正常運(yùn)行,可以首先將故障處理單元所在的進(jìn)程打上標(biāo)記,避免有新的請求被分配到該進(jìn)程,然后,等到該進(jìn)程中所有的處理單元正在處理的任務(wù)都完成之后,再將該進(jìn)程關(guān)閉,然后再重新啟動(dòng)該進(jìn)程,并重新創(chuàng)建處理單元。除此之外,為了進(jìn)一步提高吞吐量及響應(yīng)速度,在代理服務(wù)器端還可以采用服務(wù)器集群的方式,也就是說,可以在服務(wù)器端部署多個(gè)代理服務(wù)器,每個(gè)代理服務(wù)器中都具有前述所有功能,例如,都可以預(yù)先啟動(dòng)多個(gè)進(jìn)程,每個(gè)進(jìn)程中初始化多個(gè)處理單元,并且還可以進(jìn)行同一用戶的連續(xù)性訪問等處理。當(dāng)然,每臺代理服務(wù)器的硬件配置可以是不同的在采用服務(wù)器集群的情況下,還涉及到將用戶的當(dāng)前請求在不同的代理服務(wù)器之間進(jìn)行分配的問題,此時(shí),還可以在服務(wù)器端部署一個(gè)專門用于分發(fā)的服務(wù)器,當(dāng)然也可以在某一臺代理服務(wù)器上增加分發(fā)模塊。當(dāng)客戶端發(fā)送的用戶當(dāng)前請求到達(dá)服務(wù)器端時(shí),可以首先到達(dá)該分發(fā)服務(wù)器或分發(fā)模塊,然后由分發(fā)服務(wù)器或分發(fā)模塊為當(dāng)前請求分配代理服務(wù)器。在分配代理服務(wù)器時(shí),可以采用多種策略來實(shí)現(xiàn),例如,可以預(yù)先獲取到各個(gè)代理、服務(wù)器的性能參數(shù),根據(jù)代理服務(wù)器的性能參數(shù)確定出各自的處理能力,然后基于各自的處理能力,為各個(gè)代理服務(wù)器進(jìn)行請求的分配?;蛘?,還可以對各個(gè)代理服務(wù)器處理的請求總數(shù)進(jìn)行監(jiān)控,或者由各個(gè)代理服務(wù)器上報(bào)各自正在處理的請求總數(shù),然后結(jié)合各自的處理能力,進(jìn)行更有效的分配。分發(fā)服務(wù)器或分發(fā)模塊在各個(gè)代理服務(wù)器之間進(jìn)行分配時(shí),可以采用類似DNS的方式來實(shí)現(xiàn),但是,在實(shí)際應(yīng)用中,代理服務(wù)器也可能出現(xiàn)故障,此時(shí),為了避免對用戶請求的處理速度產(chǎn)生影響,應(yīng)該能夠及時(shí)停止向該發(fā)生故障的代理服務(wù)器分配用戶請求。然而, 如果使用DNS的方式進(jìn)行分發(fā),則無法達(dá)到該要求,這是因?yàn)?,傳統(tǒng)的DNS服務(wù)在單臺服務(wù)器出現(xiàn)故障之后,并不會(huì)停止轉(zhuǎn)發(fā)新請求到故障的服務(wù)器上,而必須首先修改DNS配置,而 DNS服務(wù)器存在緩存,緩存的更新需要時(shí)間,所以修改DNS配置之后,轉(zhuǎn)發(fā)不會(huì)立即停止,需要等到各級DNS緩存更新完畢之后,才能停止轉(zhuǎn)發(fā)新請求到故障的服務(wù)器上。為此,在本發(fā)明實(shí)施例中,可以不使用DNS的方式進(jìn)行分發(fā),而是直接在分發(fā)服務(wù)器或者分發(fā)模塊中,對各個(gè)代理服務(wù)器進(jìn)行實(shí)時(shí)或準(zhǔn)實(shí)時(shí)心跳監(jiān)測(可以配置監(jiān)控的時(shí)間間隔,單位在秒級別), 所謂的心跳監(jiān)測也就是對代理服務(wù)器進(jìn)行故障監(jiān)測,如果某代理服務(wù)器發(fā)生故障,則當(dāng)分發(fā)服務(wù)器或分發(fā)模塊向其發(fā)送心跳測試信號時(shí),將無法返回響應(yīng),這樣,代理服務(wù)器上線下線都能監(jiān)控到并處理。同時(shí),還可以將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中,在向當(dāng)前請求分配代理服務(wù)器時(shí),從該列表中選擇代理服務(wù)器,這樣就可以保證有故障的代理服務(wù)器不會(huì)被選擇到。對于已經(jīng)處于可用代理服務(wù)器列表中的代理服務(wù)器,當(dāng)又發(fā)現(xiàn)未能監(jiān)測到其心跳信息時(shí),還可以將其從可用代理服務(wù)器列表中刪除,一旦故障服務(wù)器恢復(fù)之后,分發(fā)服務(wù)器或分發(fā)模塊監(jiān)測到故障服務(wù)器的心跳信息了,則故障服務(wù)器就會(huì)重新加入到可用代理服務(wù)器列表中,當(dāng)有用戶請求時(shí),又可以重新分配到該代理服務(wù)器中。在將某當(dāng)前請求分配到某代理服務(wù)器上之后,對于進(jìn)程以及處理單元的分配可以按照前文所述的來處理,這里不再贅述。可見,在這種服務(wù)器集群的方式下,可以實(shí)現(xiàn)兩個(gè)層次的調(diào)度,一個(gè)是代理服務(wù)器之間的物理層,另一個(gè)是進(jìn)程層,通過這種多級調(diào)度機(jī)制, 可以提高整體的處理能力以及響應(yīng)速度。
S103 :通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。在給一個(gè)請求分配了處理單元之后,該處理單元就可以對請求進(jìn)行解析,然后構(gòu)造網(wǎng)頁訪問請求到網(wǎng)頁服務(wù)器,以獲取網(wǎng)頁資源,在獲取到網(wǎng)頁資源之后就可以進(jìn)行解析、 渲染、排版等處理,之后轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)返回給客戶端,供客戶端進(jìn)行繪制及網(wǎng)頁的顯示。當(dāng)然,本發(fā)明不僅僅適用于上述處理單元執(zhí)行了解析、渲染、排版等處理的情況,在處理單元所需執(zhí)行的操作發(fā)生變化時(shí)(例如代理服務(wù)器變得更重或者更輕),也可以使用本發(fā)明實(shí)施例提供的方案來實(shí)現(xiàn)。需要說明的是,在一個(gè)處理單元完成了對一個(gè)請求的處理之后,該處理單元并不會(huì)關(guān)閉,而是將處理該請求時(shí)申請的資源(包括與網(wǎng)頁服務(wù)器建立連接時(shí)的鏈接資源、用于對各種資源進(jìn)行緩存的存儲資源、計(jì)算資源等等)釋放掉,然后等待其他請求的到來,以此周而復(fù)始。當(dāng)然,為了達(dá)到前述同一用戶的不同請求能夠復(fù)用一些資源的目的,處理單元可以不必釋放頁面請求的結(jié)果。
與本發(fā)明實(shí)施例提供的處理用戶訪問網(wǎng)頁的請求的方法相對應(yīng),本發(fā)明實(shí)施例還提供了一種處理用戶訪問網(wǎng)頁的請求系統(tǒng),在該系統(tǒng)中,需要在代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,參見圖3,該系統(tǒng)包括進(jìn)程分配模塊301,用于在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為所述各個(gè)用戶的當(dāng)前請求分配進(jìn)程;處理單元分配模塊302,用于在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元;網(wǎng)頁內(nèi)容處理模塊303,用于通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。為了保證用戶訪問的連續(xù)性,進(jìn)一步提高響應(yīng)速度,可以將同一用戶的不同請求分配給同一進(jìn)程。具體實(shí)現(xiàn)時(shí),為了實(shí)現(xiàn)上述將同一用戶的不同請求分配給同一進(jìn)程,參見圖4,進(jìn)程分配模塊301可以包括判斷子模塊3011,用于根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求; 進(jìn)程分配子模塊3012,用于如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程。其中,判斷子模塊3011可以包括用戶標(biāo)識獲取子模塊,用于獲取所述當(dāng)前請求對應(yīng)的用戶的屬性信息;比對子模塊,用于如果當(dāng)前請求對應(yīng)的用戶的屬性信息標(biāo)識未出現(xiàn)在所述歷史分配記錄中,則所述當(dāng)前請求為新用戶的請求;其中,所述歷史分配記錄用于記錄在歷史處理過程中,用戶請求對應(yīng)的用戶的屬性信息與分配給該用戶請求的進(jìn)程之間的對應(yīng)關(guān)系。進(jìn)程分配子模塊3012具體可以用于所述當(dāng)前請求不是新用戶的請求,并且歷史分配記錄中該用戶的屬性信息對應(yīng)的進(jìn)程包含空閑的處理單元,則將該進(jìn)程分配給當(dāng)前請求。為了能夠應(yīng)對一些網(wǎng)站中的特殊設(shè)計(jì),歷史分配記錄中還可以記錄有用戶請求對應(yīng)的用戶的屬性信息與分配給請求的處理單元之間的對應(yīng)關(guān)系;此時(shí),處理單元分配模塊302具體可以用于將歷史分配記錄中該用戶的屬性信息對應(yīng)的處理單元分配給當(dāng)前請求。另外,該系統(tǒng)還可以包括新用戶請求分配模塊,用于如果當(dāng)前請求是新用戶的請求,則將當(dāng)前具有最多空閑處理單元的進(jìn)程分配給當(dāng)前請求。超時(shí)處理模塊,用于如果全部進(jìn)程中都不存在空閑處理單元,則判斷是否存在處理時(shí)間超時(shí)的處理單元,如果是,則將該處理單元所在的進(jìn)程分配給當(dāng)前請求;相應(yīng)的,處理單元分配模塊302具體可以用于將所述處理時(shí)間超時(shí)的處理單元的當(dāng)前任務(wù)結(jié)束,并將其分配給當(dāng)前請求。為了進(jìn)一步提高服務(wù)器的吞吐量以及響應(yīng)速度,可以采用服務(wù)器集群的方式來實(shí)現(xiàn),也即,代理服務(wù)器為至少兩個(gè),此時(shí),參見圖5,該系統(tǒng)還可以包括代理服務(wù)器分配模塊304,用于為當(dāng)前請求分配代理服務(wù)器。
需要說明的是,圖5中示出的僅為各個(gè)模塊之間的邏輯關(guān)系,在物理結(jié)構(gòu)中,如前文所述,該代理服務(wù)器分配模塊304可以部署于一個(gè)單獨(dú)的分發(fā)服務(wù)器中,也可以部署于集群的任意一臺代理服務(wù)器中。為了能夠及時(shí)停止向發(fā)生故障 的代理服務(wù)器分發(fā)新的請求,代理服務(wù)器分配模塊 304可以包括心跳監(jiān)控子模塊,用于對各代理服務(wù)器進(jìn)行實(shí)時(shí)的心跳監(jiān)控,將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中;代理服務(wù)器分配子模塊,用于從所述可用代理服務(wù)器列表中為當(dāng)前請求分配代理服務(wù)器。另外,還可以包括列表更新模塊,用于將未能監(jiān)測到心跳信息的代理服務(wù)器從所述可用代理服務(wù)器列表中刪除;當(dāng)重新監(jiān)測到代理服務(wù)器的心跳信息時(shí),將其加入到所述可用代理服務(wù)器列表中。綜上所述,通過本發(fā)明實(shí)施例提供的上述系統(tǒng),可以預(yù)先在同一臺代理服務(wù)器中啟動(dòng)多個(gè)進(jìn)程并在每個(gè)進(jìn)程中創(chuàng)建多個(gè)處理單元,這樣,就不必在用戶請求到達(dá)時(shí)再重新進(jìn)行進(jìn)程及處理單元的創(chuàng)建,因此,可以縮短用戶實(shí)際感知到的處理時(shí)間,而且能夠滿足大用戶量并發(fā)時(shí)的處理需求;同時(shí),多進(jìn)程的方式可以充分代理服務(wù)器中多核的資源,提高處理效率,這也能提高服務(wù)器的響應(yīng)速度。通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn)。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。以上對本發(fā)明所提供的處理用戶訪問網(wǎng)頁的請求的方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種處理用戶訪問網(wǎng)頁的請求方法,其特征在于,在同一臺代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,所述方法包括 在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程; 在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元; 通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,將同一用戶的不同請求分配給同一進(jìn)程。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程,包括 根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求; 如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求包括 獲取所述當(dāng)前請求對應(yīng)的用戶的屬性信息; 如果當(dāng)前請求對應(yīng)的用戶的屬性信息未出現(xiàn)在所述歷史分配記錄中,則所述當(dāng)前請求為新用戶的請求;其中,所述歷史分配記錄用于記錄在歷史處理過程中,用戶請求對應(yīng)的用戶的屬性信息與分配給該用戶請求的進(jìn)程之間的對應(yīng)關(guān)系。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程,包括 如果所述當(dāng)前請求不是新用戶的請求,并且歷史分配記錄中該用戶的屬性信息對應(yīng)的進(jìn)程包含空閑的處理單元,則將該進(jìn)程分配給當(dāng)前請求。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述歷史分配記錄中還記錄有用戶請求對應(yīng)的用戶的屬性信息與分配給請求的處理單元之間的對應(yīng)關(guān)系; 所述在分配的進(jìn)程中為所述請求分配處理單元,包括 將歷史分配記錄中該用戶的屬性信息對應(yīng)的處理單元分配給當(dāng)前請求。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括 如果當(dāng)前請求是新用戶的請求,則將當(dāng)前具有最多空閑處理單元的進(jìn)程分配給當(dāng)前請求。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括 如果全部進(jìn)程中都不存在空閑處理單元,則判斷是否存在處理時(shí)間超時(shí)的處理單元,如果是,則將該處理單元所在的進(jìn)程分配給當(dāng)前請求; 所述在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元包括 將所述處理時(shí)間超時(shí)的處理單元的當(dāng)前任務(wù)結(jié)束,并將其分配給當(dāng)前請求。
9.根據(jù)權(quán)利要求I至8任一項(xiàng)所述的方法,其特征在于,所述代理服務(wù)器為至少兩個(gè),所述方法還包括 為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器包括 對各代理服務(wù)器進(jìn)行實(shí)時(shí)的心跳監(jiān)控,將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中; 從所述可用代理服務(wù)器列表中為當(dāng)前請求分配代理服務(wù)器。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,還包括 將未能監(jiān)測到心跳信息的代理服務(wù)器從所述可用代理服務(wù)器列表中刪除;當(dāng)重新監(jiān)測到代理服務(wù)器的心跳信息時(shí),將其加入到所述可用代理服務(wù)器列表中。
12.一種處理用戶訪問網(wǎng)頁的請求系統(tǒng),其特征在于,在同一臺代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,所述系統(tǒng)包括 進(jìn)程分配模塊,用于在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為所述各個(gè)用戶的當(dāng)前請求分配進(jìn)程; 處理單元分配模塊,用于在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元; 網(wǎng)頁內(nèi)容處理模塊,用于通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,將同一用戶的不同請求分配給同一進(jìn)程。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述進(jìn)程分配模塊包括 判斷子模塊,用于根據(jù)各個(gè)用戶的屬性信息判斷當(dāng)前請求是否為新用戶的請求; 進(jìn)程分配子模塊,用于如果當(dāng)前請求不是新用戶的請求,則根據(jù)該用戶的分配歷史以及各個(gè)進(jìn)程的狀態(tài)信息為所述當(dāng)前請求分配進(jìn)程。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述判斷子模塊包括 用戶標(biāo)識獲取子模塊,用于獲取所述當(dāng)前請求對應(yīng)的用戶的屬性信息; 比對子模塊,用于如果當(dāng)前請求對應(yīng)的用戶的屬性信息未出現(xiàn)在所述歷史分配記錄中,則所述當(dāng)前請求為新用戶的請求;其中,所述歷史分配記錄用于記錄在歷史處理過程中,用戶請求對應(yīng)的用戶的屬性信息與分配給該用戶請求的進(jìn)程之間的對應(yīng)關(guān)系。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述進(jìn)程分配子模塊具體用于 如果所述當(dāng)前請求不是新用戶的請求,并且歷史分配記錄中該用戶的屬性信息對應(yīng)的進(jìn)程包含空閑的處理單元,則將該進(jìn)程分配給當(dāng)前請求。
17.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述歷史分配記錄中還記錄有用戶請求對應(yīng)的用戶的屬性信息與分配給請求的處理單元之間的對應(yīng)關(guān)系; 所述處理單元分配模塊具體用于 將歷史分配記錄中該用戶的屬性信息對應(yīng)的處理單元分配給當(dāng)前請求。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,還包括 新用戶請求分配模塊,用于如果當(dāng)前請求是新用戶的請求,則將當(dāng)前具有最多空閑處理單元的進(jìn)程分配給當(dāng)前請求。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其特征在于,還包括 超時(shí)處理模塊,用于如果全部進(jìn)程中都不存在空閑處理單元,則判斷是否存在處理時(shí)間超時(shí)的處理單元,如果是,則將該處理單元所在的進(jìn)程分配給當(dāng)前請求;所述處理單元分配模塊具體用于 將所述處理時(shí)間超時(shí)的處理單元的當(dāng)前任務(wù)結(jié)束,并將其分配給當(dāng)前請求。
20.根據(jù)權(quán)利要求12至19任一項(xiàng)所述的系統(tǒng),其特征在于,所述代理服務(wù)器為至少兩個(gè),所述系統(tǒng)還包括 代理服務(wù)器分配模塊,用于為各個(gè)用戶的當(dāng)前請求分配代理服務(wù)器。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于,所述代理服務(wù)器分配模塊包括 心跳監(jiān)控子模塊,用于對各代理服務(wù)器進(jìn)行實(shí)時(shí)的心跳監(jiān)控,將能夠正常監(jiān)測到心跳信息的代理服務(wù)器加入到可用代理服務(wù)器列表中; 代理服務(wù)器分配子模塊,用于從所述可用代理服務(wù)器列表中為當(dāng)前請求分配代理服務(wù)器。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,還包括 列表更新模塊,用于將未能監(jiān)測到心跳信息的代理服務(wù)器從所述可用代理服務(wù)器列表中刪除;當(dāng)重新監(jiān)測到代理服務(wù)器的心跳信息時(shí),將其加入到所述可用代理服務(wù)器列表中。
全文摘要
本發(fā)明公開了處理用戶訪問網(wǎng)頁的請求的方法及系統(tǒng),其中,在同一臺代理服務(wù)器中預(yù)先啟動(dòng)至少兩個(gè)進(jìn)程,每個(gè)進(jìn)程中創(chuàng)建至少兩個(gè)處理單元,所述方法包括在接收到多個(gè)用戶訪問網(wǎng)頁的當(dāng)前請求時(shí),根據(jù)各個(gè)用戶的屬性信息以及各個(gè)進(jìn)程的狀態(tài)信息,為各個(gè)用戶的當(dāng)前請求分配進(jìn)程;在所述分配的進(jìn)程中為所述當(dāng)前請求分配處理單元;通過所述分配的處理單元,向所述當(dāng)前請求對應(yīng)的網(wǎng)頁服務(wù)器發(fā)送請求以獲取網(wǎng)頁內(nèi)容,以便返回給客戶端進(jìn)行展現(xiàn)。能夠在大用戶量并發(fā)的情況下,提高代理服務(wù)器的響應(yīng)速度。
文檔編號G06F17/30GK102708173SQ20121013541
公開日2012年10月3日 申請日期2012年5月2日 優(yōu)先權(quán)日2012年5月2日
發(fā)明者劉華 申請人:奇智軟件(北京)有限公司