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