色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

分析高可用性系統(tǒng)的硬件和軟件設(shè)計(jì)模式

發(fā)布時(shí)間:2011-1-20 20:31    發(fā)布者:techshare
嵌入式系統(tǒng)設(shè)計(jì)人員經(jīng)常需要實(shí)現(xiàn)那些能在99.999%的業(yè)務(wù)時(shí)間內(nèi)可靠運(yùn)行的系統(tǒng),這意味著一天內(nèi)系統(tǒng)故障的時(shí)間將少于一秒。這些系統(tǒng)稱為高可用性系統(tǒng)。高可用性系統(tǒng)的設(shè)計(jì)通過對冗余硬件和軟件進(jìn)行組合,無需人為干預(yù)即可管理故障檢測和糾錯(cuò)。本文首先簡要回顧了與高可用性系統(tǒng)和故障管理相關(guān)的一些概念,然后研究了容錯(cuò)系統(tǒng)的一些硬件和軟件設(shè)計(jì)模式。

故障與失效

在設(shè)計(jì)高可用性系統(tǒng)時(shí),需要重點(diǎn)關(guān)注“故障”和“失效”。為了更好地說明,這里將“失效”定義為系統(tǒng)提供的業(yè)務(wù)與設(shè)計(jì)規(guī)范不符的情況。故障則是與系統(tǒng)相互作用的一種錯(cuò)誤,它是人們通常所指的不期望發(fā)生事件的可能原因。因此,故障可能是系統(tǒng)的子系統(tǒng)失效、器件失效、外部系統(tǒng)失效或程序錯(cuò)誤。

故障可以是瞬時(shí)故障、永久故障或周期性故障。故障一旦發(fā)生,將導(dǎo)致系統(tǒng)或子系統(tǒng)的狀態(tài)出錯(cuò),而這些錯(cuò)誤將引發(fā)系統(tǒng)失效。故障處理主要有以下四種主要方法:

1. 故障預(yù)測;

2. 故障避免;

3. 故障消除;

4. 容錯(cuò)。



故障預(yù)測利用數(shù)學(xué)模型和試驗(yàn)提供故障及其后果的預(yù)估。例如,實(shí)際中采用的一種故障預(yù)測技術(shù)就是在系統(tǒng)中插入故障,研究可能出現(xiàn)的各種系統(tǒng)失效。

故障避免和消除則通過嚴(yán)格的系統(tǒng)、硬件和軟件開發(fā)工藝及正式規(guī)范和驗(yàn)證技術(shù)加以實(shí)現(xiàn)。

容錯(cuò)通過采用各種冗余系統(tǒng)實(shí)現(xiàn),從而避免了故障影響!笆趸笔菍(shí)現(xiàn)容錯(cuò)的一種方法:即便該方法難以提供整體系統(tǒng)性能,也能提供切合實(shí)際的部分功能。“失效保護(hù)(fail safe)或失效即停(fail stop)”則是另一種容錯(cuò)方法:當(dāng)故障發(fā)生時(shí),該方法在一個(gè)安全狀態(tài)終止系統(tǒng),而不讓系統(tǒng)繼續(xù)執(zhí)行。

容錯(cuò)涉及的主要概念是冗余。容錯(cuò)基于這樣的思想(或愿望):多個(gè)獨(dú)立的故障不會(huì)同時(shí)攻擊系統(tǒng)。容錯(cuò)系統(tǒng)應(yīng)能規(guī)避單點(diǎn)失效,換言之,如果系統(tǒng)的某部分可能出現(xiàn)故障,那么系統(tǒng)中應(yīng)當(dāng)存在解決該故障的冗余部分,從而避免失效。

冗余具有很多種形式:

1. 硬件冗余(低端、高端或兩者兼有);

2. 軟件冗余;

3. 時(shí)間冗余;

4. 信息冗余。

飛機(jī)內(nèi)的自校驗(yàn)邏輯電路及多臺(tái)飛行計(jì)算機(jī)即為典型的硬件冗余。軟件冗余可采用兩種完全不同的算法,得到的結(jié)果也完全相同。時(shí)間冗余可以利用通信重傳實(shí)現(xiàn),而信息冗余則可采用備份、校驗(yàn)及糾錯(cuò)代碼實(shí)現(xiàn)。

