一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法
【專利摘要】本發(fā)明公開了一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,所述的方法主要包括:在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源;計算此分配資源操作的安全性;基于安全性的分配成立或分配作廢操作;重復(fù)以上操作,為系統(tǒng)各爬蟲進(jìn)程動態(tài)分配資源。通過采用所述防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,本發(fā)明提高了網(wǎng)絡(luò)爬蟲的效率和減少爬蟲過程死鎖的次數(shù)。
【專利說明】一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,尤其涉及一種安全性判斷的網(wǎng)絡(luò)爬蟲的資源配置方法。
【背景技術(shù)】
[0002]當(dāng)前,網(wǎng)絡(luò)爬蟲越來越成為人們獲取信息和數(shù)據(jù)的主要渠道,傳統(tǒng)的網(wǎng)絡(luò)爬蟲不能有效解決多線程網(wǎng)絡(luò)爬蟲中的死鎖問題,且效率較低不能滿足人們的需求。利用人工智能技術(shù)的進(jìn)一步成熟和信息服務(wù)的多樣化,網(wǎng)絡(luò)爬蟲算法正向著智能化、高效化、個性化的方向發(fā)展。
[0003]大型搜索引擎系統(tǒng)在抓取海量信息數(shù)據(jù)時,為了有效的提高網(wǎng)絡(luò)爬蟲的性能和效率,并滿足系統(tǒng)數(shù)據(jù)下載需求,網(wǎng)絡(luò)爬蟲的設(shè)計通常包含一系列優(yōu)化策略和原則,然而在長期的使用過程中,其容易發(fā)生死鎖問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提出了一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,以解決現(xiàn)有技術(shù)中遇到的網(wǎng)絡(luò)爬蟲中死鎖問題。
[0005]為解決上述問題,本發(fā)明所述的一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法包括以下步驟:
(1.1)在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源;
(1.2)計算此分配資源的安全性;
(1.3)基于安全性的分配成立或分配作廢操作;
(1.4)重復(fù)執(zhí)行步驟(1.1-1.3)為系統(tǒng)各爬蟲進(jìn)程動態(tài)分配資源。
[0006]進(jìn)一步的,步驟(1.1)中所述的在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源必須嚴(yán)格滿足以下條件:爬蟲進(jìn)程提出某類資源分配請求時,請求的該類資源小于或等于該進(jìn)程仍需要的這類資源數(shù)量;請求的資源小于或等于系統(tǒng)該類資源剩下的數(shù)量,若滿足以上條件,系統(tǒng)做試探分配資源,修改資源分配數(shù)據(jù);否則出錯,等待用戶重新申請或停止。
[0007]進(jìn)一步的,步驟(1.2)中所述的計算此分配資源的安全性在于系統(tǒng)是否能找到一個安全序列。
[0008]進(jìn)一步的,步驟(1.3)中基于安全性的分配成立或分配作廢操作,若判斷不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則(1.1)中爬蟲進(jìn)程的試探性分配成立;否則試探性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。
[0009]進(jìn)一步的,系統(tǒng)為某個滿足條件的爬蟲進(jìn)程做試探性分配資源時修改資源分配數(shù)據(jù)時,主要包括以下操作:
(5.1)系統(tǒng)剩余資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果;
(5.2)爬蟲進(jìn)程仍需資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新的結(jié)果; (5.3)系統(tǒng)已為該進(jìn)程分配資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為新的結(jié)果。
[0010]進(jìn)一步的,安全序列是指對于序列中的每一個進(jìn)程Pi,它以后尚需要的資源量不超過系統(tǒng)當(dāng)前剩余資源量和所有爬蟲進(jìn)程Pj (j〈i)當(dāng)前占有資源量之和。
[0011]進(jìn)一步的,在試探性分配作廢時,主要包含以下步驟:
(7.1)系統(tǒng)剩余資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果;
(7.2)爬蟲進(jìn)程仍需資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果;
(7.3)系統(tǒng)已為該進(jìn)程分配資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果。
[0012]進(jìn)一步的,安全序列的查找包含以下步驟:
(8.1)設(shè)置工作向量Work,其初始值為當(dāng)前系統(tǒng)各類資源剩余量;設(shè)置記錄進(jìn)程是否完成向量FINISH,對每個爬蟲進(jìn)程都設(shè)置為false,表示都未完成;
(8.2)從爬蟲進(jìn)程集合中找到一個滿足下述條件的爬蟲進(jìn)程=FINISH等于false ;仍需要的資源小于或等于Work向量,如找到,執(zhí)行(8.3);否則,執(zhí)行(8.4);
(8.3)爬蟲進(jìn)程仍需要的資源小于系統(tǒng)剩余的資源,可以假設(shè)先將該進(jìn)程執(zhí)行,直至完成,從而釋放資源,更新Work和FINISH向量,使Work等于Work加上該爬蟲進(jìn)程已經(jīng)分配的資源,并將該進(jìn)程FINISH設(shè)為true將并跳轉(zhuǎn)到步驟(8.2);
(8.4)如所有爬蟲進(jìn)程FINISH都等于true,則表示安全,即找到安全序列;否則表示系統(tǒng)不安全,無安全序列。
[0013]進(jìn)一步的,步驟(1.4)中所述的重復(fù)執(zhí)行步驟(1.1-1.3)為系統(tǒng)各爬蟲進(jìn)程動態(tài)分配資源,即重復(fù)為系統(tǒng)各爬蟲進(jìn)程申請資源、試探性分配資源、安全性檢驗、試探性分配成立或廢除操作,實現(xiàn)系統(tǒng)各爬蟲進(jìn)程并行處理的過程。
[0014]本發(fā)明的有益效果是:本發(fā)明所構(gòu)建的一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法與一般的網(wǎng)絡(luò)爬蟲算法相比,能更好地滿足高效率、少死鎖的信息搜索要求。
【專利附圖】
【附圖說明】
[0015]圖1是本發(fā)明所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法示意圖。
[0016]圖2是本發(fā)明所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法流程圖。
[0017]圖3是本發(fā)明所述的系統(tǒng)安全序列查找方法流程圖。
【具體實施方式】
[0018]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實例施例,并參照附圖,對本說明進(jìn)一步詳細(xì)說明。
[0019]圖2為本發(fā)明所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法流程圖,該方法包括以下步驟:
步驟1:在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源;若爬蟲進(jìn)程提出某類資源分配請求時,請求的該類資源小于或等于該進(jìn)程仍需要的這類資源,且請求的資源小于或等于系統(tǒng)該類資源剩下的總量,則系統(tǒng)做試探分配資源,修改資源分配數(shù)據(jù);否則出錯,等待用戶重新申請或停止。
[0020]定義資源向量S,是含有m個元素的數(shù)組,其中每個元素代表一類可利用的資源數(shù)目;定義最大需求矩陣M,它定義了系統(tǒng)中η個爬蟲進(jìn)程中的每個爬蟲進(jìn)程對m類資源的最大需求;定義分配矩陣A,它定義了系統(tǒng)中每一類資源當(dāng)前已分配給每一個進(jìn)程的資源數(shù);定義需求矩陣N,表示每個進(jìn)程尚需的各類資源數(shù)。
[0021]N[i, j]=M[I, j]-A[i, j](I)
爬蟲進(jìn)程k提出請求R[i],則系統(tǒng)按如下規(guī)則進(jìn)行判斷:
(I)如果R[k] [i]〈=N[k] [i],則轉(zhuǎn)到(2);否則,出錯。
[0022](2)如果 R[k] [i]〈=S[i],則轉(zhuǎn)到(3);否則,等待。
[0023](3)系統(tǒng)試探分配資源,修改相關(guān)數(shù)據(jù):
S[i]_=R[k][i]
A[k] [i]+=R[k] [i]
N[k] [i]_=R[k] [i]
步驟2:計算此分配資源的安全性在于在系統(tǒng)中是否能找到一個安全的進(jìn)程序列。安全序列的查找可按下面的步驟進(jìn)行:
(I)設(shè)置兩個工作向量 Work 和 FINISH, Work=S ;FINISH= (false, false,…,false)。
[0024](2)從爬蟲進(jìn)程集合中找到一個滿足下述條件的進(jìn)程:
FINISH==false ;
N〈=Work0
[0025]若找到,執(zhí)行(3);否則,執(zhí)行(4)。
[0026](3)設(shè)進(jìn)程獲得資源,可順利執(zhí)行,直至完成,從而釋放資源。
[0027]Work+=A ;
FINISH=true ;
跳到步驟(2)。
[0028](4)若所有進(jìn)程FINISH=true,則為找到安全序列,即為安全;否則即為找不到安全序列。
[0029]步驟3:基于安全性是否的分配成立或分配作廢的實施,若在步驟2中得到試探性分配后系統(tǒng)存在安全序列,則試探性分配成立;否則試探性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。系統(tǒng)恢復(fù)原狀操作:
S[i]+=R[k] [i];
A[k] [i]_=R[k] [i];
N[k] [i]+=R[k] [i]。
[0030]步驟4:重復(fù)執(zhí)行步驟I到3,直到各爬蟲進(jìn)程都運(yùn)行完成,即在爬蟲進(jìn)程運(yùn)行過程需要的資源都得到合理的分配。
[0031]以上所述的具體實例施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改,等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于包括以下步驟: (1.1)在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源; (1.2)計算此分配資源操作的安全性; (1.3)基于安全性的分配成立或分配作廢操作; (1.4)重復(fù)執(zhí)行步驟(1.1-1.3)為系統(tǒng)各爬蟲進(jìn)程動態(tài)分配資源。
2.根據(jù)權(quán)利要求1所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,步驟(1.0中所述的在系統(tǒng)運(yùn)行過程中為爬蟲進(jìn)程動態(tài)的申請資源和試探性分配資源必須嚴(yán)格滿足以下條件:爬蟲進(jìn)程提出某類資源分配請求時,請求的該類資源小于或等于該進(jìn)程仍需要的這類資源數(shù)量;請求的資源小于或等于系統(tǒng)該類資源剩下的數(shù)量,若滿足以上條件,系統(tǒng)做試探分配資源,修改資源分配數(shù)據(jù);否則出錯,等待用戶重新申請或停止。
3.根據(jù)權(quán)利要求2所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,步驟(1.2)中所述的計算此分配資源的安全性在于系統(tǒng)是否能找到一個安全序列。
4.根據(jù)權(quán)利要求3所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,步驟(1.3)中基于安全性的分配成立或分配作廢操作,若判斷不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則(1.1)中爬蟲進(jìn)程的試探性分配成立;否則試探性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。
5.根據(jù)權(quán)利要求4所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,系統(tǒng)為某個滿足條件的爬蟲進(jìn)程做試探性分配資源時修改資源分配數(shù)據(jù)時,主要包括以下操作: (5.1)系統(tǒng)剩余資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果; (5.2)爬蟲進(jìn)程仍需資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新的結(jié)果; (5.3)系統(tǒng)已為該進(jìn)程分配資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為新的結(jié)果。
6.根據(jù)權(quán)利要求5所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,安全序列是指對于序列中的每一個進(jìn)程Pi,它以后尚需要的資源量不超過系統(tǒng)當(dāng)前剩余資源量和所有爬蟲進(jìn)程Pj (j〈i)當(dāng)前占有資源量之和。
7.根據(jù)權(quán)利要求6所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,在試探性分配作廢時,主要包含以下步驟: (7.1)系統(tǒng)剩余資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果; (7.2)爬蟲進(jìn)程仍需資源更新:加上爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果; (7.3)系統(tǒng)已為該進(jìn)程分配資源更新:減去爬蟲進(jìn)程申請的資源數(shù)為更新后的結(jié)果。
8.根據(jù)權(quán)利要求6所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,安全序列的查找包含以下步驟: (8.1)設(shè)置工作向量Work,其初始值為當(dāng)前系統(tǒng)各類資源剩余量;設(shè)置記錄進(jìn)程是否完成向量FINISH,對每個爬蟲進(jìn)程都設(shè)置為false,表示都未完成; (8.2)從爬蟲進(jìn)程集合中找到一個滿足下述條件的爬蟲進(jìn)程=FINISH等于false ;仍需要的資源小于或等于Work向量,如找到,執(zhí)行(8.3);否則,執(zhí)行(8.4); (8.3)爬蟲進(jìn)程仍需要的資源小于系統(tǒng)剩余的資源,可以假設(shè)先將該進(jìn)程執(zhí)行,直至完成,從而釋放資源,更新Work和FINISH向量,使Work等于Work加上該爬蟲進(jìn)程已經(jīng)分配的資源,并將該進(jìn)程FINISH設(shè)為true將并跳轉(zhuǎn)到步驟(8.2); (8.4)如所有爬蟲進(jìn)程FINISH都等于true,則表示安全,即找到安全序列;否則表示系統(tǒng)不安全,無安全序列。
9.根據(jù)權(quán)利要求1所述的防止網(wǎng)絡(luò)爬蟲死鎖的資源配置方法,其特征在于,步驟(1.4)中所述的重復(fù)執(zhí)行步驟(1.1-1.3)為系統(tǒng)各爬蟲進(jìn)程動態(tài)分配資源,即重復(fù)為系統(tǒng)各爬蟲進(jìn)程申請資源、試探性分配資源、安全性檢驗、試探性分配成立或廢除操作,實現(xiàn)系統(tǒng)各爬蟲進(jìn)程并行處理的過程。
【文檔編號】G06F9/50GK104462195SQ201410595829
【公開日】2015年3月25日 申請日期:2014年10月30日 優(yōu)先權(quán)日:2014年10月30日
【發(fā)明者】李廣凱, 王慶紅, 周育忠, 韋嶸暉, 鄭金 申請人:中國南方電網(wǎng)有限責(zé)任公司電網(wǎng)技術(shù)研究中心, 南方電網(wǎng)科學(xué)研究院有限責(zé)任公司