一種慢速網(wǎng)站訪問(wèn)異常信息的查詢方法及裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信息的查詢方法及裝置,其包括:獲取用戶反饋的記錄中包含的目的地址,利用數(shù)據(jù)源統(tǒng)計(jì)目的地址的訪問(wèn)情況;其中,所述目的地址類型包括目的IP和URL地址,且根據(jù)目的地址類型的不同選擇不同的數(shù)據(jù)源進(jìn)行統(tǒng)計(jì);如果是目的IP,則采用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP的訪問(wèn)情況;如果是URL地址,則在相應(yīng)數(shù)據(jù)源中查找并統(tǒng)計(jì)URL地址的訪問(wèn)情況;通過(guò)鏈表排序得到目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;其中,所述訪問(wèn)次數(shù)從統(tǒng)計(jì)得到的訪問(wèn)情況中獲得;顯示排序得到的結(jié)果。本發(fā)明通過(guò)對(duì)海量數(shù)據(jù)統(tǒng)計(jì),實(shí)時(shí)獲取用戶反饋的網(wǎng)站域名或URL的訪問(wèn)情況。
【專利說(shuō)明】一種慢速網(wǎng)站訪問(wèn)異常信息的查詢方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種基于IP和URL實(shí)時(shí)采集數(shù)據(jù)的慢 速網(wǎng)站訪問(wèn)異常信息的查詢方法及系統(tǒng)。本發(fā)明通過(guò)hadoop集群對(duì)海量數(shù)據(jù)統(tǒng)計(jì),結(jié)合慢 速網(wǎng)站中用戶反饋信息,實(shí)時(shí)獲取用戶反饋的網(wǎng)站域名或URL的訪問(wèn)情況。
【背景技術(shù)】
[0002] 近年來(lái),隨著網(wǎng)絡(luò)技術(shù)的普及和發(fā)展,中國(guó)網(wǎng)民的數(shù)量急劇增長(zhǎng)。中國(guó)互聯(lián)網(wǎng)絡(luò)信 息中心(CNNIC)日前在京發(fā)布《第33次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》。報(bào)告顯示,截 至2013年12月,中國(guó)網(wǎng)民規(guī)模達(dá)6. 18億,全年共計(jì)新增網(wǎng)民5358萬(wàn)人?;ヂ?lián)網(wǎng)普及率為 45. 8%,較2012年底提升3. 7個(gè)百分點(diǎn)。面對(duì)日益增長(zhǎng)的網(wǎng)名數(shù)量,作為網(wǎng)絡(luò)服務(wù)商,需要 了解網(wǎng)絡(luò)的運(yùn)行狀況,同時(shí)為用戶提供更快更優(yōu)的網(wǎng)絡(luò)環(huán)境。
[0003] 慢速網(wǎng)站為用戶提供了反饋某一個(gè)網(wǎng)站或者目的IP的訪問(wèn)情況。用戶可以將某 個(gè)域名或URL訪問(wèn)正常的信息根據(jù)系統(tǒng)的要求提供出來(lái),以便其他有問(wèn)題的訪問(wèn)者根據(jù)相 關(guān)的反饋信息選擇合適的DNS。針對(duì)用戶反饋的無(wú)響應(yīng)或者響應(yīng)速度不穩(wěn)定,時(shí)好時(shí)壞的網(wǎng) 站域名URL或者目的IP,通過(guò)hadoop或者URL庫(kù)記錄查詢出其他用戶訪問(wèn)的情況,通過(guò)獲 取這些用戶的DNS,為其他用戶提供較優(yōu)的DNS,及時(shí)迅速的解決用戶提出的問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明提出了一種基于IP和URL的通過(guò)hadoop或者URL庫(kù)記錄實(shí)時(shí) 數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信息查詢方法。
[0005] 根據(jù)本發(fā)明一方面,其提供了一種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn) 異常信息的查詢方法,其包括:
[0006] 步驟101 :獲取用戶反饋的記錄中包含的目的地址,利用數(shù)據(jù)源統(tǒng)計(jì)目的地址的 訪問(wèn)情況;
[0007] 其中,所述目的地址類型包括目的IP和URL地址,且根據(jù)目的地址類型的不同選 擇不同的數(shù)據(jù)源進(jìn)行統(tǒng)計(jì);如果是目的IP,則采用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP 的訪問(wèn)情況;如果是URL地址,則在相應(yīng)數(shù)據(jù)源中查找并統(tǒng)計(jì)URL地址的訪問(wèn)情況;
[0008] 步驟102 :通過(guò)鏈表排序得到目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;其中,所 述訪問(wèn)次數(shù)從統(tǒng)計(jì)得到的訪問(wèn)情況中獲得;
[0009] 步驟103 :顯示排序得到的結(jié)果。
[0010] 其中,所述目的地址的類型為目的IP時(shí),對(duì)應(yīng)的數(shù)據(jù)源為hadoop集群中的數(shù)據(jù); 所述目的地址的類型為URL地址時(shí),對(duì)應(yīng)的數(shù)據(jù)源為所述URL庫(kù)記錄中的數(shù)據(jù)。
[0011] 其中,利用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP的訪問(wèn)情況具體包括:
[0012] 利用二分法判斷當(dāng)前記錄中所述目的IP是否在本次統(tǒng)計(jì)范圍內(nèi);
[0013] 如果在本次統(tǒng)計(jì)范圍內(nèi),則使用二分法判斷該記錄的源IP是否屬于網(wǎng)內(nèi)用戶;
[0014] 如果是網(wǎng)內(nèi)用戶,則標(biāo)記該記錄中源IP所屬單位;
[0015] 源IP地址段或源IP所屬單位為單元,統(tǒng)計(jì)所述目的IP地址的訪問(wèn)情況。
[0016] 其中,所述本次統(tǒng)計(jì)范圍為預(yù)先定義的網(wǎng)內(nèi)IP地址列表。
[0017] 其中,利用所述二分法查找時(shí),將IP地址轉(zhuǎn)換為long型。
[0018] 其中,所述二分法具體過(guò)程為:
[0019] 將待查詢的IP地址列表中的IP地址和待查詢IP地址轉(zhuǎn)換成long型,并根據(jù)轉(zhuǎn) 換后的long型值的大小對(duì)待查詢的IP地址列表進(jìn)行升序排序,作為查訓(xùn)區(qū)間;
[0020] 比較待查詢IP地址對(duì)應(yīng)的long型值與查詢區(qū)間中間點(diǎn)位置的long型值;
[0021] 若待查詢IP地址對(duì)應(yīng)的long型值等于所述中間點(diǎn)位置的long型值,則返回中間 點(diǎn)位置的IP地址作為查詢結(jié)果;
[0022] 若待查詢IP地址對(duì)應(yīng)的long型值小于所述中間點(diǎn)位置的long型值,則將所述查 詢區(qū)間中起始位置至中間點(diǎn)前一位置作為新的查詢區(qū)間;若待查詢IP地址對(duì)應(yīng)的long型 值大于所述中間點(diǎn)位置的long型值,則將中間點(diǎn)后一位置至查詢區(qū)間的結(jié)束位置作為新 的查詢區(qū)間;
[0023] 在新的查詢區(qū)間中重復(fù)執(zhí)行上述步驟,直到范圍查詢結(jié)果未知。
[0024] 根據(jù)本發(fā)明另一方面,其提供了一種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪 問(wèn)異常信息的查詢裝置,其包括:
[0025] 統(tǒng)計(jì)模塊:獲取用戶反饋的記錄中包含的目的地址,利用數(shù)據(jù)源統(tǒng)計(jì)目的地址的 訪問(wèn)情況;
[0026] 其中,所述目的地址類型包括目的IP和URL地址,且根據(jù)目的地址類型的不同選 擇不同的數(shù)據(jù)源進(jìn)行統(tǒng)計(jì);如果是目的ιρ,則采用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的ip 的訪問(wèn)情況;如果是URL地址,則在相應(yīng)數(shù)據(jù)源中查找并統(tǒng)計(jì)URL地址的訪問(wèn)情況;
[0027] 排序模塊:通過(guò)鏈表排序得到目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;其中, 所述訪問(wèn)次數(shù)從統(tǒng)計(jì)得到的訪問(wèn)情況中獲得;
[0028] 顯示模塊:顯示排序得到的結(jié)果。
[0029] 其中,所述目的地址的類型為目的IP時(shí),對(duì)應(yīng)的數(shù)據(jù)源為hadoop集群中的數(shù)據(jù); 所述目的地址的類型為URL地址時(shí),對(duì)應(yīng)的數(shù)據(jù)源為所述URL庫(kù)記錄中的數(shù)據(jù)。
[0030] 通過(guò)上述方案,首先將反饋的信息按照是否含有目的IP分成兩類,如果有目的 IP,使用現(xiàn)有的hadoop集群上的數(shù)據(jù)作為數(shù)據(jù)源統(tǒng)計(jì)目的IP的訪問(wèn)情況,如果沒(méi)有目的 IP,通過(guò)URL庫(kù)記錄獲取目的網(wǎng)站域名或URL的訪問(wèn)記錄信息,將這些訪問(wèn)記錄信息作為數(shù) 據(jù)源,然后通過(guò)hadoop平臺(tái)統(tǒng)計(jì)該目的網(wǎng)站域名或者URL訪問(wèn)情況。根據(jù)不同的情況,采 用不同的數(shù)據(jù)源及不同的查詢方式,實(shí)時(shí)獲取用戶反饋網(wǎng)站域名或者URL的訪問(wèn)情況。
【專利附圖】
【附圖說(shuō)明】
[0031] 圖1是本發(fā)明基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信息的查詢方 法流程圖;
[0032] 圖2是本發(fā)明中二分查找法示例的執(zhí)行流程圖;
[0033] 圖3是本發(fā)明中基于目的IP的查詢流程示意圖。
【具體實(shí)施方式】
[0034] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照 附圖,對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
[0035] 圖1示出了本發(fā)明一種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信 息的查詢方法。本發(fā)明提出的上述方法針對(duì)不同的情況,使用不同的數(shù)據(jù)源來(lái)統(tǒng)計(jì):通過(guò) Flume (Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和 傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù))數(shù)據(jù)采集系 統(tǒng),將采集的數(shù)據(jù)上傳到hadoop集群存儲(chǔ),根據(jù)數(shù)據(jù)格式的特點(diǎn)結(jié)合慢速網(wǎng)站中用戶反饋 的信息,首先判斷用戶的反饋信息中是否包含慢速網(wǎng)站的目的IP,使用hadoop集群中的數(shù) 據(jù)作為數(shù)據(jù)源對(duì)所述目的IP的訪問(wèn)情況進(jìn)行統(tǒng)計(jì),如果用戶反饋的信息不包含所述目的 IP,使用URL庫(kù)記錄中采集的數(shù)據(jù)作為數(shù)據(jù)源,統(tǒng)計(jì)目的網(wǎng)站域名或URL的訪問(wèn)情況,所述 訪問(wèn)情況包括訪問(wèn)時(shí)間、源IP、目的IP、訪問(wèn)字節(jié)數(shù)等記錄。所述URL庫(kù)記錄包括源IP、URL 鏈接、目的IP、訪問(wèn)時(shí)間、訪問(wèn)字節(jié)數(shù)、域名和URL標(biāo)識(shí)符。
[0036] 所述方法包括:
[0037] 獲取慢速網(wǎng)站中用戶反饋的信息中響應(yīng)情況為"無(wú)響應(yīng)或者不穩(wěn)定"的信息,根據(jù) 是否含有目的IP分為兩類。
[0038] 如果含有目的IP,則使用現(xiàn)有的hadoop集群上數(shù)據(jù)作為統(tǒng)計(jì)的數(shù)據(jù)源,如果沒(méi)有 目的IP首先根據(jù)URL庫(kù)記錄中獲取目的網(wǎng)站域名或者URL的訪問(wèn)信息,然后將這些訪問(wèn)信 息作為統(tǒng)計(jì)的數(shù)據(jù)源。
[0039] 使用hadoop集群數(shù)據(jù)源進(jìn)行統(tǒng)計(jì),首先使用二分法判斷當(dāng)前記錄的目的IP是否 在本次統(tǒng)計(jì)范圍內(nèi),如果不在,則表示是非教育網(wǎng)IP,查詢過(guò)程結(jié)束丟棄。如果在,則使用二 分法判斷該記錄的源IP是否屬于網(wǎng)內(nèi)用戶,如果是網(wǎng)內(nèi)用戶,則對(duì)該記錄進(jìn)行深入標(biāo)記, 即深入標(biāo)記該記錄中源IP地址所屬單位,如具體為哪個(gè)院校的ip地址等。最后根據(jù)目的 IP,以源IP段或者源IP所屬院校為單位,統(tǒng)計(jì)目的IP的訪問(wèn)情況,所統(tǒng)計(jì)的目的IP的訪 問(wèn)情況包括源IP段或所屬單位對(duì)目的IP的訪問(wèn)次數(shù)。其中,所述當(dāng)前記錄的目的IP是指 用戶反饋信息中包括的IP地址,所述本次統(tǒng)計(jì)范圍指的是根據(jù)具體需要預(yù)先定義的教育 網(wǎng)內(nèi)地址列表,本次統(tǒng)計(jì)僅限于該IP地址列表中IP地址的統(tǒng)計(jì);所述網(wǎng)內(nèi)指的是教育網(wǎng)。
[0040] 通過(guò)鏈表排序獲取每個(gè)源IP段或所屬單位對(duì)目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目 的記錄。
[0041] 將統(tǒng)計(jì)的結(jié)果通過(guò)89〇(^(59〇(^是一款開(kāi)源的工具,主要用于在祖000?(}1;^6)與 傳統(tǒng)的數(shù)據(jù)庫(kù)(mySql、p 〇StgreSql...)間進(jìn)行數(shù)據(jù)的傳遞)導(dǎo)入到數(shù)據(jù)庫(kù)中,最終結(jié)果在 慢速網(wǎng)站系統(tǒng)中顯示。
[0042] 上述步驟中采用的二分法查找法又稱折半查找,它是一種高效快速的查找方法。
[0043] 本發(fā)明中二分法查找要求:1.必須采用順序存儲(chǔ)結(jié)構(gòu);2.必須按關(guān)鍵字大小有序 排列。
[0044] 二分法查找的基本思想是:設(shè)R[l.. η]是當(dāng)前的查找區(qū)間,K為待查找的鍵值, R[i]. key為查找區(qū)間第i個(gè)值;
[0045] (1)首先確定該區(qū)間的中點(diǎn)位置:
[0046] 該區(qū)間的起始位置初始化為1,即low = 1 ;
[0047] 該區(qū)間的結(jié)束位置初始化為η,即high = η ;
[0048] 該區(qū)間的中點(diǎn)位置為:mid = (low+high)/2 ;
[0049] (2)然后將待查的鍵值K與R[mid]. key比較;若相等,則查找成功并返回此索引 位置,否則須確定新的查找區(qū)間,繼續(xù)二分查找,確定區(qū)間方法如下:
[0050] ①若R [mid], key > K,則由表的有序性可知R [mid. . n]. key均大于K,因此若表中 存在關(guān)鍵字等于K的結(jié)點(diǎn),則該結(jié)點(diǎn)必定是在位置mid左邊的子表R[l. . mid-1]中,故新的 查找區(qū)間是左邊的子表R[l. . mid-Ι],即high = mid-1。
[0051] ②類似地,若R[mid]. key < K,則要查找的K必在mid的右邊的子表R[mid+1. .η] 中,即新的查找區(qū)間是右邊的子表R[mid+1. . η]。下一次查找是針對(duì)新的查找區(qū)間進(jìn)行的, 艮P low = mid+1。
[0052] 因此,從初始的查找區(qū)間R[l.. η]開(kāi)始,每經(jīng)過(guò)一次與當(dāng)前查找區(qū)間的中點(diǎn)位置 上的結(jié)點(diǎn)關(guān)鍵字的比較,就可確定查找是否成功,不成功則當(dāng)前的查找區(qū)間就縮小一半。這 一過(guò)程重復(fù)直至找到關(guān)鍵字為Κ的結(jié)點(diǎn),或者直至當(dāng)前的查找區(qū)間為空(即查找失?。r(shí) 為止。
[0053] 例如在集合以05,13,19,21,37,56,64,75,80,85,90)集合中查詢是否含有元素 85。第一次查詢R[mid]. key = 56 < Κ (85),根據(jù)二分法規(guī)則,如果存在,必然在mid右側(cè)子 表中。經(jīng)過(guò)第一次查詢之后low = mid+1,第二次比較是R[mid] = 80 < R(85),同理第二 次查詢之后low = mid+1,第三次查詢中R[mid] = 85 = Key (85),查詢到85元素存在集合 中,返回相應(yīng)的位序,具體過(guò)程如圖2所示。
[0054] 在本次的實(shí)施過(guò)程中,通過(guò)目的IP的查詢統(tǒng)計(jì)中判斷采集數(shù)據(jù)的記錄中目的IP 是否滿足條件時(shí)使用了二分法查找方式,通過(guò)該算法提高了查詢效率,同時(shí)在判斷源IP是 否是網(wǎng)內(nèi)IP時(shí)使用了自創(chuàng)的二分法。該二分法的有序表中每一個(gè)元素不再是單一的一個(gè) 數(shù)值,而是一個(gè)含有3個(gè)字段的對(duì)象。該對(duì)象3個(gè)字段分別是索引值,網(wǎng)段開(kāi)始(long型), 結(jié)束值(long型)。在查找過(guò)程中將待查的K值與R[mid]. key比較的方法是判斷源IP是 否在該對(duì)象的段開(kāi)始與段結(jié)束范圍內(nèi),如果存在則返回位序值,否則確定新的查找區(qū)間。核 心代碼及注釋如下所示:
[0055] 自創(chuàng)二分法核心代碼:
[0056] pxablic static int binarySearch (String target! ? MaxMin [ ] array) { long target = Utii. to-Γρ偷 Jin(targetl) ;// 將 I Pi也址轉(zhuǎn)換成 long int front = 0; int tail = array.length - 1; //判斷?!?shù)ftlMK能I·!.次:分 while (front <= tail) { // _)(f量_9中_1位W:, iH---此中 int middle = (front + tail) >>> 1; if (array [middle 1 . isln (target) ) { // 卜:指的范 圍肉則通回 return middle; } else if (array [middle] . i sLt (tarcjet) ) {// ?1Γ_'K新?tīng)枽?詢KM tail = middle - 1; } else { front = middle + 1; } return -1; // 到返M-l
[0057] }
[0058] 有序表里每一個(gè)元素
[0059] pxablic class MaxMin infsle^nts ComparabIe'-:rv:ixMin{ private long rnir.; private long ma;*;; // 1;isp // 2:icp // 3: car public int type; public MaxMin(long min, long 腿x, int i) { thi s. min = mi n; thi s. ma :< = ma x ; this.type = x; } public boolean isln(long t) { return t min && t <= max; public boolean isGt{long t) { return t > mbk; } public boolean isLt(long t* { return t < mi n; !
[0060] 本發(fā)明中利用鏈表進(jìn)行排序獲得訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;單鏈表是一種 基于鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)使用一組任意地址的存儲(chǔ)單元存放線性表中的數(shù)據(jù)。鏈 表中的每一個(gè)數(shù)據(jù)通過(guò)節(jié)點(diǎn)來(lái)表示,每個(gè)節(jié)點(diǎn)的構(gòu)成:元素(數(shù)據(jù)元素的映象)+指針(指 示后繼元素存儲(chǔ)位置),元素就是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,指針就是連接每個(gè)節(jié)點(diǎn)的地址數(shù) 據(jù)。
[0061] 本次在使用的過(guò)程中,不僅通過(guò)鏈表進(jìn)行排序,同時(shí)設(shè)置η個(gè)節(jié)點(diǎn)用于存放數(shù)據(jù), 經(jīng)過(guò)排序之后,可以獲取到top η的值。通過(guò)這樣的設(shè)置完成排序的同時(shí),避免存放其他不 需要的數(shù)據(jù),加快排序數(shù)據(jù)的同時(shí)避免大量無(wú)效數(shù)據(jù)占用存儲(chǔ)空間。
[0062] 具體的實(shí)現(xiàn)思想:
[0063] 定義鏈表時(shí)指定一個(gè)最大的元素個(gè)數(shù)即預(yù)定數(shù)目top η的值。
[0064] 在向鏈表中插入節(jié)點(diǎn)時(shí),首先通過(guò)比較節(jié)點(diǎn)元素大小查找該節(jié)點(diǎn)需要插入的位 置,同時(shí)標(biāo)記移動(dòng)節(jié)點(diǎn)的個(gè)數(shù)。如果該節(jié)點(diǎn)移動(dòng)個(gè)數(shù)等于η即該節(jié)點(diǎn)需要放置到第(η+1) 位置時(shí),直接將該節(jié)點(diǎn)丟棄。如果該節(jié)點(diǎn)插入位置為第η個(gè)位置之前,則允許該節(jié)點(diǎn)插入。 插入完畢之后檢查當(dāng)前鏈表中節(jié)點(diǎn)個(gè)數(shù),如果當(dāng)前節(jié)點(diǎn)的個(gè)數(shù)大于η,則需要?jiǎng)h除最后一個(gè) 節(jié)點(diǎn)。代碼如下所示:
[0065] 鏈表排序獲取top η :
[0066] //? Ζ?Ρ·?:鏈.細(xì)-- 度,'鏈MM:衫 it.fimaxsize.個(gè)^ ptablic SortedLink (int maxSize) { first = null; size = 0; this.maxS i ze^maxS i ze; } // fj·序鏈次中插入數(shù)《 pxiblic void insert (DataNode value) { Link<[)ataNoc!e> newLink = new L?nk<DataNode> (va 1 ue); L?nk<DataNode> previous = mill; Link<OataNode> curr = first; int f 1 agS i ze二:1; / / kiαΛ·移動(dòng)位I while (curr 卜 mill && (value.compareTo(curr*data) ==1)) { previous = curr; curr = curr.next; f lag Size+ -f; } //伽《將要插入的數(shù)擺排在最后一位,m插入后超a指定最大長(zhǎng)度時(shí)不再》入到鏈衣屮,a 接拋介 if (flagSize>this.maxSize) { return; } if (previous == null) { / / 1? Λ S': (/i: U % li-fi A) first = newLink; } else { previous . nest = newLink;// 插入新的1|?點(diǎn) } newLink. next = curr; size++; if ( size>maxSi^e)丨//--插入度M過(guò)M人長(zhǎng)度時(shí)刪除Alii丨I的 Link<DataNode> nextCurr = first; int m=l; while(m<=maxSize){ nextCurr^nextCurr. next;
[0067] m++; } nextCurr.next=null; size^maxSize; //H度設(shè)W:為M大農(nóng)度 }.
[0068] 本發(fā)明中利用兩種數(shù)據(jù)作為數(shù)據(jù)源,即hadoop集群中的數(shù)據(jù)和URL庫(kù)記錄中采集 的數(shù)據(jù)。
[0069] 基于目的IP的查詢方法,是將當(dāng)前hadoop集群中的數(shù)據(jù)作為數(shù)據(jù)源。根據(jù)hadoop 作業(yè)的特性,該統(tǒng)計(jì)分為兩個(gè)階段即map,reduce階段。在map階段主要用來(lái)判斷記錄是否 滿足條件并對(duì)滿足條件記錄進(jìn)行標(biāo)記,在reduce階段主要是統(tǒng)計(jì)該IP段或者所屬單位訪 問(wèn)目的IP的次數(shù),對(duì)統(tǒng)計(jì)結(jié)果排序輸出toplO。
[0070] 首先將本次需要統(tǒng)計(jì)的目的IP轉(zhuǎn)換成long型數(shù)據(jù),并且按照升序排序。同時(shí)將 網(wǎng)內(nèi)的網(wǎng)段起始值轉(zhuǎn)換成long型,并按照網(wǎng)段開(kāi)始值升序排序?yàn)楹罄m(xù)的二分法查找提供 有利條件。
[0071] 在map階段將排好序的目的IP,網(wǎng)內(nèi)的網(wǎng)段起始信息存放到hadoop緩沖文件中, 然后在查找之前讀取緩沖文件存放到指定的數(shù)組中。對(duì)采集的數(shù)據(jù)進(jìn)行遍歷時(shí),獲取記錄 的目的IP,然后按照二分法查找當(dāng)前目的IP是否在數(shù)組中,如果不存在,丟棄;否則,再次 使用二分法查找當(dāng)前的源IP是否在網(wǎng)內(nèi)的IP段中,如果滿足,標(biāo)記該條記錄,否則丟棄。
[0072] 在reduce階段,根據(jù)標(biāo)記的信息,分別以源IP段和源IP所屬單位為單位統(tǒng)計(jì)目 的IP訪問(wèn)次數(shù),然后通過(guò)鏈表對(duì)訪問(wèn)次數(shù)排序,最后輸出訪問(wèn)次數(shù)最多的前幾位。具體流 程如圖3。
[0073] 基于網(wǎng)站域名或URL查詢方法,是將URL庫(kù)記錄中獲取目的網(wǎng)站域名或URL的訪 問(wèn)信息,作為統(tǒng)計(jì)的數(shù)據(jù)源。通過(guò)hadoop平臺(tái)統(tǒng)計(jì)網(wǎng)站域名(URL)的訪問(wèn)情況,通過(guò)鏈表 對(duì)統(tǒng)計(jì)結(jié)果排序,獲取topn條記錄,然后通過(guò)sqoop導(dǎo)入到數(shù)據(jù)庫(kù)中,將統(tǒng)計(jì)的結(jié)果在慢速 網(wǎng)站系統(tǒng)展示。
[0074] 以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說(shuō)明,應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在 本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù) 范圍之內(nèi)。
【權(quán)利要求】
1. 一種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信息的查詢方法,其包括: 步驟101 :獲取用戶反饋的記錄中包含的目的地址,利用數(shù)據(jù)源統(tǒng)計(jì)目的地址的訪問(wèn) 情況; 其中,所述目的地址類型包括目的IP和URL地址,且根據(jù)目的地址類型的不同選擇不 同的數(shù)據(jù)源進(jìn)行統(tǒng)計(jì);如果是目的IP,則采用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP的訪 問(wèn)情況;如果是URL地址,則在相應(yīng)數(shù)據(jù)源中查找并統(tǒng)計(jì)URL地址的訪問(wèn)情況; 步驟102 :通過(guò)鏈表排序得到目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;其中,所述訪 問(wèn)次數(shù)從統(tǒng)計(jì)得到的訪問(wèn)情況中獲得; 步驟103 :顯示排序得到的結(jié)果。
2. 如權(quán)利要求1所述的方法,其中,所述目的地址的類型為目的IP時(shí),對(duì)應(yīng)的數(shù)據(jù)源 為hadoop集群中的數(shù)據(jù);所述目的地址的類型為URL地址時(shí),對(duì)應(yīng)的數(shù)據(jù)源為所述URL庫(kù) 記錄中的數(shù)據(jù)。
3. 如權(quán)利要求2所述的方法,其中,利用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP的訪 問(wèn)情況具體包括: 利用二分法判斷當(dāng)前記錄中所述目的IP是否在本次統(tǒng)計(jì)范圍內(nèi); 如果在本次統(tǒng)計(jì)范圍內(nèi),則使用二分法判斷該記錄的源IP是否屬于網(wǎng)內(nèi)用戶; 如果是網(wǎng)內(nèi)用戶,則標(biāo)記該記錄中源IP所屬單位; 源IP地址段或源IP所屬單位為單元,統(tǒng)計(jì)所述目的IP地址的訪問(wèn)情況。
4. 如權(quán)利要求3所述的方法,其中,所述本次統(tǒng)計(jì)范圍為預(yù)先定義的網(wǎng)內(nèi)IP地址列表。
5. 如權(quán)利要求3所述的方法,其中,利用所述二分法查找時(shí),將IP地址轉(zhuǎn)換為long型。
6. 如權(quán)利要求3所述的方法,其中,所述二分法具體過(guò)程為: 將待查詢的IP地址列表中的IP地址和待查詢IP地址轉(zhuǎn)換成long型,并根據(jù)轉(zhuǎn)換后 的long型值的大小對(duì)待查詢的IP地址列表進(jìn)行升序排序,作為查訓(xùn)區(qū)間; 比較待查詢IP地址對(duì)應(yīng)的long型值與查詢區(qū)間中間點(diǎn)位置的long型值; 若待查詢IP地址對(duì)應(yīng)的long型值等于所述中間點(diǎn)位置的long型值,則返回中間點(diǎn)位 置的IP地址作為查詢結(jié)果; 若待查詢IP地址對(duì)應(yīng)的long型值小于所述中間點(diǎn)位置的long型值,則將所述查詢區(qū) 間中起始位置至中間點(diǎn)前一位置作為新的查詢區(qū)間;若待查詢IP地址對(duì)應(yīng)的long型值大 于所述中間點(diǎn)位置的long型值,則將中間點(diǎn)后一位置至查詢區(qū)間的結(jié)束位置作為新的查 詢區(qū)間; 在新的查詢區(qū)間中重復(fù)執(zhí)行上述步驟,直到范圍查詢結(jié)果未知。
7. -種基于IP和URL的實(shí)時(shí)數(shù)據(jù)采集的慢速網(wǎng)站訪問(wèn)異常信息的查詢裝置,其包括: 統(tǒng)計(jì)模塊:獲取用戶反饋的記錄中包含的目的地址,利用數(shù)據(jù)源統(tǒng)計(jì)目的地址的訪問(wèn) 情況; 其中,所述目的地址類型包括目的IP和URL地址,且根據(jù)目的地址類型的不同選擇不 同的數(shù)據(jù)源進(jìn)行統(tǒng)計(jì);如果是目的IP,則采用二分法查找并統(tǒng)計(jì)相應(yīng)數(shù)據(jù)源中目的IP的訪 問(wèn)情況;如果是URL地址,則在相應(yīng)數(shù)據(jù)源中查找并統(tǒng)計(jì)URL地址的訪問(wèn)情況; 排序模塊:通過(guò)鏈表排序得到目的IP的訪問(wèn)次數(shù)最高的預(yù)定數(shù)目的記錄;其中,所述 訪問(wèn)次數(shù)從統(tǒng)計(jì)得到的訪問(wèn)情況中獲得; 顯示模塊:顯示排序得到的結(jié)果。
8.如權(quán)利要求7所述的裝置,其中,所述目的地址的類型為目的IP時(shí),對(duì)應(yīng)的數(shù)據(jù)源 為hadoop集群中的數(shù)據(jù);所述目的地址的類型為URL地址時(shí),對(duì)應(yīng)的數(shù)據(jù)源為所述URL庫(kù) 記錄中的數(shù)據(jù)。
【文檔編號(hào)】H04L12/26GK104301182SQ201410566915
【公開(kāi)日】2015年1月21日 申請(qǐng)日期:2014年10月22日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】黃友俊, 李星, 吳建平, 劉知?jiǎng)? 郭合蒼 申請(qǐng)人:賽爾網(wǎng)絡(luò)有限公司