冗余可以是動(dòng)態(tài)的,也可以是靜態(tài)的,兩者均需復(fù)制系統(tǒng)的基本要素。在靜態(tài)冗余中,同一時(shí)刻所有的復(fù)制要素均保持激活。如果一個(gè)復(fù)制“拋出”故障,系統(tǒng)能夠馬上使用另一復(fù)制,并繼續(xù)正確的操作。在動(dòng)態(tài)冗余中,只有一個(gè)復(fù)制保持激活,而其余復(fù)制則不激活。如果被激活的復(fù)制產(chǎn)生故障,先前未被激活的一個(gè)復(fù)制將被激活并接管臨界操作。

那么上述各種方法是如何實(shí)現(xiàn)高可用性的呢?首先,必須對高可用性進(jìn)行定義。高可用性表征系統(tǒng)容錯(cuò)并根據(jù)規(guī)范繼續(xù)提供業(yè)務(wù)的能力。系統(tǒng)可以采用本文給出的所有概念和方法實(shí)現(xiàn)高可用性。



可用性通常采用“可用度”或“每年故障時(shí)間”進(jìn)行量度。常規(guī)的容錯(cuò)系統(tǒng)可以達(dá)到99.99%的可靠度,即相當(dāng)于每年故障1小時(shí)(每天故障10秒鐘)。但高可用性系統(tǒng)則有望實(shí)現(xiàn)高達(dá)99.999%的可用度,即每年故障少于5分鐘(簡單地說,即每天故障1秒鐘)。這意味著當(dāng)故障出現(xiàn)時(shí),系統(tǒng)必須能自動(dòng)處理,因?yàn)椴僮魅藛T難以在很短的時(shí)間內(nèi)移除或掩蓋任何故障。

硬件冗余

與采用極可用器件構(gòu)建單個(gè)極可用模塊的硬件設(shè)計(jì)相比,使用由常規(guī)商業(yè)級(jí)質(zhì)量的器件構(gòu)成的常規(guī)商業(yè)級(jí)質(zhì)量硬件進(jìn)行冗余復(fù)制模塊設(shè)計(jì),無疑具有更高的成本效益。

每個(gè)復(fù)制通常都要求具有“快速失效”或“失效即!碧匦,這極大地簡化了故障管理決策。每次失效都使硬件在運(yùn)行中停止,而不是試圖勉強(qiáng)執(zhí)行下去并要求管理人員指出模塊中哪些輸出發(fā)生故障,哪些則一切正常。

對于采用靜態(tài)冗余的容錯(cuò),每個(gè)復(fù)制模塊都具有常規(guī)的商用可用性。采用雙重復(fù)制的模式稱為配對或雙路復(fù)用(duplexing)。如果采用了N個(gè)復(fù)制,則稱為N路復(fù)用(N-plexing)。

圖1顯示了3路復(fù)用或3重冗余硬件設(shè)計(jì),這三重復(fù)制均位于方框圖的底端附近。這些復(fù)制向“表決器”提交輸出,表決器決定了子系統(tǒng)的最終實(shí)際輸出。在N路復(fù)用設(shè)計(jì)中,當(dāng)N ≥ 3時(shí),表決器通常采用多數(shù)決策策略。但是,這需要占不失效復(fù)制的絕大多數(shù),而不僅僅是占復(fù)制總數(shù)(失效和不失效復(fù)制)的簡單多數(shù)。

然而,表決器的硬件和軟件不是類似于系統(tǒng)中的任何其他模塊,也會(huì)失效嗎?實(shí)際上,確實(shí)如此;而且一旦失效,還會(huì)給系統(tǒng)帶來災(zāi)難性的影響。但表決器通常極為簡單,因此可以通過設(shè)計(jì)和測試保證其魯棒性。此外,還可以設(shè)計(jì)復(fù)雜表決器和二級(jí)表決器等復(fù)雜系統(tǒng),但本文不準(zhǔn)備進(jìn)行深入討論。

