容錯能力
From Wikipedia, the free encyclopedia
Remove ads
容錯(粵拼:jung4 co3),又叫故障容許度,係一個系統可以有嘅特性,指個系統「喺某個或者某啲組成部份故障嗰陣,有幾能夠繼續正常運作」,亦都包埋個系統喺呢種情況下「表現會跌幾多」[1]:
- 冇容錯能力:一旦個系統其中一橛出咗錯,就成個系統軭嗮;
- 有咁上下容錯能力:一旦個系統其中一橛出咗錯,佢依然行到,但表現會明顯變差;
- 「得體」嘅容錯能力(得體降級):隨住系統越來越多出錯,佢依然行到,表現只會細微噉變差。

舉個例說明,想像家陣有隻電腦軟件(系統),佢會接收由用家等來源嚟嘅 input;想像有吓 input 嘅數值異常,搞到隻軟件其中一部份計錯數(出錯);如果隻軟件完全冇容錯能力,就會輕機;現實世界嘅軟件工程師多數都會將隻軟件設計成有些少容錯能力,即係例如就算其中一橛計錯數,隻軟件都唔輕機,而係揼咗個錯嘅數,用第個用得(但未必最理想)嘅數頂替,再彈條信息出嚟話俾用家知出咗問題——隻軟件表現差咗,但仲行得到[2][3]。容錯能力嘅概念喺電腦以外嘅工程學領域都用得着——例如車其中有條呔爆咗,用家換條新呔(一段相對易嘅工序)架車就可以繼續行,唔會進入完全郁唔到嘅狀態——架車有一定嘅容錯能力。
喺廿一世紀初嘅工程學上,容錯能力一般認為係理想嘅特徵:工程師設計產品嗰陣——包括軟件工程師寫軟件,或者汽車工程師設計汽車呀噉,都會想自己設計件嘢有返咁上下容錯能力。有唔少做工程學學術研究嘅人,仲會深入噉諗同討論「啲系統要點設計,先可以容錯能力高」噉嘅問題[4]。
Remove ads
基本特徵

睇埋:損傷容限
一個系統要算得上係「有容錯能力」,起碼需要滿足以下呢啲條件[5]:
- 冇故障單點(SPOF):系統嘅故障單點係指「一旦軭咗,就成個系統軭嗮」嘅部份,例如附圖嗰個電腦網絡,成個網絡啲訊號都要經部路由器,先可以由一部電腦傳去第部電腦度,噉部路由器一軭,成個網絡就通唔到訊——個路由器就係個系統嘅通訊嘅故障單點;容錯嘅系統最理想係冇故障單點。
- 故障隔離:當個系統出問題嗰陣,個系統需要能夠探測個問題,並且話俾用家知「出錯嘅係個系統邊一橛」;例如機械工程上好興喺機械上面裝感應器,俾用家知部機邊一忽(喺溫度同壓力等方面)有唔妥;
- 故障壓制[6]:當個系統出問題嗰陣,個系統要能夠確保個問題唔會「傳播開去」——軭咗嗰忽可以繼續軭,但唔可以拖累個系統嘅其餘部份,搞到淨低嗰啲部份跟住佢一齊軭。
好似噉嘅系統能夠做到得體降級[7]——就算有嘢出咗故障,個系統都能夠或多或少噉繼續運作——「表現會降級,但降起級上嚟得體」噉解。要留意嘅係,上述呢度係講緊「個系統最理想要有呢啲特性」——喺現實世界嘅某啲情況下,呢啲特性好多時一係冇可能達到,一係有可能達到但要花費嘅資源量大得滯,所以設計者唔會嘗試追求。
失效安全同失效致命呢兩個概念同容錯有密切關係:如果話某個系統係特登設計到失效安全,即係指佢有故障局部或者完全喪失功能嗰陣,都仲能夠做到保護人、財產同數據免受傷害[8];例如某架車,架車設計到有返咁上下硬淨,架車就算失控撞車(故障局部或者完全喪失功能)架車都唔會變形變得太犀利,坐喺入面嘅人同財產唔會受大傷害——就算係達致失效安全;失效致命可以話係失效安全嘅相反,指就算個系統故障局部或者完全喪失功能,佢都能夠成功傷害或者殺死目標——呢種設計喺武器嘅設計上好常見[9]。
Remove ads
工程設計
睇埋:工程設計
設計技巧
喺實際應用上,工程師有唔少方法可以提升個系統嘅容錯能力:
- 冗餘:指同個系統加啲「多餘」嘅功能,呢啲「多餘」功能喺冇故障嘅世界入面係唔必要;攞住「要提升佢容錯力」嘅系統部份,設計者可以將個系統部份複製幾次,啲複製品用嚟做後備;噉一旦個系統部份軭咗,個系統就可以即刻改為用啲後備部件頂替;舉例說明,啲大型[註 1]嘅船同飛機好興設計成有多過一部發動機(將發動機複製咗幾次);噉如果架嘢嘅主發動機出咗故障,佢哋就可以改為用後備發動機嚟推動架嘢,等架嘢仲可以繼續行,或者起碼有足夠時間駛去安全嘅地方[2]。

- 複製:提升電腦軟硬件系統容錯能力嘅技巧;「複製」係指將一個系統部份複製幾次,不過唔係攞嚟做後備,而係要求呢幾件複雜品冚唪唥一齊平行噉計數,等到要攞個運算結果去用嗰時,就睇勻嗮嗰幾件複雜品嘅運算結果先做決定;例如想像家吓想叫電腦計條好複雜嘅數,研究者可以要 5 部機分別計一次,再攞 5 部機之間嘅主流[註 2]結果去用,理由係「5 部機冚唪唥都計錯數」嘅機率細過「其中一部計錯數」嘅機率[13]。
... 呀噉。

現實考量
喺實用嘅工程學上,通常淨係得一小部份嘅部件會有容錯設計:特登加容錯設計係要成本嘅;例如一架車要整得硬淨,就梗要用更多或者更貴嘅材料整;而電腦軟件要加啲容錯設計就要落更多行嘅源碼,教部電腦做例外處理,就實令到隻軟件最後大咗。因為噉,工程師決定「好唔好同呢個部件加容錯設計」嗰時,有諸多考量要諗[15]:
- 故障可能性:假設第啲因素不變,系統部份愈有大機率會出故障,就愈有需要同佢落容錯設計。
- 重要:假設第啲因素不變,一個系統部份愈重要,工程師就愈大機會想加容錯設計——當中「重要」係指「嗰部份一故障就會搞到個系統喪失功能,或者引致人命財產損失」;例如私家車上面嘅收音機對架車嘅功能唔係咁必要(冇咗都唔會搞到架車做唔到主要功能,亦唔會引致咩人命財產損失),所以工程師正路唔會專登同架車嘅收音機落容錯設計;相比之下,架車嘅發動機(冇咗發動機,架車就完全郁唔到)嘅重要部份,就比較有可能會落容錯設計。
- 成本:假設第啲因素不變,容錯設計嘅成本愈高,工程師就愈唔想採用隻設計;例如想像而家要同架車嘅發動機落容錯,原則上,工程師可以索性加多部發動機落去做後備(冗餘),但現實表明,要同架車加多部發動機成本極高——汽車係要量產嘅(相比之下,例如大型郵輪就唔使量產),所以吓吓都加後備發動機要使多好錢,而且架車個殼又裝唔落兩部發動機(將架車設計到大啲又係令成本大增);所以工程師想同架車嘅發動機做容錯設計,唔會用「加多部發動機做後備」呢種做法。
... 等等。
Remove ads
工程相關
拉雜相關
註釋
引咗
拎
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads