本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種條目提取方法和裝置。
背景技術(shù):
在大規(guī)模表存儲(chǔ)結(jié)構(gòu)中,經(jīng)常需要獲取訪問頻率高的一些條目,例如,最經(jīng)常訪問的前8個(gè)條目,以對(duì)條目進(jìn)行分析和進(jìn)行控制操作。
相關(guān)技術(shù)中,為獲取訪問頻率最高的一些條目,通常為每一個(gè)條目增加一個(gè)計(jì)數(shù)器和一個(gè)初始計(jì)數(shù)記錄,在指定的時(shí)間后觀察統(tǒng)計(jì)每一個(gè)條目的初始計(jì)數(shù)與當(dāng)前計(jì)數(shù)之間的計(jì)數(shù)差值,進(jìn)行排序后取得訪問頻率最高的前N(例如,10個(gè))個(gè)條目。
但是,這種獲取訪問頻率高的條目的方法會(huì)耗費(fèi)極大的存儲(chǔ)空間。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種條目提取方法和裝置,以在獲取訪問頻率高的條目的過程中節(jié)省存儲(chǔ)空間。
一方面,提供一種條目提取方法,其特征在于,所述方法包括:
從第一個(gè)采樣周期開始直到最后一個(gè)采樣周期的前一個(gè)采樣周期,執(zhí)行以下步驟:
a.獲取當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù);
b.根據(jù)所述當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù),確定所述當(dāng)前采樣周期內(nèi)條目訪問的平均值;
c.移除所述當(dāng)前采樣周期內(nèi)訪問次數(shù)小于所述平均值的條目,并將訪問次數(shù)不小于所述平均值的條目作為下一采樣周期內(nèi)的條目;
d.確定下一采樣周期是否為最后一個(gè)采樣周期;
若下一采樣周期不為最后一個(gè)采樣周期,重復(fù)步驟a~d,直到下一采樣周期為最后一個(gè)采樣周期;
當(dāng)下一采樣周期為最后一個(gè)采樣周期時(shí),按照訪問次數(shù)從高到低的順序提取最后一個(gè)采樣周期中的指定個(gè)條目。
可選地,在一個(gè)實(shí)施例中,所述方法還包括:
確定提取的所述指定個(gè)條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將提取的所述指定個(gè)條目中超過閾值的條目封鎖指定時(shí)間。
可選地,在另一個(gè)實(shí)施例中,在步驟c之后,所述方法還包括:
針對(duì)當(dāng)前采樣周期,確定訪問次數(shù)不小于所述平均值的條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將訪問次數(shù)超過閾值的條目進(jìn)行封鎖。
可選地,在另一個(gè)實(shí)施例中,所述方法還包括:
當(dāng)封鎖的條目數(shù)目達(dá)到指定的條目數(shù)目的情況下,對(duì)于后續(xù)各個(gè)采樣周期,將后續(xù)各個(gè)采樣周期內(nèi)需要封鎖的條目進(jìn)行封鎖,同時(shí)將已封鎖的條目中的至少一個(gè)條目進(jìn)行解封鎖;
其中,封鎖的條目數(shù)目等于解封鎖的條目數(shù)目;
其中,所述需要封鎖的條目為訪問次數(shù)超過所述閾值的條目。
可選地,在另一個(gè)實(shí)施例中,所述將后續(xù)各個(gè)采樣周期內(nèi)需要封鎖的條目進(jìn)行封鎖,同時(shí)將已封鎖的條目中的至少一個(gè)條目進(jìn)行解封鎖包括:
在進(jìn)行條目封鎖時(shí),按照訪問次數(shù)從高到低的順序選取條目進(jìn)行封鎖;
在進(jìn)行條目解封鎖時(shí),按照訪問次數(shù)從低到高的順序或者按照封鎖時(shí)間從先到后的順序進(jìn)行解封鎖。
可選地,在本發(fā)明實(shí)施例中,所述條目為IP地址或統(tǒng)一資源定位符(URL)地址,所述閾值為每秒數(shù)據(jù)包(PPS)的閾值或每秒請(qǐng)求(RPS)的閾值。
可選地,在另一個(gè)實(shí)施例中,所述方法還包括:以固定大小的存儲(chǔ)空間存儲(chǔ)提取的所述指定個(gè)條目。
另一方面,提供一種條目提取裝置,所述裝置包括獲取模塊和處理模塊;
從第一個(gè)采樣周期開始直到最后一個(gè)采樣周期的前一個(gè)采樣周期:
所述獲取模塊,用于獲取當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù);
所述處理模塊,用于根據(jù)所述當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù),確定所述當(dāng)前采樣周期內(nèi)條目訪問的平均值;
所述處理模塊,還用于移除所述當(dāng)前采樣周期內(nèi)訪問次數(shù)小于所述平均值的條目,并將訪問次數(shù)不小于所述平均值的條目作為下一采樣周期內(nèi)的條目;
所述處理模塊,還用于當(dāng)下一采樣周期為最后一個(gè)采樣周期時(shí),按照訪問次數(shù)從高到低的順序提取最后一個(gè)采樣周期中的指定個(gè)條目。
可選地,在一個(gè)實(shí)施例中,所述處理模塊還用于:
確定提取的所述指定個(gè)條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將提取的所述指定個(gè)條目中超過閾值的條目封鎖指定時(shí)間。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊還用于:
針對(duì)當(dāng)前采樣周期,確定訪問次數(shù)不小于所述平均值的條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將訪問次數(shù)超過閾值的條目進(jìn)行封鎖。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊具體用于:
當(dāng)封鎖的條目數(shù)目達(dá)到指定的條目數(shù)目的情況下,對(duì)于后續(xù)各個(gè)采樣周期,將后續(xù)各個(gè)采樣周期內(nèi)需要封鎖的條目進(jìn)行封鎖,同時(shí)將已封鎖的條目中的至少一個(gè)條目進(jìn)行解封鎖;
其中,封鎖的條目數(shù)目等于解封鎖的條目數(shù)目;
其中,所述需要封鎖的條目為訪問次數(shù)超過所述閾值的條目。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊具體用于:
在進(jìn)行條目封鎖時(shí),按照訪問次數(shù)從高到低的順序選取條目進(jìn)行封鎖;
在進(jìn)行條目解封鎖時(shí),按照訪問次數(shù)從低到高的順序或者按照封鎖時(shí)間從先到后的順序進(jìn)行解封鎖。
其中,在本發(fā)明實(shí)施例中,所述條目為IP地址或統(tǒng)一資源定位符(URL)地址,所述閾值為每秒數(shù)據(jù)包(PPS)的閾值或每秒請(qǐng)求(RPS)的閾值。
可選地,在另一個(gè)實(shí)施例中,所述裝置還包括:
存儲(chǔ)模塊,用于以固定大小的存儲(chǔ)空間存儲(chǔ)提取的所述指定個(gè)條目。
另一方面,提供一種終端設(shè)備,所述終端設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)執(zhí)行本發(fā)明實(shí)施例中的任一種條目提取方法。
另一方面,提供一種非臨時(shí)性存儲(chǔ)介質(zhì),所述非臨時(shí)性存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)執(zhí)行本發(fā)明實(shí)施例中的任一種條目提取方法。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
通過對(duì)每個(gè)采樣周期內(nèi)各個(gè)條目的訪問次數(shù)求平均、去除訪問次數(shù)在平均值以下的條目,并將當(dāng)前處理后得到的條目作為下一采樣周期的條目,如此循環(huán)處理,可以保證最后一個(gè)采樣周期內(nèi)得到的條目是訪問次數(shù)高的條目,且占用的存儲(chǔ)空間較小。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的條目提取方法的流程圖。
圖2是本發(fā)明實(shí)施例提供的條目提取裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
圖1是本發(fā)明實(shí)施例提供的條目提取方法的流程圖。參照?qǐng)D1,從第一個(gè)采樣周期開始直到最后一個(gè)采樣周期的前一個(gè)采樣周期,本發(fā)明實(shí)施例提供的條目提取方法可包括:
11、獲取當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù)。
其中,本發(fā)明實(shí)施例中的“條目”可以為各種不同形式的條目,例如,所述條目為IP地址或URL地址等等。本發(fā)明實(shí)施例對(duì)條目的具體形式不做具體限定。
本發(fā)明實(shí)施例中,條目可以為服務(wù)端中的條目。對(duì)條目的訪問一般是指客戶端對(duì)服務(wù)端條目的訪問。
12、根據(jù)所述當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù),確定所述當(dāng)前采樣周期內(nèi)條目訪問的平均值。
13、移除所述當(dāng)前采樣周期內(nèi)訪問次數(shù)小于所述平均值的條目,并將訪問次數(shù)不小于所述平均值的條目作為下一采樣周期內(nèi)的條目。
14、確定下一采樣周期是否為最后一個(gè)采樣周期。
若下一采樣周期不為最后一個(gè)采樣周期,重復(fù)步驟a~d,直到下一采樣周期為最后一個(gè)采樣周期。
在下一采樣周期為最后一個(gè)采樣周期時(shí),執(zhí)行步驟15。
15、按照訪問次數(shù)從高到低的順序提取最后一個(gè)采樣周期中的指定個(gè)條目。
在本發(fā)明實(shí)施例中,以三個(gè)采樣周期t1-t3為例,舉例而言,條目提取的過程可以為:先獲取第一個(gè)采樣周期t1中各個(gè)條目的訪問次數(shù),并計(jì)算第一采樣周期內(nèi)條目訪問的第一平均值v1;然后去除第一采樣周期t1中訪問次數(shù)小于第一平均值v1的條目,將第一采樣周期中不小于第一平均值的條目作為第二采樣周期t2的輸入。由于第二采樣周期不是最后一個(gè)采樣周期,同樣地,對(duì)于第二采樣周期,也是先獲取第二個(gè)采樣周期t2中各個(gè)條目的訪問次數(shù),并計(jì)算第二采樣周期內(nèi)條目訪問的第二平均值v2;然后去除第二采樣周期t2中訪問次數(shù)小于第二平均值v2的條目,將第二采樣周期中不小于第二平均值的條目作為第三采樣周期t3的輸入。此時(shí),由于第三采樣周期為最后一個(gè)采樣周期,因而,從作為第三采樣周期t3的輸入的第二采樣周期中不小于第二平均值的條目,和第三采樣周期內(nèi)的條目中,按照訪問次數(shù)從高到低的順序提取指定個(gè)條目。
在本發(fā)明實(shí)施例中,待提取到指定數(shù)目個(gè)條目后,可以以固定大小的存儲(chǔ)空間存儲(chǔ)提取的所述指定個(gè)條目。
本發(fā)明實(shí)施例提供的條目提取方法,通過對(duì)每個(gè)采樣周期內(nèi)各個(gè)條目的訪問次數(shù)求平均、去除訪問次數(shù)在平均值以下的條目,并將當(dāng)前處理后得到的條目作為下一采樣周期的條目,如此循環(huán)處理,可以保證最后一個(gè)采樣周期內(nèi)得到的條目是訪問次數(shù)高的條目,且占用的存儲(chǔ)空間較小。
本發(fā)明實(shí)施例提供的條目提取的方法可應(yīng)用于設(shè)定時(shí)間的條目提取。例如,提取10分鐘內(nèi)或20分鐘內(nèi)或其他時(shí)間段內(nèi)訪問頻率高的條目。在此情形下,可將設(shè)定的時(shí)間段劃分為多個(gè)采樣周期,然后對(duì)每個(gè)采樣周期應(yīng)用上面所描述的條目提取方法。待提取到指定數(shù)目個(gè)訪問頻率高的條目后,可進(jìn)一步確定提取的所述指定個(gè)條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;將提取的所述指定個(gè)條目中超過閾值的條目封鎖指定時(shí)間。
本發(fā)明實(shí)施例中的“閾值”為可以例如為每秒數(shù)據(jù)包(Packet Per Second,PPS)的閾值或每秒請(qǐng)求(Request Per Second,RPS)的閾值等等。本發(fā)明實(shí)施例對(duì)閾值的具體形式不做具體限定。
本發(fā)明實(shí)施例中,對(duì)條目的封鎖是指,阻止對(duì)條目的訪問。也就是說,一旦條目被封鎖后,任何訪問請(qǐng)求都不能繼續(xù)對(duì)條目進(jìn)行訪問。
若對(duì)條目的訪問超過閾值,則可以判定這種訪問可能是異常的攻擊。通過對(duì)超過閾值的條目進(jìn)行封鎖,可以有效減緩或停止這種異常攻擊。
在本發(fā)明實(shí)施例中,不但可以在最后一個(gè)采樣周期提取條目的操作完成后,對(duì)指定個(gè)條目中的至少一個(gè)條目進(jìn)行封鎖,還可以在每一采樣周期執(zhí)行條目封鎖操作,即,在移除當(dāng)前采樣周期內(nèi)訪問次數(shù)小于平均值的條目的同時(shí),對(duì)確定訪問次數(shù)不小于所述平均值的條目中的各個(gè)條目的訪問次數(shù)是否超過閾值,然后將訪問次數(shù)超過閾值的條目進(jìn)行封鎖。具體地,同樣以三個(gè)采樣周期t1-t3為例,假定需要提取的條目數(shù)目為10個(gè),舉例而言,若第一個(gè)采樣周期t1中有一個(gè)條目的訪問次數(shù)超過閾值,則可將這個(gè)條目進(jìn)行封鎖;若第二個(gè)采樣周期t2中有三個(gè)條目的訪問次數(shù)超過閾值,則將這三個(gè)條目進(jìn)行封鎖;若第三個(gè)采樣周期t3中有四個(gè)條目的訪問次數(shù)超過閾值,則將這四個(gè)條目進(jìn)行封鎖。
當(dāng)然,在本發(fā)明實(shí)施例中,當(dāng)封鎖的條目數(shù)目達(dá)到指定的條目數(shù)目的情況下,對(duì)于后續(xù)各個(gè)采樣周期,將后續(xù)各個(gè)采樣周期內(nèi)需要封鎖的條目進(jìn)行封鎖,同時(shí)將已封鎖的條目中的至少一個(gè)條目進(jìn)行解封鎖;其中,所述需要封鎖的條目為訪問次數(shù)超過所述閾值的條目。
具體地,舉例而言,若指定提取的條目數(shù)目為10個(gè),且前三個(gè)采樣周期t1-t3分別封鎖了1個(gè)、3個(gè)和4個(gè)條目的情況下,只剩下2個(gè)封鎖名額。若第四個(gè)采樣周期t4需要封鎖的條目數(shù)目為4個(gè),此時(shí)由于采樣周期t4需要封鎖的條目數(shù)目(即,4個(gè))超出了剩下的封鎖名額(即,2個(gè)),無法直接將采樣周期t4中的這4個(gè)需要封鎖的條目直接進(jìn)行封鎖,而需要先將之前封鎖的8個(gè)條目中解封所2個(gè)條目(即,釋放2個(gè)名額),才能完成對(duì)采樣周期t4需要封鎖的條目進(jìn)行封鎖。
一旦封鎖的條目數(shù)目已有10個(gè),則在后續(xù)采樣周期中,需要封鎖的條目數(shù)目等于解封鎖的條目數(shù)目。具體地,后續(xù)在第五個(gè)采樣周期t5中需要封鎖的條目數(shù)目為5個(gè),此時(shí)由于10個(gè)指定的封鎖條目數(shù)目已占滿,需要從這10個(gè)封鎖條目中解封鎖5個(gè)條目,才能完成對(duì)采樣周期t5中需要封鎖的5個(gè)條目進(jìn)行封鎖。
其中,在封鎖和解封鎖的過程中,可以按照一定的優(yōu)先次序來進(jìn)行。具體地,本發(fā)明實(shí)施例在進(jìn)行條目封鎖時(shí),可以按照訪問次數(shù)從高到低的順序選取條目進(jìn)行封鎖;同時(shí),在進(jìn)行條目解封鎖時(shí),按照訪問次數(shù)從低到高的順序或者按照封鎖時(shí)間從先到后的順序進(jìn)行解封鎖。即,在指定數(shù)目的條目(在示例中為10個(gè))已被封鎖的情況下,訪問次數(shù)少的條目或者封鎖時(shí)間最早的條目可以優(yōu)先進(jìn)行解封鎖。其中,封鎖的條目數(shù)目可等于解封鎖的條目數(shù)目。
本發(fā)明實(shí)施例中的“條目”可以為各種不同形式的條目,例如,所述條目為IP地址或URL地址等等。本發(fā)明實(shí)施例中的“閾值”為可以例如為每秒數(shù)據(jù)包(Packet Per Second,PPS)的閾值或每秒請(qǐng)求(Request Per Second,RPS)的閾值等等。本發(fā)明實(shí)施例對(duì)條目和閾值的具體形式不做具體限定。
在本發(fā)明實(shí)施例中,將整個(gè)時(shí)間域劃分為一個(gè)個(gè)時(shí)間段(例如,T1、T2…等)來計(jì)算,然后在每個(gè)時(shí)間段內(nèi)再劃分為一個(gè)個(gè)的采樣周期(t1、t2…等)。在本文描述中n為提取的指定條目數(shù)目,可以使用一個(gè)大小為n的小數(shù)組(例如n=10)和一個(gè)n*n的矩陣。在T(例如,T1或T2等)時(shí)間段內(nèi)劃分多個(gè)采樣周期,并對(duì)大規(guī)模表的訪問進(jìn)行多次采樣,將采樣所得的針對(duì)條目和訪問次數(shù)的訪問量記錄到數(shù)組中,條目到數(shù)組索引的運(yùn)算由矩陣給出。
當(dāng)一個(gè)采樣周期結(jié)束后,計(jì)算采樣的各個(gè)條目訪問次數(shù)的平均值,然后去除該采樣周期內(nèi)訪問次數(shù)小于平均值的條目。在此基礎(chǔ)上再進(jìn)行繼續(xù)采樣。待T時(shí)間段到的時(shí)候,已經(jīng)進(jìn)行了很多次采樣,在最后留在n個(gè)數(shù)組內(nèi)超過平均數(shù)的條目就是訪問最頻繁的n個(gè)條目。再對(duì)這n個(gè)條目中訪問次數(shù)超過閾值的進(jìn)行訪問封鎖,后續(xù)組的采樣將不會(huì)記錄已經(jīng)被封鎖的條目。封鎖的條目可以設(shè)定封鎖的時(shí)間,當(dāng)封鎖時(shí)間到的時(shí)候,放開已經(jīng)封鎖的條目。
當(dāng)然,在本發(fā)明實(shí)施例中,也可以逐次放開已經(jīng)封鎖的條目。逐次放開已經(jīng)封鎖條目的策略是:由于每個(gè)采樣周期并不能得到n個(gè)最高的條目,只是得到一部分,但是考慮經(jīng)過了若干個(gè)采樣周期之后得到了n個(gè)封鎖的條目。但是下一個(gè)采樣周期來臨時(shí)又得出了新的封鎖條目,此時(shí),就會(huì)把之前已經(jīng)封禁的條目釋放封鎖(例如,按照訪問次數(shù)從低到高的順序釋放封鎖),釋放封鎖的條目數(shù)目可以等于新添加的封鎖條目數(shù)目。
本發(fā)明實(shí)施例中是將時(shí)間域用于存儲(chǔ)信息,而不是把所有的信息存儲(chǔ)在內(nèi)存空間。然后通過去除舊封鎖條目引入新封鎖條目的策略,來動(dòng)態(tài)控制的封禁的前n個(gè)條目(例如,訪問量最高的前n個(gè)條目)。如此便實(shí)現(xiàn)了對(duì)整個(gè)時(shí)間域內(nèi)動(dòng)態(tài)的前n個(gè)條目的封鎖。
在本發(fā)明實(shí)施例中,前n個(gè)條目是基于時(shí)間段而動(dòng)態(tài)變化的,因而,對(duì)于前n個(gè)條目的選取只能是以一個(gè)時(shí)間段為標(biāo)桿。本公開中的時(shí)間段是坐標(biāo)軸上順序移動(dòng)的大于采樣周期的動(dòng)態(tài)間隔,并沒有上限。上限取決于前n個(gè)條目中超過閾值的條目的規(guī)模。如果在一個(gè)小時(shí)內(nèi)封禁數(shù)目都沒有超過n個(gè),則可以認(rèn)為一個(gè)小時(shí)內(nèi)已經(jīng)封禁的條目還應(yīng)該繼續(xù)封禁。
可見,如果條目中只會(huì)有個(gè)別的條目訪問量突然大規(guī)模增長(zhǎng),就應(yīng)該把n設(shè)置的盡量小。如果有很多個(gè)條目會(huì)出現(xiàn)訪問量異常,就應(yīng)該n設(shè)置的較大。所以n的選取是取決于系統(tǒng)的訪問特性。
本發(fā)明實(shí)施例提供的條目提取方法,不僅可以節(jié)省CPU資源和內(nèi)存資源,而且通過對(duì)條目進(jìn)行封鎖,可以避免條目收到異常攻擊。
圖2是本發(fā)明實(shí)施例提供的一種條目提取裝置的結(jié)構(gòu)框圖。參照?qǐng)D2,本發(fā)明實(shí)施例提供的條目提取裝置200可包括獲取模塊201和處理模塊202。其中:
從第一個(gè)采樣周期開始直到最后一個(gè)采樣周期的前一個(gè)采樣周期,所述獲取模塊201和所述處理模塊202分別執(zhí)行以下操作:
所述獲取模塊201,用于獲取當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù);
所述處理模塊202,用于根據(jù)所述當(dāng)前采樣周期內(nèi)對(duì)各個(gè)條目的訪問次數(shù),確定所述當(dāng)前采樣周期內(nèi)條目訪問的平均值;
所述處理模塊202,還用于移除所述當(dāng)前采樣周期內(nèi)訪問次數(shù)小于所述平均值的條目,并將訪問次數(shù)不小于所述平均值的條目作為下一采樣周期內(nèi)的條目;
所述處理模塊202,還用于當(dāng)下一采樣周期為最后一個(gè)采樣周期時(shí),按照訪問次數(shù)從高到低的順序提取最后一個(gè)采樣周期中的指定個(gè)條目。
本發(fā)明實(shí)施例提供的條目提取裝置,通過對(duì)每個(gè)采樣周期內(nèi)各個(gè)條目的訪問次數(shù)求平均、去除訪問次數(shù)在平均值以下的條目,并將當(dāng)前處理后得到的條目作為下一采樣周期的條目,如此循環(huán)處理,可以保證最后一個(gè)采樣周期內(nèi)得到的條目是訪問次數(shù)高的條目,且占用的存儲(chǔ)空間較小。
可選地,在一個(gè)實(shí)施例中,所述處理模塊202還用于:
確定提取的所述指定個(gè)條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將提取的所述指定個(gè)條目中超過閾值的條目封鎖指定時(shí)間。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊202還用于:
針對(duì)當(dāng)前采樣周期,確定訪問次數(shù)不小于所述平均值的條目中的各個(gè)條目的訪問次數(shù)是否超過閾值;
將訪問次數(shù)超過閾值的條目進(jìn)行封鎖。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊202具體用于:
當(dāng)封鎖的條目數(shù)目達(dá)到指定的條目數(shù)目的情況下,對(duì)于后續(xù)各個(gè)采樣周期,將后續(xù)各個(gè)采樣周期內(nèi)需要封鎖的條目進(jìn)行封鎖,同時(shí)將已封鎖的條目中的至少一個(gè)條目進(jìn)行解封鎖;
其中,封鎖的條目數(shù)目等于解封鎖的條目數(shù)目;
其中,所述需要封鎖的條目為訪問次數(shù)超過所述閾值的條目。
可選地,在另一個(gè)實(shí)施例中,所述處理模塊202具體用于:
在進(jìn)行條目封鎖時(shí),按照訪問次數(shù)從高到低的順序選取條目進(jìn)行封鎖;
在進(jìn)行條目解封鎖時(shí),按照訪問次數(shù)從低到高的順序或者按照封鎖時(shí)間從先到后的順序進(jìn)行解封鎖。
在本發(fā)明實(shí)施例中,所述條目可以為IP地址或URL地址,所述閾值為PPS的閾值或RPS的閾值。
可選地,在另一個(gè)實(shí)施例中,所述裝置200還包括:存儲(chǔ)模塊203,用于以固定大小的存儲(chǔ)空間存儲(chǔ)提取的所述指定個(gè)條目。
需要指出的是,在相關(guān)技術(shù)中,耗費(fèi)的CPU資源和內(nèi)存資源是隨著集合中條目的數(shù)目線性增長(zhǎng)的,而且在條目巨大的時(shí)候耗費(fèi)是驚人的。本發(fā)明實(shí)施例提供的條目提取的方法和裝置,對(duì)CPU和內(nèi)存的需要限制在一定的規(guī)模,不隨著條目數(shù)目的增長(zhǎng)而變化。并且,所需的內(nèi)存和CPU資源都是非常小的。具體地,假設(shè)有300萬個(gè)條目,不采用本裝置需要的內(nèi)存是300w*8字節(jié),本裝置固定的使用n*24字節(jié)的內(nèi)存(上文中以n為10為例進(jìn)行了說明)。不采用本公開時(shí)要遍歷計(jì)算300w次,采用了本公開后只需遍歷n*2次,外加額外的n*n的矩陣運(yùn)算(以n為10為例)。可以看到無論內(nèi)存資源還是CPU資源都是上百萬數(shù)量級(jí)的提升。
需要說明的是:上述實(shí)施例提供的條目提取裝置,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將條目提取裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的條目提取裝置和條目提取方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。