對于采用動(dòng)態(tài)冗余的容錯(cuò),復(fù)制模塊仍然只需具有常規(guī)的商用可用性。一種實(shí)現(xiàn)方法是采用由一個(gè)被激活模塊和一個(gè)備用模塊組成的冗余對。另一方法則采用一簇模塊,這些模塊不必是其他模塊的精確復(fù)制,可以具有不同的特征、接口和容量。這簇復(fù)制需要采用失效接替策略,這樣當(dāng)主模塊出現(xiàn)故障時(shí),就能確定如何對多個(gè)模塊進(jìn)行管理。下面給出了一些選擇:

1. 熱備用。主模塊在系統(tǒng)中運(yùn)行時(shí),備份模塊處于“熱備用”狀態(tài),一旦主模塊出現(xiàn)故障,備份模塊將啟動(dòng)并接管主模塊。例如,可以采用這種方法設(shè)計(jì)高可用性的互聯(lián)網(wǎng)服務(wù)器。

2. 轉(zhuǎn)動(dòng)備用。主模塊在系統(tǒng)運(yùn)行時(shí),可以具有許多備用模塊。一旦主模塊出現(xiàn)故障,一個(gè)備用模塊將接管系統(tǒng)的運(yùn)行。航天飛機(jī)上飛行計(jì)算機(jī)的設(shè)計(jì)就基于該原理:主模塊由兩臺(tái)總穩(wěn)定工作的計(jì)算機(jī)組成,其中一個(gè)備用模塊是一個(gè)相似對(similar pair),而第二個(gè)備用模塊則是一臺(tái)只能根據(jù)操作員指令接管系統(tǒng)的計(jì)算機(jī)。

3.

非關(guān)鍵模塊的失效接替。主模塊占用系統(tǒng)的關(guān)鍵資源,備用模塊則占用其他非關(guān)鍵資源。一旦主模塊出現(xiàn)故障,備用模塊就能接管主模塊占用的大部分關(guān)鍵資源。日常生活中我們也常常這么做:當(dāng)我們試圖發(fā)送一封緊急的電子郵件時(shí),如果計(jì)算機(jī)的高速互聯(lián)網(wǎng)連接出現(xiàn)故障,我們會(huì)立即切換到舊式的調(diào)制解調(diào)器。

4. 共同接管。每個(gè)模塊均運(yùn)行自帶的關(guān)鍵資源,而且一旦某個(gè)模塊發(fā)生故障,其他模塊還能接管故障模塊的關(guān)鍵資源。例如,在功能增強(qiáng)的心護(hù)理室中,每8位病人將設(shè)置一臺(tái)心臟監(jiān)控計(jì)算機(jī)。如果一臺(tái)心臟監(jiān)控計(jì)算機(jī)崩潰,那么鄰近的計(jì)算機(jī)也能對故障計(jì)算機(jī)監(jiān)控的8位病人進(jìn)行監(jiān)控(或許性能將有所降低)。

正確的失效接替實(shí)現(xiàn)非常關(guān)鍵。如果故障的主模塊需要拋棄故障并繼續(xù)執(zhí)行,而同時(shí)另一模塊也試圖接管其業(yè)務(wù),那么后果將是災(zāi)難性的,因?yàn)樗鼈兊臉I(yè)務(wù)有可能產(chǎn)生沖突。如果主模塊拋棄故障后停止執(zhí)行,而又沒有其他模塊接管其業(yè)務(wù),這樣的后果同樣是災(zāi)難性的。因此失效接替的驗(yàn)證和測試非常關(guān)鍵,盡管我們當(dāng)中的許多人并不熱衷于此。

軟件冗余

大多數(shù)硬件故障都是隨機(jī)產(chǎn)生并由物理缺陷導(dǎo)致,這些缺陷要么在生產(chǎn)過程中維持不變,要么隨器件的老化而不斷變化,要么將受到外部物理環(huán)境的沖擊。相反,軟件故障與物理?xiàng)l件無關(guān),因?yàn)檐浖粫?huì)老化。與硬件故障不同,軟件故障源自對軟件設(shè)計(jì)或?qū)崿F(xiàn)中固有故障的軟件路徑調(diào)用。由于軟件通常比硬件復(fù)雜,因此軟件中可能具有比硬件多得多的內(nèi)置缺陷,從而導(dǎo)致軟件中的故障更多,容錯(cuò)設(shè)計(jì)的成本也更高。

