專利名稱:網(wǎng)站流量控制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種網(wǎng)站流量控制方法及裝置。
背景技術(shù):
在網(wǎng)站應(yīng)用中,一般來說用戶的請求是不受數(shù)量限制的,網(wǎng)站服務(wù)器按照自己的實際服務(wù)能力盡可能響應(yīng)這些請求,但是也存在一些特殊的業(yè) 務(wù)場景,必須要限制用戶的請求數(shù)量。例如,網(wǎng)站上的站內(nèi)信發(fā)送,當(dāng)一個用戶給另一個用戶頻繁發(fā)送站內(nèi)信,這些站內(nèi)信就有可能衍生成垃圾信息,這給用戶帶來不方便的同時,也會增加網(wǎng)站的負(fù)擔(dān)。另外,對于某些下載數(shù)據(jù)的請求,若某一用戶大量頻繁的請求下載,大流量下載占用較多的資源會給服務(wù)器和網(wǎng)絡(luò)傳輸造成負(fù)擔(dān),并給其他用戶造成不便。因此,在這些情況通常需要通過流量分析的方式來對流量進行控制,使網(wǎng)站能安全有效的運行。現(xiàn)有的對網(wǎng)站流量控制的方法通常為設(shè)定單位時間內(nèi)用戶針對單個URL的請求次數(shù)閾值,并借助計數(shù)器來統(tǒng)計單位時間內(nèi)用戶針對某個URL的請求次數(shù),使用戶的請求數(shù)量被限制在這個閾值之內(nèi)。其中,計數(shù)器在每個單位時間的結(jié)束時間會被刪除,當(dāng)在下一單位時間有請求時再重新建立,從而記錄每個單位時間內(nèi)的請求次數(shù)。計數(shù)器一般用三元組(key, time, value)表示,其中,key表示提出請求的用戶,time表示最近一次請求的時間,value表示累計請求的次數(shù)。每次請求時,通過表示用戶的key去查找與其對應(yīng)的三元組,如果未查找到,則說明在預(yù)定的單位時間內(nèi),沒有請求,那么記錄當(dāng)前請求為第一次請求,如果能查找到,則查看其累計請求的次數(shù)是否超過閾值。若超過,則拒絕請求,反之,則允許請求,同時更新三元組的time與value。前述方法中的單位時間通常是一個固定的時間段,例如,以24小時做為單位時間,從每天的0點開始到第二天的0點結(jié)束,如果請求集中在兩個相鄰單位時間的交接點,那么實際上此種方法并不能進行較好的控制。例如,前一單位時間內(nèi)的請求集中在23點至24點之間,后一單位時間內(nèi)的請求集中在0點到I點之間,那么實際在兩個小時內(nèi),可以請求的最大次數(shù)是兩個單位時間請求次數(shù)閾值的總和。所以,采用此種方法無法合理的進行流量控制。
發(fā)明內(nèi)容
本申請所要解決的技術(shù)問題是提供一種網(wǎng)站流量控制方法及系統(tǒng),能夠合理的對網(wǎng)站流量進行控制。為了解決上述問題,本申請公開了一種網(wǎng)站流量控制方法,包括以下步驟接收用戶訪問請求,獲取用戶標(biāo)識;根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息,所述臨界訪問請求指從最近一次成功訪問請求前推預(yù)設(shè)次數(shù)后所確定的成功訪問請求;若能查詢到目標(biāo)記錄信息,則進行下一步驟,反之,則響應(yīng)當(dāng)前訪問請求;判斷所述臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),如果是,則拒絕當(dāng)前訪問請求,反之,則響應(yīng)當(dāng)前訪問請求。進一步地,所述根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息之前還包括以下步驟 采用動態(tài)緩存存儲成功訪問請求記錄信息,對所述記錄信息進行老化處理。進一步地,所述動態(tài)緩存存儲的成功訪問請求記錄信息包括成功訪問請求的到期時間,所述到期時間為成功訪問請求的請求時間加上預(yù)定單位時間。進一步地,對所述記錄信息進行老化處理包括刪除到達過期時間的成功訪問請求記錄信息。 進一步地,所述采用緩存存儲成功訪問請求記錄信息包括以下步驟采用總計數(shù)器記錄用戶最近一次訪問請求的到期時間及訪問請求的總次數(shù);采用單次計數(shù)器記錄用戶本次訪問請求的過期時間及本次訪問請求的序列號。進一步地,所述方法還包括判斷動態(tài)緩存中是否存儲有當(dāng)前用戶的成功訪問請求記錄信息;若是,則為新的成功訪問請求記錄信息新建一個單次計數(shù)器,并更新總計數(shù)器,所述單次計數(shù)器中的序列號為更新后總計數(shù)器中記錄的總次數(shù);反之,則為新的成功訪問請求記錄信息新建一個單次計數(shù)器和總計數(shù)器,所述單次計數(shù)器中的序列號與所述總計數(shù)器的總次數(shù)相同。進一步地,所述查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息包括以下步驟查詢當(dāng)前用戶總計數(shù)器中記錄的總次數(shù);將總次數(shù)減去訪問請求閾值后的值加一,得到臨界訪問請求的序列號;根據(jù)序列號查詢臨界訪問請求對應(yīng)的單次計數(shù)器。進一步地,所述總計數(shù)器和單次計數(shù)器采用三元組(key, timeout, value)表示,其中,key表示用戶標(biāo)識,timeout為訪問請求的過期時間,value為取值。為了解決上述問題,本申請還公開了一種網(wǎng)站流量控制裝置,包括用戶標(biāo)識獲取模塊,接收用戶訪問請求,并獲取用戶標(biāo)識;臨界訪問請求記錄信息查詢模塊,根據(jù)用戶標(biāo)識來查詢臨界訪問請求記錄信息,若能查詢到,則將信息傳遞給判斷模塊,反之,則將信息傳遞給響應(yīng)模塊;判斷模塊,判斷臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi);響應(yīng)模塊,根據(jù)臨界訪問請求記錄信息查詢模塊及判斷模塊傳遞的信息對用戶訪問請求作出回應(yīng)。進一步地,所述裝置還包括動態(tài)緩存模塊,存儲用戶的成功訪問請求記錄信息,并對所述記錄信息進行老化處理。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點本申請的網(wǎng)站流量控制方法及裝置采用動態(tài)的單位時間,即以當(dāng)前時間倒推一個預(yù)定單位時間來判斷同一用戶針對某一網(wǎng)站的成功訪問請求的次數(shù),可以保證每一個訪問請求發(fā)生時往前推的一個單位時間內(nèi)用戶的訪問請求次數(shù)都是在控制的訪問請求閾值內(nèi),從而能合理的控制網(wǎng)站流量。其次,本申請采用動態(tài)緩存的方式對用戶針對某一網(wǎng)站的成功訪問請求記錄信息進行存儲,并對記錄信息實現(xiàn)自動老化,從而減少大量訪問請求記錄信息對系統(tǒng)資源的占用,減少存儲的數(shù)據(jù)量。再次,成功訪問請求記錄信息采用三元組的記錄方法,動態(tài)緩存中記錄的是每次成功訪問請求的到期時間,采用過期自動老化的機制便可以實現(xiàn)數(shù)據(jù)的自動刪除,而不需要定期來進行刪除更新處理。另外,同一用戶針對同一網(wǎng)站的成功訪問請求記錄信息采用總計數(shù)器和單次計數(shù)器的方式,總計數(shù)器用于累計用戶訪問請求的總次數(shù),在每次新建單次計數(shù)器時都以總計數(shù)器為參照,查找位置固定,可以節(jié)省記錄時間,提高計算機的反應(yīng)速度,同時可以避免因為采用動態(tài)參照而帶來的不便或者錯誤。 當(dāng)然,實施本申請的任一產(chǎn)品不一定需要同時達到以上所述的所有優(yōu)點。
圖I是本申請的網(wǎng)站流量控制方法實施例一的流程圖;圖2是本申請的網(wǎng)站流量控制方法實施例二的流程圖;圖3是本申請的網(wǎng)站流量控制方法實施例二的流程圖;圖4是本申請的網(wǎng)站流量控制裝置實施例一的結(jié)構(gòu)示意圖;圖5是本申請的網(wǎng)站流量控制裝置實施例二的結(jié)構(gòu)示意圖。
具體實施例方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本申請作進一步詳細的說明。本申請?zhí)峁┮环N網(wǎng)站流量控制方法及裝置,可以應(yīng)用于各種用戶訪問網(wǎng)站的瀏覽器等客戶端、網(wǎng)站的插件、或者網(wǎng)站對應(yīng)的服務(wù)器中,用于對網(wǎng)站訪問流量進行合理有效的控制。具體的,本申請的網(wǎng)站流量控制方法及裝置可以通過計算機程序來實現(xiàn)。參照圖1,示出本申請的一種網(wǎng)站流量控制方法實施例一,包括以下步驟步驟101,接收用戶訪問請求,獲取用戶標(biāo)識??蛻舳嘶蛘叻?wù)器接收用戶針對某個網(wǎng)站提出的訪問請求,用戶標(biāo)識通過用戶訪問請求里面包含的信息來獲取。此處的用戶標(biāo)識為用于識別用戶身份的信息,例如,用戶名稱、用戶IP地址等。步驟102,根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求記錄信息,所述臨界訪問請求指從最近一次成功訪問請求前推預(yù)設(shè)次數(shù)后所確定的成功訪問請求,若能查詢到目標(biāo)記錄信息,則進行下一步驟,反之,則響應(yīng)當(dāng)前訪問請求。此處的記錄信息是指與流量控制相關(guān)的信息,例如,用戶標(biāo)識、訪問請求的時間、訪問請求的到期時間、訪問請求的序列號(即表示訪問請求屬于用戶針對當(dāng)前網(wǎng)站的第幾次訪問請求的數(shù)值)等等。記錄信息可以一直保存,也可以根據(jù)預(yù)定的規(guī)則被刪除,例如,到達訪問請求的過期時間就被刪除等等。
預(yù)設(shè)次數(shù)的取值為預(yù)定單位時間內(nèi)用戶訪問當(dāng)前網(wǎng)站次數(shù)的上限(訪問請求閾值)減去一后得到的數(shù),具體的根據(jù)網(wǎng)站流量控制的程度來確定。例如,若希望將預(yù)定單位時間內(nèi)訪問請求的次數(shù)控制在20次以內(nèi),那么預(yù)設(shè)次數(shù)則為19 ;若希望將預(yù)定單位時間內(nèi)訪問請求的次數(shù)控制在30次以內(nèi),那么預(yù)設(shè)次數(shù)則為29。成功訪問請求是指用戶針對當(dāng)前網(wǎng)站提出訪問并得到響應(yīng)的訪問請求。若能查到臨界訪問請求記錄信息,則進行后續(xù)判斷,反之,則說明臨界訪問請求不存在。臨界訪問請求不存在表示用戶針對當(dāng)前網(wǎng)站的成功訪問請求的總數(shù)量小于或者等于預(yù)設(shè)次數(shù),也就是說,訪問請求次數(shù)還沒有達到訪問請求閾值,當(dāng)前訪問請求能被允許,那么便對當(dāng)前訪問請求作出響應(yīng)。另外,臨界訪問請求不存在也可能表示用戶針對當(dāng)前網(wǎng)站的成功訪問請求的總數(shù)量雖然大于預(yù)設(shè)次數(shù),但是因為臨界訪問請求時間距離當(dāng)前訪問請求時間較長,例如超過一個預(yù)定單位時間,已經(jīng)被更新刪除了,此時,也可以說明在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi)的成功訪問請求的總數(shù)量是小于或者等于預(yù)設(shè)次數(shù),即小于訪問請求閾值的,那么當(dāng)前訪問請求能被允許,所以響應(yīng)當(dāng)前訪問請求。 步驟103,判斷所述臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),如果是,則拒絕當(dāng)前訪問請求,反之,則響應(yīng)當(dāng)前訪問請求。預(yù)定單位時間可以根據(jù)實際情況來設(shè)定,例如24小時,一個星期等等。距離當(dāng)前訪問請求時間的一個預(yù)定單位時間是指當(dāng)前接收訪問請求的時間再往前推一個預(yù)定單位時間,例如,當(dāng)前接收訪問請求的時間為2011年2月11日12:00:00,預(yù)定單位時間為24小時,那么距離當(dāng)前時間的一個預(yù)定單位時間內(nèi)則是指2011年2月10日12:00:00至2011年2月11日12:00:00這段時間。如果臨界訪問請求的請求時間是在這個時間段內(nèi),則說明在這個時間段內(nèi)用戶至少已經(jīng)提出過的成功訪問請求次數(shù)達到訪問請求閾值了,需要對其訪問請求進行控制,所以,拒絕當(dāng)前訪問請求,反之,則說明在這個時間段內(nèi)用戶提出的成功訪問請求還未達到訪問請求閾值,可以響應(yīng)當(dāng)前訪問請求。因為對于實現(xiàn)本申請的其中一個難點在于如何平滑、均勻地控制預(yù)定單位時間內(nèi)的網(wǎng)站流量,即保證在任何一個時間往前推一個預(yù)定單位時間內(nèi)的訪問請求數(shù)量都在訪問請求閾值之內(nèi),在前述的方法中,采用動態(tài)的單位時間,即通過判斷最近一次訪問請求往前推預(yù)設(shè)次數(shù)的臨界訪問請求是否存在以及若存在,其請求時間是否在當(dāng)前時間往前推的一個預(yù)定單位時間內(nèi)來實現(xiàn)平滑、均勻的控制預(yù)定單位時間內(nèi)的網(wǎng)站流量。參照圖2,示出本申請的網(wǎng)站流量控制方法實施例二,進一步地,在實施例一的步驟102之前還包括步驟步驟201,采用動態(tài)緩存存儲成功訪問請求的記錄信息,對所述記錄信息進行老化處理。具體的動態(tài)緩存存儲的每次成功訪問請求的記錄信息包括成功訪問請求的到期時間,老化處理為刪除到達到期時間的成功訪問請求的記錄信息。此處的成功訪問請求的到期時間是指訪問請求時間加上一個預(yù)定單位時間。動態(tài)緩存存儲每次成功訪問請求信息時就記錄下訪問請求的到期時間,同時結(jié)合動態(tài)緩存的過期老化機制,可以保證訪問請求信息過期自動被老化刪除。優(yōu)先的,采用緩存存儲每次成功訪問請求記錄信息時,其中的信息數(shù)據(jù)采用兩個計數(shù)器共同記錄來實現(xiàn),分別為總計數(shù)器和單次計數(shù)器。
總計數(shù)器記錄的信息包括用戶標(biāo)識、該用戶最近一次訪問請求的過期時間以及訪問請求的總次數(shù),每增加一次訪問請求,則更新一次總計數(shù)器,更新總計數(shù)器包括更新過期時間及總次數(shù)。單次計數(shù)器記錄的信息包括用戶標(biāo)識,該用戶本次訪問請求的過期時間以及本次訪問請求的序列號(即用戶的第幾次訪問請求),每增加一次訪問請求,則新建一個單次計數(shù)器。單次計數(shù)器中記錄的用戶第幾次訪問請求依賴于總計數(shù)器中所記錄的總次數(shù)來確定,每次新建單次計數(shù)器參照總計數(shù)器中的數(shù)據(jù)來實現(xiàn)。例如,假設(shè)在有新的訪問請求提出之前,總計數(shù)器中記錄的總次數(shù)為20,那么當(dāng)新的訪問請求提出時,會新建一個單次計數(shù)器,會在其中記錄這是用戶的第21次請求,同時會將總計數(shù)器中記錄的總次數(shù)更新為21。單次計數(shù)器和總計數(shù)器都會在到達過期時間時自動被刪除,當(dāng)有新的訪問請求提出時,則重新建立總計數(shù)器和單次計數(shù)器,重新開始從I計數(shù)。但是若在總計數(shù)器中記錄的過期時間到達之前有新的成功訪問請求,那么會產(chǎn)生新的過期時間覆蓋原來的更新時間。因此,可能會出現(xiàn)總計數(shù)器一直存在,但是單次計數(shù)器大部分都因為過期被刪除的情況,此時,當(dāng)有新的訪問請求提出時,則新建單次計數(shù)器,同時更新總計數(shù)器,單次計數(shù)器中的序 列號仍然根據(jù)總計數(shù)器中記錄的總次數(shù)確定。采用兩個計數(shù)器來對同一用戶實現(xiàn)記錄的方式,在建立每個單次計數(shù)器的時候都只用參照總計數(shù)器就能實現(xiàn)記錄,即查找位置固定,可以節(jié)省記錄的時間,提高計算機的反應(yīng)速度,同時可以避免記錄錯誤。其中,利用總計數(shù)器和單次計數(shù)器查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求記錄信息可以通過以下方式來實現(xiàn)步驟D1,根據(jù)用戶標(biāo)識查詢當(dāng)前用戶總計數(shù)器中記錄的總次數(shù)。步驟D2,將總次數(shù)減去預(yù)設(shè)次數(shù)得到臨界訪問請求的序列號。例如,記錄的總次數(shù)為30次,預(yù)設(shè)次數(shù)為19,那么可以得到臨界訪問請求的序列號為11。步驟D3,通過臨界訪問請求序列號查找對應(yīng)的單次計數(shù)器。因為采用數(shù)據(jù)庫進行存儲時,會有較多的問題。例如,在高并發(fā)的情況下,會產(chǎn)生大量對數(shù)據(jù)庫的請求,造成數(shù)據(jù)庫I/O巨大的壓力。另外,流量控制數(shù)據(jù)需要頻繁更新、過期,而數(shù)據(jù)庫在更新、過期的能力并不高,采用索引并不能體現(xiàn)出優(yōu)勢,但是如果不用索引,高并發(fā)的檢索響應(yīng)則又會比較慢。最重要的是,我們需要自己去實現(xiàn)主動更新、主動過期的代碼來調(diào)度這些數(shù)據(jù),容易出錯。因此本申請的另一個難點在于,如何使控制流量的方式簡單、容易實現(xiàn),同時對于高并發(fā)的網(wǎng)站應(yīng)用來說比較高效、響應(yīng)迅速。通過動態(tài)緩存的方式來存儲成功訪問請求的記錄信息,可以利用動態(tài)緩存的老化機制來實現(xiàn)成功訪問請求的自動老化處理,從而可以使過期的數(shù)據(jù)被刪除,避免產(chǎn)生大量的垃圾數(shù)據(jù)占用系統(tǒng)資源。另外,采用動態(tài)緩存的方式來存儲成功訪問請求的記錄信息,當(dāng)有新的訪問請求提出時,查詢該用戶對應(yīng)的總計數(shù)器以及某個單次計數(shù)器便可以確定是否給出響應(yīng),而無需在數(shù)據(jù)庫中進行大量的檢索等,控制方式簡單,容易實現(xiàn),且可以縮短響應(yīng)的時間,使響應(yīng)變得高效快速。即使出現(xiàn)訪問請求高并發(fā)的情況,因為采用動態(tài)緩存,且所需查詢的數(shù)據(jù)量較小,可以避免對其他資源的占用,同時可以避免采用數(shù)據(jù)庫存儲時的對數(shù)據(jù)庫所造成的I/o壓力??梢岳斫?,參照圖3,對于前述的方法實施例二來說,若采用動態(tài)緩存自動刪除到達過期時間的成功訪問請求記錄信息,那么步驟102和步驟103可以合并為一步,因為每個成功訪問請求記錄信息在到達過期時間時就會被刪除,若是臨界訪問請求時間在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間之前,那么到當(dāng)前訪問請求時間時,其記錄信息已經(jīng)因為到達過期時間被刪除了。所以,可以將步驟102和步驟103合并修改為步驟301,根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求記錄信息,所述臨界訪問請求指從最近一次成功訪問請求前推預(yù)設(shè)次數(shù)后所確定的成功訪問請求;若能查詢到目標(biāo)記錄信息,則拒絕當(dāng)前訪問請求,反之,則響應(yīng)當(dāng)前訪問請求。假設(shè),計數(shù)器采用三元組(key, timeout, value)表示。其中,key表示用戶標(biāo)識,timeout為訪問請求的過期時間,value為取值。為了區(qū)別,總計數(shù)器中的key采用用戶名加上總數(shù)等區(qū)別字樣來命名,timeout為最近一次成功訪問請求的到期時間,value為累積 請求的次數(shù);單次計數(shù)器中的key采用用戶名與次數(shù)來命名,timeout為本次成功訪問請求的到期時間,value用true,表示單次計數(shù)器存在。下面,以用戶名為Tom為例,假設(shè)預(yù)定單位時間為24小時,訪問請求閾值為20對本申請前述方法實施例進行說明。若Tom在2011年4月20日12:00:00針對某個網(wǎng)站提出訪問請求,當(dāng)系統(tǒng)接收到訪問請求后,獲取用戶標(biāo)識“Tom”,然后查找與“Tom”對應(yīng)的三元組計數(shù)器,可能出現(xiàn)能查找到與不能查找到的情況。若能查找到,則將總計數(shù)器中記錄的總次數(shù)減去訪問請求閾值,再加1,得到一個數(shù)值。例如,總計數(shù)器為(Tom total, 2011-4-20 08:00:00,80),可以得出總次數(shù)為80,那么得到的數(shù)值應(yīng)為61。然后查找第61次訪問請求對應(yīng)的單次計數(shù)器,若不能查找到,則說明單次計數(shù)器已經(jīng)被過期刪除了,在距離當(dāng)前訪問請求時間的24小時之內(nèi),用戶的成功訪問請求小于20次,系統(tǒng)會接收當(dāng)前訪問請求,并建立一個新的單次計數(shù)器(Tom 81,2011-4-21 12:00:00,true),同時更新總計數(shù)器為(Tom total,2011-4-21 12:00:00,81),然后對用戶當(dāng)前訪問請求給出響應(yīng)。若能查找到單次計數(shù)器,則說明在距離當(dāng)前訪問請求時間的24小時之內(nèi),用戶的成功訪問請求至少為20次,已經(jīng)達到上限,所以拒絕用戶當(dāng)前的訪問請求。若不能查找到,則說明用戶未對該網(wǎng)站提出過成功訪問請求或者所有的成功訪問請求時間都發(fā)生在至少24小時之前,所以系統(tǒng)會接收當(dāng)前訪問請求,同時建立一個新的總計數(shù)器和單次計數(shù)器,分別為(Tom total, 2011-4-21 12:00:00,I),(Tom 1,2011-4-2112:00:00, true),然后對用戶當(dāng)前訪問請求給出響應(yīng)。其中,對與單次計數(shù)器和總計數(shù)器的三元組數(shù)據(jù)可以采用memcached來存儲,可以滿足三元組的高可用性、高并發(fā)性、事務(wù)保障的要求。memcached具有如下優(yōu)點(a)memcached的讀寫性能較好,因為是基于內(nèi)存存儲而設(shè)計的,性能會好于基于磁盤的數(shù)據(jù)庫,同時沒有磁盤輸入/輸入壓力,另外采用緩存自動過期的老化機制可以大大減少存儲的數(shù)據(jù)量,所以也沒有必要采用存儲大量數(shù)據(jù)的數(shù)據(jù)庫。(b)memcached是基于key-value的結(jié)構(gòu),增、刪、改、查的效率較高,從而不需要考慮類似數(shù)據(jù)的索引的問題,同時所有修改操作都是簡單的代碼序列,需要實現(xiàn)的事務(wù)保障,因此具有較高的效率。
(c) memcached的部署方便,對環(huán)境要求低,另外memcached有自動過期的功能,對于采用過期時間定義的三元組,能很好實現(xiàn)自動刪除過期三元組,既保證業(yè)務(wù)邏輯正確又能控制內(nèi)存使用。參照圖4,示出本申請的一種網(wǎng)站流量控制裝置實施例一,此處的裝置中的各個模塊是指基于計算機語言編寫的計算機程序,存儲于服務(wù)器或者客戶端中,并通過處理器運行。網(wǎng)站流量控制裝置包括用戶標(biāo)識獲取模塊10、臨界訪問請求的記錄信息查詢模塊30、判斷模塊40及響應(yīng)模塊50。用戶標(biāo)識獲取模塊10,用于接收用戶訪問請求,并獲取用戶標(biāo)識。臨界訪問請求記錄信息查詢模塊30,用于根據(jù)用戶標(biāo)識來查詢臨界訪問請求的記錄信息,若能查詢到,則將信息傳遞給判斷模塊40,反之,則將信息傳遞給響應(yīng)模塊50。具體的,臨界訪問請求記錄信息查詢模塊30可以通過計數(shù)器來實現(xiàn),例如,用三元組表示的 計數(shù)器。判斷模塊40,用于判斷臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),并將判斷結(jié)果傳遞給響應(yīng)模塊50。響應(yīng)模塊50,用于根據(jù)臨界訪問請求的記錄信息查詢模塊30及判斷模塊40傳遞的信息對用戶訪問請求作出回應(yīng)。若是臨界訪問請求記錄信息查詢模塊30傳遞的信息以及判斷模塊40判斷出的臨界訪問請求時間在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),那么響應(yīng)用戶訪問請求,反之則拒絕用戶訪問請求。參照圖5,示出本申請的網(wǎng)站流量控制裝置實施例二,進一步地,網(wǎng)站流量控制裝置還包括動態(tài)緩存模塊60,用于存儲用戶的成功訪問請求記錄信息,并根據(jù)訪問請求的到期時間對記錄信息進行老化處理。判斷模塊30根據(jù)動態(tài)緩存模塊60的記錄信息來讀取相關(guān)成功訪問請求的到期時間。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上對本申請所提供的網(wǎng)站流量控制方法及裝置進行了詳細介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
權(quán)利要求
1.一種網(wǎng)站流量控制方法,其特征在于,包括以下步驟 接收用戶訪問請求,獲取用戶標(biāo)識; 根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息,所述臨界訪問請求指從最近一次成功訪問請求前推預(yù)設(shè)次數(shù)后所確定的成功訪問請求;若能查詢到目標(biāo)記錄信息,則進行下一步驟,反之,則響應(yīng)當(dāng)前訪問請求; 判斷所述臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),如果是,則拒絕當(dāng)前訪問請求,反之,則響應(yīng)當(dāng)前訪問請求。
2.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息之前還包括以下步驟 采用動態(tài)緩存存儲成功訪問請求記錄信息,對所述記錄信息進行老化處理。
3.如權(quán)利要求2所述的方法,其特征在于,所述動態(tài)緩存存儲的成功訪問請求記錄信息包括 成功訪問請求的到期時間,所述到期時間為成功訪問請求的請求時間加上預(yù)定單位時間。
4.如權(quán)利要求3所述的方法,其特征在于,對所述記錄信息進行老化處理包括 刪除到達過期時間的成功訪問請求記錄信息。
5.如權(quán)利要求3所述的方法,其特征在于,所述采用緩存存儲成功訪問請求記錄信息包括以下步驟 采用總計數(shù)器記錄用戶最近一次訪問請求的到期時間及訪問請求的總次數(shù); 采用單次計數(shù)器記錄用戶本次訪問請求的過期時間及本次訪問請求的序列號。
6.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括 判斷動態(tài)緩存中是否存儲有當(dāng)前用戶的成功訪問請求記錄信息; 若是,則為新的成功訪問請求記錄信息新建一個單次計數(shù)器,并更新總計數(shù)器,所述單次計數(shù)器中的序列號為更新后總計數(shù)器中記錄的總次數(shù); 反之,則為新的成功訪問請求記錄信息新建一個單次計數(shù)器和總計數(shù)器,所述單次計數(shù)器中的序列號與所述總計數(shù)器的總次數(shù)相同。
7.如權(quán)利要求6所述的方法,其特征在于,所述查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息包括以下步驟 查詢當(dāng)前用戶總計數(shù)器中記錄的總次數(shù); 將總次數(shù)減去訪問請求閾值后的值加一,得到臨界訪問請求的序列號; 根據(jù)序列號查詢臨界訪問請求對應(yīng)的單次計數(shù)器。
8.如權(quán)利要求5所述的方法,其特征在于,所述總計數(shù)器和單次計數(shù)器采用三元組(key, timeout, value)表示,其中,key表示用戶標(biāo)識,timeout為訪問請求的過期時間,value為取值。
9.一種網(wǎng)站流量控制裝置,其特征在于,包括 用戶標(biāo)識獲取模塊,接收用戶訪問請求,并獲取用戶標(biāo)識; 臨界訪問請求記錄信息查詢模塊,根據(jù)用戶標(biāo)識來查詢臨界訪問請求記錄信息,若能查詢到,則將信息傳遞給判斷模塊,反之,則將信息傳遞給響應(yīng)模塊; 判斷模塊,判斷臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi); 響應(yīng)模塊,根據(jù)臨界訪問請求記錄信息查詢模塊及判斷模塊傳遞的信息對用戶訪問請求作出回應(yīng)。
10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括 動態(tài)緩存模塊,存儲用戶的成功訪問請求記錄信息,并對所述記錄信息進行老化處理。
全文摘要
本申請?zhí)峁┝艘环N網(wǎng)站流量控制方法,包括接收用戶訪問請求,獲取用戶標(biāo)識;根據(jù)用戶標(biāo)識查詢用戶針對當(dāng)前網(wǎng)站的臨界訪問請求的記錄信息,所述臨界訪問請求指從最近一次成功訪問請求前推預(yù)設(shè)次數(shù)后所確定的成功訪問請求;若能查詢到目標(biāo)記錄信息,則進行下一步驟,反之,則響應(yīng)當(dāng)前訪問請求;判斷所述臨界訪問請求的請求時間是否在距離當(dāng)前訪問請求時間的一個預(yù)定單位時間內(nèi),如果是,則拒絕當(dāng)前訪問請求,反之,則響應(yīng)當(dāng)前訪問請求。本發(fā)明還提供了一種網(wǎng)站流量控制裝置。本申請的網(wǎng)站流量控制方法及系統(tǒng),能夠合理的對網(wǎng)站流量進行控制。
文檔編號H04L12/56GK102780603SQ20111012088
公開日2012年11月14日 申請日期2011年5月11日 優(yōu)先權(quán)日2011年5月11日
發(fā)明者唐志慧, 王燁 申請人:阿里巴巴集團控股有限公司