本技術(shù)涉及計(jì)算機(jī)領(lǐng)域,具體地涉及一種軟錯(cuò)誤防護(hù)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
背景技術(shù):
1、近年來(lái),人類對(duì)太空領(lǐng)域的研究越來(lái)越多,衛(wèi)星互聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展迅速??臻g輻射環(huán)境中存在質(zhì)子、α粒子、電子、重離子等高能粒子。單個(gè)高能粒子擊中微電子器件靈敏部位,由于電離作用產(chǎn)生額外電荷,使器件邏輯狀態(tài)改變,功能受到干擾或失效等,即為引起單粒子效應(yīng)。單粒子效應(yīng)引發(fā)的故障包括硬錯(cuò)誤和軟錯(cuò)誤。單粒子鎖定、單粒子燒毀、單粒子?xùn)糯┑纫l(fā)的硬錯(cuò)誤會(huì)使器件中的晶體管徹底失效,導(dǎo)致電路出現(xiàn)不可逆轉(zhuǎn)的故障,一般采用硬件重構(gòu)或硬件替換的方式進(jìn)行故障恢復(fù)。軟錯(cuò)誤直接導(dǎo)致存儲(chǔ)器件的數(shù)據(jù)位翻轉(zhuǎn),不僅會(huì)損壞數(shù)據(jù),而且還有可能導(dǎo)致功能喪失和嚴(yán)重的系統(tǒng)故障。而軟錯(cuò)誤是一種瞬時(shí)性故障,這種故障是可逆的,可以通過(guò)重寫(xiě)或者復(fù)位操作使受影響的器件恢復(fù)正常運(yùn)行。
2、目前產(chǎn)業(yè)界應(yīng)用的軟錯(cuò)誤防護(hù)方法主要基于硬件實(shí)現(xiàn),最常見(jiàn)的是使用抗輻照器件和定制冗余硬件的方式來(lái)保證系統(tǒng)的可靠性。但這種方法成本較高,設(shè)計(jì)制造周期長(zhǎng)且部署及擴(kuò)展不靈活,不適用于成本敏感場(chǎng)景下的軟錯(cuò)誤防護(hù)。
3、軟件實(shí)現(xiàn)的軟錯(cuò)誤防護(hù)方法能夠兼顧容錯(cuò)成本、擴(kuò)展能力、靈活性等。一些技術(shù)中提出了os(operation?system,操作系統(tǒng))級(jí)冗余執(zhí)行的方法來(lái)應(yīng)對(duì)軟錯(cuò)誤的威脅。即為,在一臺(tái)物理主機(jī)上運(yùn)行多個(gè)冗余進(jìn)程,但是物理主機(jī)存在總線等共用組件,一旦物理主機(jī)的共用組件發(fā)生故障,整個(gè)系統(tǒng)將不可用,降低了系統(tǒng)的可靠性。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本技術(shù)提供一種軟錯(cuò)誤防護(hù)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),以利于解決現(xiàn)有技術(shù)中os級(jí)冗余執(zhí)行的容錯(cuò)方法中,一旦物理主機(jī)的共用組件發(fā)生故障,整個(gè)系統(tǒng)將不可用,降低了系統(tǒng)的可靠性的問(wèn)題。
2、第一方面,本技術(shù)實(shí)施例提供了一種軟錯(cuò)誤防護(hù)方法,所述方法包括:
3、獲取目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù),將所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)傳輸至所述目標(biāo)業(yè)務(wù)對(duì)應(yīng)的n個(gè)冗余節(jié)點(diǎn);其中,n為大于2的整數(shù);每個(gè)冗余節(jié)點(diǎn)中包含有至少一個(gè)冗余虛擬機(jī),且每個(gè)冗余虛擬機(jī)中包含有冗余進(jìn)程;
4、所述n個(gè)冗余節(jié)點(diǎn)分別對(duì)所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到n個(gè)初始處理結(jié)果;
5、基于所述n個(gè)初始處理結(jié)果,確定目標(biāo)結(jié)果,并輸出所述目標(biāo)結(jié)果。
6、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述n個(gè)冗余節(jié)點(diǎn)分別對(duì)所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到n個(gè)初始處理結(jié)果包括:
7、針對(duì)n個(gè)冗余節(jié)點(diǎn)中的每個(gè),所述冗余節(jié)點(diǎn)中每個(gè)冗余虛擬機(jī)的冗余進(jìn)程分別對(duì)所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到每個(gè)冗余進(jìn)程的冗余處理結(jié)果;
8、所述冗余節(jié)點(diǎn)基于所述每個(gè)冗余進(jìn)程的冗余處理結(jié)果,確定所述冗余節(jié)點(diǎn)的初始處理結(jié)果。
9、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述冗余節(jié)點(diǎn)基于所述每個(gè)冗余進(jìn)程的冗余處理結(jié)果,確定所述冗余節(jié)點(diǎn)的初始處理結(jié)果包括:
10、所述冗余節(jié)點(diǎn)基于所述每個(gè)冗余進(jìn)程的冗余處理結(jié)果,確定冗余處理結(jié)果的種類及每類冗余處理結(jié)果的數(shù)量;
11、檢測(cè)不同種類的冗余處理結(jié)果中是否存在其數(shù)量大于第一預(yù)設(shè)閾值的冗余處理結(jié)果;
12、若存在,則將數(shù)量大于第一預(yù)設(shè)閾值的冗余處理結(jié)果確定為所述冗余節(jié)點(diǎn)的初始處理結(jié)果。
13、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
14、若不存在,則所述冗余節(jié)點(diǎn)輸出錯(cuò)誤標(biāo)識(shí)信息;
15、基于所述錯(cuò)誤標(biāo)識(shí)信息,更新所述冗余節(jié)點(diǎn)的錯(cuò)誤次數(shù);
16、在所述冗余節(jié)點(diǎn)的錯(cuò)誤次數(shù)未超過(guò)預(yù)設(shè)次數(shù)閾值時(shí),對(duì)所述冗余節(jié)點(diǎn)進(jìn)行故障恢復(fù)處理。
17、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
18、確定是否存在故障冗余進(jìn)程;其中,故障冗余進(jìn)程是指與所述第一冗余進(jìn)程在同一冗余虛擬機(jī)中運(yùn)行的除所述第一冗余進(jìn)程之外的其他冗余進(jìn)程;第一冗余進(jìn)程為數(shù)量大于第一預(yù)設(shè)閾值的冗余處理結(jié)果對(duì)應(yīng)的冗余進(jìn)程;
19、若存在,則基于第一冗余進(jìn)程對(duì)所述故障冗余進(jìn)程進(jìn)行恢復(fù)處理。
20、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
21、針對(duì)n個(gè)冗余節(jié)點(diǎn)中的每個(gè),所述冗余節(jié)點(diǎn)在冗余進(jìn)程的運(yùn)行過(guò)程中獲取所述冗余進(jìn)程的同步數(shù)據(jù);
22、基于所述冗余進(jìn)程的同步數(shù)據(jù),確定是否調(diào)整所述冗余進(jìn)程及第二冗余進(jìn)程的優(yōu)先級(jí);其中,所述第二冗余進(jìn)程是指與所述冗余進(jìn)程在同一冗余虛擬機(jī)中運(yùn)行的除所述冗余進(jìn)程之外的其他冗余進(jìn)程;
23、若確定調(diào)整所述冗余進(jìn)程的優(yōu)先級(jí),則提高所述冗余進(jìn)程的優(yōu)先級(jí);或者,
24、若確定調(diào)整所述第二冗余進(jìn)程的優(yōu)先級(jí),則提高所述第二冗余進(jìn)程的優(yōu)先級(jí)。
25、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述冗余節(jié)點(diǎn)在冗余進(jìn)程的運(yùn)行過(guò)程中獲取所述冗余進(jìn)程的同步數(shù)據(jù)包括:
26、所述冗余節(jié)點(diǎn)在冗余進(jìn)程調(diào)用目標(biāo)函數(shù)的過(guò)程中獲取所述冗余進(jìn)程的同步數(shù)據(jù)。
27、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述冗余進(jìn)程的同步數(shù)據(jù)包括所述冗余進(jìn)程的已運(yùn)行時(shí)間及第二冗余進(jìn)程的已運(yùn)行時(shí)間;其中,所述第二冗余進(jìn)程是指與所述冗余進(jìn)程在同一冗余虛擬機(jī)中運(yùn)行的除所述冗余進(jìn)程之外的其他冗余進(jìn)程。
28、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述基于所述冗余進(jìn)程的同步數(shù)據(jù),確定是否調(diào)整所述冗余進(jìn)程及第二冗余進(jìn)程的優(yōu)先級(jí)包括:
29、基于所述冗余進(jìn)程的同步數(shù)據(jù),確定所述冗余進(jìn)程的已運(yùn)行時(shí)間與所述其他目標(biāo)冗余進(jìn)程的已運(yùn)行時(shí)間間的時(shí)間差是否超過(guò)第一預(yù)設(shè)時(shí)間閾值;
30、若超過(guò),且所述冗余進(jìn)程的已運(yùn)行時(shí)間小于所述第二冗余進(jìn)程的已運(yùn)行時(shí)間時(shí),則確定調(diào)整所述冗余進(jìn)程的優(yōu)先級(jí);或者,
31、若超過(guò),且所述第二冗余進(jìn)程的已運(yùn)行時(shí)間小于所述冗余進(jìn)程的已運(yùn)行時(shí)間時(shí),則確定調(diào)整所述第二冗余進(jìn)程的優(yōu)先級(jí)。
32、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述基于所述n個(gè)初始處理結(jié)果,確定目標(biāo)結(jié)果,并輸出所述目標(biāo)結(jié)果包括:
33、基于所述n個(gè)初始處理結(jié)果,確定n個(gè)初始處理結(jié)果的種類及每類初始處理結(jié)果的數(shù)量;
34、檢測(cè)不同種類的初始處理結(jié)果中是否存在其數(shù)量大于第二預(yù)設(shè)閾值的初始處理結(jié)果;
35、若存在,則將數(shù)量大于第二預(yù)設(shè)閾值的初始處理結(jié)果確定為目標(biāo)結(jié)果,并輸出所述目標(biāo)結(jié)果。
36、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
37、若不存在數(shù)量大于第二預(yù)設(shè)閾值的初始處理結(jié)果,則輸出錯(cuò)誤提示信息。
38、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
39、確定是否存在故障冗余節(jié)點(diǎn);其中,故障冗余節(jié)點(diǎn)是除目標(biāo)冗余節(jié)點(diǎn)之外的其他冗余節(jié)點(diǎn);所述目標(biāo)冗余節(jié)點(diǎn)為數(shù)量大于第二預(yù)設(shè)閾值的初始處理結(jié)果對(duì)應(yīng)的冗余節(jié)點(diǎn);
40、若存在,則基于目標(biāo)冗余節(jié)點(diǎn)對(duì)所述故障冗余節(jié)點(diǎn)進(jìn)行恢復(fù)處理。
41、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
42、針對(duì)n個(gè)冗余節(jié)點(diǎn)中的每個(gè)冗余節(jié)點(diǎn)的每個(gè)冗余虛擬機(jī),獲取所述冗余虛擬機(jī)的同步數(shù)據(jù);
43、基于所述冗余虛擬機(jī)的同步數(shù)據(jù),確定是否調(diào)整所述冗余虛擬機(jī)的優(yōu)先級(jí);
44、若確定調(diào)整所述冗余虛擬機(jī)的優(yōu)先級(jí),則提高所述冗余虛擬機(jī)的優(yōu)先級(jí)。
45、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述獲取所述冗余虛擬機(jī)的同步數(shù)據(jù)包括:
46、在所述冗余虛擬機(jī)發(fā)生退出事件時(shí),獲取所述冗余虛擬機(jī)的同步數(shù)據(jù)。
47、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述冗余虛擬機(jī)的同步數(shù)據(jù)包括所述冗余虛擬機(jī)的已運(yùn)行時(shí)間及其他冗余虛擬機(jī)的已運(yùn)行時(shí)間;其中,其他冗余虛擬機(jī)是指除所述冗余虛擬機(jī)之外的,與所述冗余虛擬機(jī)運(yùn)行相同業(yè)務(wù)的冗余虛擬機(jī)。
48、在第一方面的一種可能的實(shí)現(xiàn)方式中,在所述冗余虛擬機(jī)發(fā)生退出事件時(shí),獲取所述冗余虛擬機(jī)的同步數(shù)據(jù)包括:
49、在所述冗余虛擬機(jī)發(fā)生退出事件時(shí),獲取所述冗余虛擬機(jī)的同步數(shù)據(jù),并向其他冗余節(jié)點(diǎn)發(fā)送所述冗余虛擬機(jī)的已運(yùn)行時(shí)間。
50、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述基于所述冗余虛擬機(jī)的同步數(shù)據(jù),確定是否調(diào)整所述冗余虛擬機(jī)的優(yōu)先級(jí)包括:
51、基于所述冗余虛擬機(jī)的同步數(shù)據(jù),確定所述冗余虛擬機(jī)的已運(yùn)行時(shí)間是否小于其他冗余虛擬機(jī)的已運(yùn)行時(shí)間;
52、若小于,則確定所述冗余虛擬機(jī)的已運(yùn)行時(shí)間與其他冗余虛擬機(jī)的已運(yùn)行時(shí)間間的時(shí)間差是否超過(guò)第二預(yù)設(shè)時(shí)間閾值;
53、若超過(guò),則確定調(diào)整所述冗余虛擬機(jī)的優(yōu)先級(jí)。
54、在第一方面的一種可能的實(shí)現(xiàn)方式中,所述目標(biāo)業(yè)務(wù)包括錯(cuò)誤敏感業(yè)務(wù)。
55、在第一方面的一種可能的實(shí)現(xiàn)方式中,還包括:
56、獲取非目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù),將所述非目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)傳輸至所述非目標(biāo)業(yè)務(wù)對(duì)應(yīng)的冗余節(jié)點(diǎn);
57、所述非目標(biāo)業(yè)務(wù)對(duì)應(yīng)的冗余節(jié)點(diǎn)對(duì)非目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到初始處理結(jié)果,并輸出。
58、第二方面,本技術(shù)實(shí)施例提供了一種軟錯(cuò)誤防護(hù)裝置,包括:
59、第二級(jí)表決單元,用于獲取目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù),將所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)傳輸至所述目標(biāo)業(yè)務(wù)對(duì)應(yīng)的n個(gè)冗余節(jié)點(diǎn);其中,n為大于2的整數(shù);
60、冗余節(jié)點(diǎn),用于對(duì)所述目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到n個(gè)初始處理結(jié)果;每個(gè)冗余節(jié)點(diǎn)中包含有至少一個(gè)冗余虛擬機(jī),且每個(gè)冗余虛擬機(jī)中包含有冗余進(jìn)程;
61、第二級(jí)表決單元,還用于基于所述n個(gè)初始處理結(jié)果,確定目標(biāo)結(jié)果,并輸出所述目標(biāo)結(jié)果。
62、第三方面,本技術(shù)實(shí)施例提供了一種電子設(shè)備,包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被所述處理器執(zhí)行時(shí),觸發(fā)所述電子設(shè)備執(zhí)行上述第一方面任一項(xiàng)所述的方法。
63、第四方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在所述程序運(yùn)行時(shí)控制所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行第一方面任一項(xiàng)所述的方法。
64、采用本技術(shù)實(shí)施例所提供的方案,獲取目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù),將目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)傳輸至目標(biāo)業(yè)務(wù)對(duì)應(yīng)的n個(gè)冗余節(jié)點(diǎn);其中,n為大于2的整數(shù);每個(gè)冗余節(jié)點(diǎn)中包含有至少一個(gè)冗余虛擬機(jī),且每個(gè)冗余虛擬機(jī)中包含有冗余進(jìn)程;n個(gè)冗余節(jié)點(diǎn)分別對(duì)目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理,得到n個(gè)初始處理結(jié)果;基于n個(gè)初始處理結(jié)果,確定目標(biāo)結(jié)果,并輸出目標(biāo)結(jié)果。這樣一來(lái),在本技術(shù)實(shí)施例中,基于n個(gè)初始處理結(jié)果,確定目標(biāo)結(jié)果,并輸出目標(biāo)結(jié)果,即為,目標(biāo)結(jié)果是基于至少三個(gè)初始處理結(jié)果確定的。上述n個(gè)初始處理結(jié)果,是不同的冗余節(jié)點(diǎn)對(duì)目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù)進(jìn)行處理后得到的。不同冗余節(jié)點(diǎn)在彼此獨(dú)立的硬件平臺(tái)上處理目標(biāo)業(yè)務(wù)的輸入數(shù)據(jù),這樣一個(gè)冗余節(jié)點(diǎn)發(fā)生的故障只影響該冗余節(jié)點(diǎn)的初始處理結(jié)果,不會(huì)影響其他冗余節(jié)點(diǎn)的初始處理結(jié)果,目標(biāo)結(jié)果是基于n個(gè)冗余節(jié)點(diǎn)的初始處理結(jié)果確定的,提高了可靠性。