N版編程(N-version programming )是久經(jīng)考驗(yàn)的一種軟件容錯(cuò)設(shè)計(jì)方法。20世紀(jì)70年代偶然接觸到該方法時(shí),那時(shí)還被稱為異質(zhì)軟件(dissimilar software)。這是硬件N路復(fù)用(如圖1所示)的等價(jià)軟件實(shí)現(xiàn)。但該方法比硬件N路復(fù)用的復(fù)制機(jī)制復(fù)雜,N路復(fù)用中相同軟件的N個(gè)復(fù)制將包含相同的故障并產(chǎn)生N次相同的錯(cuò)誤。在N版編程中,如果N套軟件功能需要并行運(yùn)行,那么它們應(yīng)當(dāng)是該功能的N個(gè)不同實(shí)現(xiàn),而且是由N個(gè)單獨(dú)的開發(fā)團(tuán)隊(duì)獨(dú)立開發(fā)完成。這就是N版編程的基本原理。

1996年6月,當(dāng)首次發(fā)射的阿麗安娜-5衛(wèi)星發(fā)送火箭上升到4000米高空時(shí),突然發(fā)生了爆炸。該事故的原因在于火箭的慣性參考系統(tǒng)(這是數(shù)字飛行控制的一部分)發(fā)生了故障。盡管慣性參考系統(tǒng)中引入了硬件冗余,但軟件冗余沒有得到正確的處理。阿麗安娜-5帶有兩臺(tái)慣性參考計(jì)算機(jī),一臺(tái)處于工作狀態(tài),而另一臺(tái)則處于“開機(jī)”備用狀態(tài)。這兩套系統(tǒng)并行運(yùn)行,并具有完全一樣的硬件和軟件。系統(tǒng)上的軟件也與先前已經(jīng)成功發(fā)射的阿麗安娜-4幾乎一模一樣,但由于阿麗安娜-5上的某些飛行參數(shù)值比阿麗安娜-4大,因此數(shù)據(jù)發(fā)生了溢出。解決問題的方法是關(guān)閉計(jì)算機(jī),由于冗余計(jì)算機(jī)也在運(yùn)行相同的軟件,因此也將受到數(shù)據(jù)溢出的沖擊,從而很快關(guān)閉,這樣整個(gè)慣性參考系統(tǒng)就完全崩潰。結(jié)果,引擎的噴管被回旋至極限位置,導(dǎo)致火箭突然轉(zhuǎn)向,并在自毀之前裂成兩半。這種處理數(shù)據(jù)溢出錯(cuò)誤的方法適用于處理隨機(jī)出現(xiàn)的硬件錯(cuò)誤,但不適用于處理兩臺(tái)計(jì)算機(jī)上出現(xiàn)的類似軟件錯(cuò)誤。N版編程可以避免兩臺(tái)計(jì)算機(jī)出現(xiàn)類似的軟件錯(cuò)誤。


在20世紀(jì)70年代,N版編程(N-version programming)是先進(jìn)的軟件容錯(cuò)設(shè)計(jì)方法。此后,這種設(shè)計(jì)模式引發(fā)了一系列問題:隨著該技術(shù)的采用,軟件開發(fā)成本直線飆升,因?yàn)楸仨毘闪個(gè)單獨(dú)的團(tuán)隊(duì)開發(fā)N套相互獨(dú)立的軟件。如果期望降低成本,則將陷入所謂的“平均智商( Average IQ)”怪圈:較低成本的開發(fā)團(tuán)隊(duì)意味著較低質(zhì)量的軟件工程師,而這些工程師只能開發(fā)出較低質(zhì)量的代碼。因此,最終只能得到充斥著以N種不同方式產(chǎn)生故障的N種不同程序。

N版編程面臨的另一個(gè)問題在于如何為N個(gè)獨(dú)立開發(fā)團(tuán)隊(duì)提供輸入。一般情況下,將為所有的N個(gè)開發(fā)團(tuán)隊(duì)提供相同的規(guī)范標(biāo)準(zhǔn)。然而,一旦規(guī)范存在缺陷,那么將得到N個(gè)獨(dú)立開發(fā)的包含類似軟件故障的版本。如果系統(tǒng)發(fā)布之后,規(guī)范或使用錯(cuò)誤得到識(shí)別,那么每個(gè)新錯(cuò)誤都需要糾正N次,即N個(gè)不同的實(shí)現(xiàn)都需要加以糾正,這樣維護(hù)成本就相當(dāng)驚人,F(xiàn)在,最佳的N版編程方法是讓第一流的軟件開發(fā)團(tuán)隊(duì),利用最可靠的底層架構(gòu)、軟件開發(fā)工具、技術(shù)和測試來開發(fā)出高質(zhì)量的軟件版本。

