針對(duì)軟件多點(diǎn)故障的自修復(fù)算法
【專利摘要】本發(fā)明公開(kāi)了一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,包括以下幾個(gè)步驟:1)建立工作線程和故障恢復(fù)線程;為無(wú)響應(yīng)的點(diǎn)進(jìn)行故障分級(jí);2)工作線程維護(hù)正常工作組和故障組;3)工作線程對(duì)正常組進(jìn)行操作,遇到無(wú)響應(yīng)的點(diǎn),放入故障組;4)工作線程空閑時(shí)通知故障恢復(fù)線程進(jìn)行故障恢復(fù)工作;5)故障恢復(fù)線程利用貪心算法按照故障分級(jí)對(duì)故障組進(jìn)行故障修復(fù),修復(fù)成功的點(diǎn)從故障組刪除,放入正常組;6)工作線程接收到客戶請(qǐng)求向故障恢復(fù)線程發(fā)送掛起請(qǐng)求,故障恢復(fù)線程掛起,工作線程恢復(fù)執(zhí)行。本發(fā)明保證正常工作循環(huán)效率的前提下,對(duì)故障點(diǎn)進(jìn)行快速的修復(fù)。
【專利說(shuō)明】針對(duì)軟件多點(diǎn)故障的自修復(fù)算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種軟件中處理多點(diǎn)的故障自修復(fù)的算法。
【背景技術(shù)】
[0002]在對(duì)多個(gè)點(diǎn)進(jìn)行故障恢復(fù)處理時(shí),最常用的方法是對(duì)故障點(diǎn)做循環(huán)檢查,在一次正常的工作循環(huán)結(jié)束后,去處理故障點(diǎn)。如果故障點(diǎn)較多,可以建立一個(gè)故障組,在每次正常工作循環(huán)后從故障組中順序取出一個(gè)點(diǎn)進(jìn)行修復(fù)。
[0003]循環(huán)檢查的方法在處理超時(shí)故障時(shí),由于單個(gè)點(diǎn)的超時(shí)時(shí)間較長(zhǎng),會(huì)延長(zhǎng)整個(gè)循環(huán)的時(shí)間。在對(duì)時(shí)間要求較高的場(chǎng)合,這種方法會(huì)影響正常工作的效率。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法。
[0005]本發(fā)明為解決以上問(wèn)題,需要進(jìn)行以下步驟:
一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,包括以下幾個(gè)步驟:
O建立工作線程和故障恢復(fù)線程;為無(wú)響應(yīng)的點(diǎn)進(jìn)行故障分級(jí);
2)工作線程維護(hù)正常工作組和故障組;
3)工作線程對(duì)正常組進(jìn)行操作,遇到無(wú)響應(yīng)的點(diǎn),放入故障組;
4)工作線程空閑時(shí)通知故障恢復(fù)線程進(jìn)行故障恢復(fù)工作;
5)故障恢復(fù)線程利用貪心算法按照故障分級(jí)對(duì)故障組進(jìn)行故障修復(fù),修復(fù)成功的點(diǎn)從故障組刪除,放入正常組;
6)工作線程接收到客戶請(qǐng)求向故障恢復(fù)線程發(fā)送掛起請(qǐng)求,故障恢復(fù)線程掛起,工作線程恢復(fù)執(zhí)行。
[0006]步驟I)所述故障分級(jí)中,無(wú)響應(yīng)的點(diǎn)根據(jù)被處理次數(shù)進(jìn)行分級(jí),初始為I級(jí),每被處理一次,故障等級(jí)加1,上限為3。
[0007]所述步驟2)中,正常工作組中存儲(chǔ)能夠正常工作的點(diǎn),故障組中存儲(chǔ)因超時(shí)或其他原因未響應(yīng)的點(diǎn)。
[0008]所述步驟3)中,工作線程每次從正常工作組中選取一個(gè)點(diǎn)進(jìn)行操作,若出現(xiàn)超時(shí)或無(wú)響應(yīng)的節(jié)點(diǎn),工作線程將該節(jié)點(diǎn)添加至故障組并從正常工作組中刪除此點(diǎn)。
[0009]所述步驟5)中,故障恢復(fù)線程利用貪心算法,優(yōu)先選擇故障級(jí)別低的點(diǎn)對(duì)其進(jìn)行故障修復(fù)。
[0010]本發(fā)明的有益效果:保證正常工作循環(huán)效率的前提下,對(duì)故障點(diǎn)進(jìn)行快速的修復(fù)?!揪唧w實(shí)施方式】
[0011]本發(fā)明提供的樹(shù)形結(jié)構(gòu)中數(shù)據(jù)處理方法的詳細(xì)步驟如下:
建立正常的工作線程和故障恢復(fù)線程。正常工作線程中是一個(gè)工作循環(huán),順序?qū)φ5狞c(diǎn)進(jìn)行操作。故障恢復(fù)線程用于嘗試恢復(fù)故障點(diǎn)。
[0012]為無(wú)響應(yīng)的點(diǎn)進(jìn)行故障分級(jí)。I級(jí)表示故障較輕,3級(jí)表示故障較重。故障恢復(fù)線程每處理一個(gè)點(diǎn)就對(duì)其的故障等級(jí)加1,上限為3 (上限可視情況調(diào)節(jié))。
[0013]工作線程每次工作循環(huán)都從正常組中順序取出一個(gè)點(diǎn)進(jìn)行操作,遇到無(wú)響應(yīng)的點(diǎn)就從正常組中刪除并放入故障組,設(shè)置它的故障值為O。
[0014]工作線程做完循環(huán)掃描的工作后,后進(jìn)入一個(gè)相對(duì)空閑的時(shí)間,此段時(shí)間工作線程等待用戶的請(qǐng)求,并在進(jìn)入空閑時(shí)間時(shí)發(fā)送消息通知故障恢復(fù)線程進(jìn)行恢復(fù)工作。
[0015]故障恢復(fù)線程接到啟動(dòng)消息后,從故障組中優(yōu)先選擇故障級(jí)別最低的點(diǎn)進(jìn)行修復(fù),修復(fù)成功則將其從故障組中刪除,并加入正常組,修復(fù)失敗則將其故障級(jí)別加I,繼續(xù)選取下一個(gè)故障級(jí)別最低的點(diǎn)進(jìn)行恢復(fù)嘗試。
[0016]主線程收到工作請(qǐng)求后,向故障恢復(fù)線程發(fā)送掛起通知。故障恢復(fù)線程收到掛起通知后,釋放需要同步的資源后,暫?;謴?fù)操作,同時(shí)向工作線程發(fā)送已掛起消息。工作線程繼續(xù)正常操作。
【權(quán)利要求】
1.一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,其特征在于,包括以下幾個(gè)步驟: 1)建立工作線程和故障恢復(fù)線程;為無(wú)響應(yīng)的點(diǎn)進(jìn)行故障分級(jí); 2)工作線程維護(hù)正常工作組和故障組; 3)工作線程對(duì)正常組進(jìn)行操作,遇到無(wú)響應(yīng)的點(diǎn),放入故障組; 4)工作線程空閑時(shí)通知故障恢復(fù)線程進(jìn)行故障恢復(fù)工作; 5)故障恢復(fù)線程利用貪心算法按照故障分級(jí)對(duì)故障組進(jìn)行故障修復(fù),修復(fù)成功的點(diǎn)從故障組刪除,放入正常組; 6)工作線程接收到客戶請(qǐng)求向故障恢復(fù)線程發(fā)送掛起請(qǐng)求,故障恢復(fù)線程掛起,工作線程恢復(fù)執(zhí)行。
2.如權(quán)利要求1所述的一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,其特征在于,步驟I)所述故障分級(jí)中,無(wú)響應(yīng)的點(diǎn)根據(jù)被處理次數(shù)進(jìn)行分級(jí),初始為I級(jí),每被處理一次,故障等級(jí)加1,上限為3。
3.如權(quán)利要求1所述的一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,其特征在于,所述步驟2)中,正常工作組中存儲(chǔ)能夠正常工作的點(diǎn),故障組中存儲(chǔ)因超時(shí)或其他原因未響應(yīng)的點(diǎn)。
4.如權(quán)利要求1所述的一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,其特征在于,所述步驟3)中,工作線程每次從正常工作組中選取一個(gè)點(diǎn)進(jìn)行操作,若出現(xiàn)超時(shí)或無(wú)響應(yīng)的節(jié)點(diǎn),工作線程將該節(jié)點(diǎn)添加至故障組并從正常工作組中刪除此點(diǎn)。
5.如權(quán)利要求1所述的一種針對(duì)軟件多點(diǎn)故障的自修復(fù)算法,其特征在于,所述步驟5)中,故障恢復(fù)線程利用貪心算法,優(yōu)先選擇故障級(jí)別低的點(diǎn)對(duì)其進(jìn)行故障修復(fù)。
【文檔編號(hào)】G06F11/36GK103902452SQ201410126155
【公開(kāi)日】2014年7月2日 申請(qǐng)日期:2014年4月1日 優(yōu)先權(quán)日:2014年4月1日
【發(fā)明者】王友釗, 黃靜, 溫琪 申請(qǐng)人:浙江大學(xué)