校驗(yàn)點(diǎn)恢復(fù)

與基于靜態(tài)冗余的N版編程不同,許多軟件容錯(cuò)設(shè)計(jì)模式均基于動(dòng)態(tài)冗余。這些設(shè)計(jì)模式均包含以下四個(gè)步驟:

1. 故障檢測

2. 損害評(píng)估與 限制(有時(shí)也稱為“防火墻處理”)

3. 故障恢復(fù)

4. 故障處理和業(yè)務(wù)繼續(xù)

步驟二中,當(dāng)檢測到軟件錯(cuò)誤時(shí),一般可以采用失效保護(hù)。但軟件往往極其復(fù)雜,因此消除故障軟件導(dǎo)致的后果也并非輕而易舉。事務(wù)的概念是解決該問題的一個(gè)有效工具,事務(wù)是應(yīng)用狀態(tài)下操作的集合,這樣事務(wù)的起始點(diǎn)和結(jié)束點(diǎn)均是應(yīng)用的穩(wěn)定狀態(tài)。例如,每個(gè)城市的市政廳都具有一個(gè)包含該城市所有居民信息的文件系統(tǒng)。當(dāng)一對夫妻結(jié)婚時(shí),他們的姓名和結(jié)婚日期都記錄在一個(gè)命名為“已婚夫妻”的文件中。另外,記載新郎從單身到已婚狀態(tài)變化的文件稱為“男性居民”;記載新娘從單身到已婚狀態(tài)變化的文件稱為“女性居民”。如果上述3個(gè)文件中的一個(gè)未能得到有效更新或者軟件在更新過程中突然崩潰,我們將不得不返回到該婚姻“事務(wù)”的起始點(diǎn)。否則,將只會(huì)以不穩(wěn)定狀態(tài)而告終,如新郎顯示為已婚狀態(tài),而新娘則仍然顯示為單身狀態(tài)。穩(wěn)定狀態(tài)只出現(xiàn)在婚姻事務(wù)的起始點(diǎn)以及得到成功處理的結(jié)束點(diǎn)。

如果希望在容錯(cuò)中引入事務(wù)概念,系統(tǒng)必須能在事務(wù)的起始點(diǎn)保存系統(tǒng)狀態(tài),這稱為檢驗(yàn)指示。檢驗(yàn)指示需要在開始新事務(wù)之前迅速保存系統(tǒng)狀態(tài),并且必須要求先前的事務(wù)以無差錯(cuò)狀態(tài)結(jié)束。這里,一種基本的恢復(fù)策略是再執(zhí)行方法:一旦事務(wù)中檢測到錯(cuò)誤,事務(wù)將進(jìn)行失效保護(hù),系統(tǒng)將重新載入最近保存的檢驗(yàn)點(diǎn)。這樣業(yè)務(wù)又能從檢驗(yàn)點(diǎn)繼續(xù)執(zhí)行下去,并允許在該穩(wěn)定狀態(tài)上進(jìn)行新的事務(wù)處理。然而,這樣將丟失進(jìn)行失效保護(hù)的事務(wù)。這類故障恢復(fù)也稱為后向故障恢復(fù),因?yàn)檐浖顟B(tài)將還原到先前的一個(gè)無差錯(cuò)點(diǎn)上。

簡單的檢驗(yàn)指示本身也容易引發(fā)單點(diǎn)失效,因?yàn)樵诒4鏅z驗(yàn)點(diǎn)狀態(tài)時(shí)有可能出現(xiàn)故障,但我們可以采用一種稱為檢驗(yàn)點(diǎn)還原(checkpoint-rollback)的方法解決這個(gè)問題,如圖2所示。圖中,橢圓符號(hào)代表通過發(fā)送隊(duì)列消息進(jìn)行通信的軟件客戶和軟件服務(wù)器。一個(gè)事務(wù)可以包含許多從客戶機(jī)發(fā)往服務(wù)器的請求消息以及從服務(wù)器發(fā)往客戶機(jī)的響應(yīng)消息。在一個(gè)事務(wù)中,數(shù)據(jù)在服務(wù)器中修改。在事務(wù)的結(jié)束點(diǎn),右圖所示的兩個(gè)恒定大容量存儲(chǔ)設(shè)備將記錄穩(wěn)定的數(shù)據(jù)集和事務(wù)序列號(hào)。如果某一時(shí)刻檢測到錯(cuò)誤,而服務(wù)器已被關(guān)閉,那么服務(wù)器將重啟(或啟動(dòng)備用服務(wù)器)。作為啟動(dòng)恢復(fù)過程的一部分,兩個(gè)大容量存儲(chǔ)設(shè)備還需要檢驗(yàn)事務(wù)序列號(hào)。服務(wù)器數(shù)據(jù)將根據(jù)包含最高序列號(hào)的設(shè)備進(jìn)行恢復(fù)。因?yàn)楣收铣霈F(xiàn)在設(shè)備檢驗(yàn)中,因此另一大容量設(shè)備將帶有較低的序列號(hào)。

流程對設(shè)計(jì)模式




檢驗(yàn)點(diǎn)設(shè)計(jì)模式的一個(gè)缺陷在于故障恢復(fù)時(shí)間過長。啟動(dòng)或重啟服務(wù)器需要進(jìn)行許多處理,才能恢復(fù)到檢驗(yàn)點(diǎn)狀態(tài)!盁醾溆谩狈⻊(wù)器與其自帶的恒定大容量存儲(chǔ)設(shè)備的直接協(xié)同工作可以加速恢復(fù),該設(shè)計(jì)模式也稱為流程對(process pair)設(shè)計(jì),如圖3所示。

圖3中,方框圖中央是一個(gè)工作原理與先前檢驗(yàn)點(diǎn)情形非常相似的主服務(wù)器,客戶機(jī)直接與主服務(wù)器協(xié)同工作。一旦主服務(wù)器成功地完成整個(gè)事務(wù),將傳送與新的穩(wěn)定狀態(tài)相關(guān)的信息至備用服務(wù)器(右端的服務(wù)器)。主服務(wù)器和備用服務(wù)器都將在恒定大容量設(shè)備中記錄數(shù)據(jù)。這樣,備用服務(wù)器就能保存完整事務(wù)的當(dāng)前信息。當(dāng)主服務(wù)器準(zhǔn)備就緒并可供客戶機(jī)使用,將向備用服務(wù)器發(fā)送常規(guī)的“心跳消息(heartbeat message)”,這些心跳消息還可以同某些檢驗(yàn)點(diǎn)消息相結(jié)合。一旦檢測到心跳消息流終止,備用服務(wù)器就知道主服務(wù)器已關(guān)閉或無法使用,進(jìn)而作為一個(gè)新的主服務(wù)器迅速接管事務(wù)。

該設(shè)計(jì)模式不僅適用于客戶機(jī)、主服務(wù)器和備用服務(wù)器均位于同一處理器或模塊上的情形,還適用于三者位于不同處理器或模塊的情形。

盡管流程對設(shè)計(jì)模式具有諸多優(yōu)勢,但仍有一些問題需要解決。例如,備用服務(wù)器丟失了檢驗(yàn)點(diǎn)消息或消息的順序不對,而且,當(dāng)主服務(wù)器是物理設(shè)備的控制器并在操作中發(fā)生故障時(shí),也會(huì)產(chǎn)生問題。當(dāng)備用服務(wù)器接管事務(wù)時(shí),不必知道如何完成操作,因?yàn)閭溆梅⻊?wù)器并不知道主服務(wù)器失效之前究竟運(yùn)行到哪一步。

需要再次重申的是,在流程對設(shè)計(jì)模式中,當(dāng)主服務(wù)器失效時(shí),仍在進(jìn)行的事務(wù)將在執(zhí)行中丟失或撤銷。備份服務(wù)器接管主服務(wù)器的狀態(tài)是主服務(wù)器失效前報(bào)告給備用服務(wù)器最后完成的事務(wù)的狀態(tài)。

恢復(fù)程序塊

動(dòng)態(tài)軟件冗余的另一種設(shè)計(jì)模式稱為恢復(fù)程序塊。該方法基于檢驗(yàn)指示,但添加了對軟件處理結(jié)果的驗(yàn)收測試。設(shè)計(jì)中必須準(zhǔn)備數(shù)據(jù)處理的替代方法(就像在N版編程中一樣),但不必對每個(gè)事務(wù)運(yùn)行所有的數(shù)據(jù)處理方法。相反,可以選擇一種數(shù)據(jù)處理方式作為主方式,并且首先只采用主方式處理事務(wù)。一旦主處理完成,即可運(yùn)行驗(yàn)收測試。如果驗(yàn)收測試通過,則表明主數(shù)據(jù)處理方式完全有效。如果驗(yàn)收測試失敗,則可如圖4所示,繼續(xù)試驗(yàn)下一個(gè)替代方案。

如方框圖所示,必須在首次進(jìn)入恢復(fù)程序塊之前進(jìn)行檢驗(yàn)指示。每次失效的驗(yàn)收測試之后,軟件必須還原到檢驗(yàn)點(diǎn)狀態(tài)。每次嘗試替代的處理方法之后,都必須進(jìn)行驗(yàn)收測試。這樣,需要不斷進(jìn)行處理方式更迭,直到提供通過驗(yàn)收測試的處理方式。這些“良好”的輸出構(gòu)成了恢復(fù)程序塊的最終結(jié)果。

前向故障恢復(fù)

檢驗(yàn)點(diǎn)恢復(fù)、流程對和恢復(fù)程序塊都是后向故障恢復(fù)方法。大多數(shù)動(dòng)態(tài)軟件容錯(cuò)都采用后向故障恢復(fù)方法,但前向故障恢復(fù)也是不錯(cuò)的選擇。前向故障恢復(fù)的基本思想是從錯(cuò)誤狀態(tài)繼續(xù)進(jìn)行并通過校正清除故障。前向故障恢復(fù)基于精確的錯(cuò)誤損失評(píng)估,因此通常取決于具體的系統(tǒng)。異常處理就是前向故障恢復(fù)的一個(gè)典型例子,當(dāng)檢測到問題,該方法就發(fā)送命令至專用的異常處理軟件,而不是返回到先前某個(gè)檢驗(yàn)點(diǎn)狀態(tài)并繼續(xù)執(zhí)行下去。

替代處理是前向故障恢復(fù)的一種設(shè)計(jì)模式。當(dāng)某個(gè)事務(wù)存在兩種(或更多)處理選擇時(shí),就可以采用替代處理方法。在這兩種處理方法中,一種方法非常精確,但計(jì)算復(fù)雜;另一種方法則相對簡單并具有更高的性能。替代方法不僅可用作測試,而且當(dāng)主處理方法出現(xiàn)故障時(shí)也可用作二級(jí)結(jié)果提供器。例如,平方根算法可作為主處理方法,而表查詢插入算法則可作為替代方法。一旦運(yùn)行了平方根算法,表查詢插入算法不僅可用于測試平方根算法所得結(jié)果的質(zhì)量,還能迅速校正這些結(jié)果中的錯(cuò)誤。

圖5中,為了控制飛機(jī)(波音777),同時(shí)采用了兩套數(shù)字飛行數(shù)字系統(tǒng)?驁D右側(cè)的決策邏輯電路將簡單飛行控制系統(tǒng)的輸出作為測試復(fù)雜的主飛行控制系統(tǒng)輸出的衡量標(biāo)準(zhǔn)。如果驗(yàn)收測試失效,簡單飛行控制系統(tǒng)的輸出也可用作失效主輸出的替代,向左的箭頭表示替代處理的結(jié)果也可為主處理提供反饋。

上述設(shè)計(jì)模式使采用常規(guī)商業(yè)級(jí)質(zhì)量的硬件和軟件為真正的高可用性系統(tǒng)構(gòu)造程序塊成為可能,這樣的高性能系統(tǒng)無需人為干預(yù),即可實(shí)現(xiàn)高達(dá)99.999%或更高的可靠性。
本文地址:http://www.54549.cn/thread-50296-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表