分層與封裝(4) 計(jì)算機(jī)系統(tǒng)的容錯(cuò)性

? ? 系統(tǒng)的性能并不是唯一指標(biāo)驻子,尤其是現(xiàn)在灿意,系統(tǒng)的移動(dòng)性、功耗也成為了都成為了最重要崇呵,甚至在手機(jī)等移動(dòng)設(shè)備上是超過(guò)性能的指標(biāo)缤剧。對(duì)于一些極端的設(shè)備,性能可能是最次的考察指標(biāo)演熟,比如飛機(jī)上的黑匣子最重要的是穩(wěn)定性鞭执,南極科考站的系統(tǒng)最重要的是低溫情況下的運(yùn)作情況。對(duì)于我們一般人而言芒粹,最重要的可能是系統(tǒng)的容錯(cuò)性和安全性兄纺。

? ? 系統(tǒng)的容錯(cuò)主要是兩種方面,一個(gè)是數(shù)據(jù)的容錯(cuò)化漆,這是指系統(tǒng)能夠自動(dòng)糾正可能含有錯(cuò)誤的數(shù)據(jù)估脆;一個(gè)是控制的容錯(cuò),這是指系統(tǒng)在控制出現(xiàn)錯(cuò)誤的時(shí)候座云,能夠按照正常的方式運(yùn)行而不會(huì)崩潰疙赠。要處理這些錯(cuò)誤付材,勢(shì)必是要付出代價(jià)的,或者是通過(guò)冗余的方式在發(fā)生錯(cuò)誤的時(shí)候進(jìn)行恢復(fù)圃阳,或者增加額外的控制方法來(lái)應(yīng)對(duì)系統(tǒng)發(fā)生的錯(cuò)誤厌衔。

? ? 數(shù)據(jù)通信中,是最常見(jiàn)發(fā)生錯(cuò)誤的部分捍岳。但第一個(gè)簡(jiǎn)單的問(wèn)題就是富寿,如何知道數(shù)據(jù)傳輸發(fā)生錯(cuò)誤了?
假設(shè)從設(shè)備A到設(shè)備B锣夹,發(fā)送的信息是XYZ的話:
? ? ? ? 設(shè)備A知道A發(fā)送的是什么
? ? ? ? 設(shè)備B知道B收到的是什么
? ? ? ? 但是設(shè)備A不知道B收到的是什么
? ? ? ? 設(shè)備B不知道A發(fā)送的是什么页徐。
雖然像繞口令,但是大概明確了這個(gè)問(wèn)題為什么是個(gè)需要解決的問(wèn)題银萍。一個(gè)簡(jiǎn)單的方法是:
? ? ? ? 設(shè)備A發(fā)送給B之后变勇,
? ? ? ? B返回給A他收到的內(nèi)容,
? ? ? ? A根據(jù)收到的內(nèi)容來(lái)判斷是否和發(fā)送的內(nèi)容一致贴唇,
? ? ? ? 如果一致的話搀绣,告訴B這是一致的。
這固然是可以的方法滤蝠,但是他將同樣的內(nèi)容發(fā)送了兩次豌熄,并且進(jìn)行了三次數(shù)據(jù)傳遞。如果原本一次數(shù)據(jù)傳遞發(fā)生錯(cuò)誤的概率是a%物咳,那么由于一次“被確認(rèn)的數(shù)據(jù)傳遞”需要三次普通的數(shù)據(jù)傳遞,這個(gè)“被確認(rèn)的數(shù)據(jù)傳遞”的只要其中一次傳遞發(fā)生錯(cuò)誤蹄皱,就會(huì)整體的錯(cuò)誤览闰,所以不僅數(shù)據(jù)傳輸?shù)男首兊土耍B數(shù)據(jù)傳輸?shù)目煽啃砸沧兊土恕?/p>

另外一種解決方法是巷折,在數(shù)據(jù)傳輸?shù)倪^(guò)程中压鉴,增加一些信息來(lái)校驗(yàn)前面的數(shù)據(jù)中是否發(fā)生了錯(cuò)誤。比如最簡(jiǎn)單的奇偶校驗(yàn)锻拘,對(duì)于每一個(gè)字節(jié)的8個(gè)bit油吭,計(jì)算這個(gè)字節(jié)中1的數(shù)量,奇數(shù)個(gè)1的話就在后面添上一位校驗(yàn)碼1署拟,偶數(shù)個(gè)1的話就在后面添上一位校驗(yàn)碼0婉宰。這樣做的效果是,傳輸?shù)臄?shù)據(jù)增加了12.5%推穷,因?yàn)槊?位數(shù)據(jù)要添加一位校驗(yàn)心包;有50%的概率發(fā)現(xiàn)錯(cuò)誤,因?yàn)楫?dāng)偶數(shù)個(gè)數(shù)據(jù)位發(fā)生錯(cuò)誤時(shí)馒铃,奇偶校驗(yàn)失效(這句話不正確蟹腾,實(shí)際上是奇偶校驗(yàn)碼和數(shù)據(jù)位錯(cuò)誤數(shù)一致時(shí))痕惋。通過(guò)設(shè)計(jì)更好的校驗(yàn)方法,能有更高的糾錯(cuò)能力娃殖。

知道是否有錯(cuò)誤之后值戳,我們有兩個(gè)選擇,一個(gè)是直接丟棄這部分?jǐn)?shù)據(jù)炉爆,另一個(gè)是試圖修復(fù)這部分?jǐn)?shù)據(jù)堕虹。如果只考慮根據(jù)手中的數(shù)據(jù)來(lái)進(jìn)行數(shù)據(jù)糾錯(cuò),那么必須要使用更多的冗余信息來(lái)對(duì)數(shù)據(jù)進(jìn)行糾錯(cuò)叶洞。比如海明碼通過(guò)對(duì)數(shù)據(jù)的多重校驗(yàn)鲫凶,來(lái)找到具體哪一位發(fā)生了錯(cuò)誤,當(dāng)然這會(huì)增加更多的數(shù)據(jù)冗余衩辟,并且只有有限的數(shù)據(jù)修復(fù)能力螟炫。

對(duì)于實(shí)時(shí)數(shù)據(jù)傳輸來(lái)說(shuō),也許重新請(qǐng)求傳輸數(shù)據(jù)是一種更好的方法艺晴。如果是數(shù)據(jù)存儲(chǔ)系統(tǒng)昼钻,就有更多的選擇。比如很多人使用的Ghost鏡像封寞,就是在系統(tǒng)發(fā)生錯(cuò)誤的時(shí)候快速恢復(fù)系統(tǒng)的冗余然评,原理很簡(jiǎn)單,把所有東西都做備份狈究。硬件上可以采用多塊硬盤互相備份的方式碗淌,來(lái)進(jìn)行數(shù)據(jù)的回復(fù),比如RAID系統(tǒng)保障了系統(tǒng)內(nèi)一塊或幾塊硬盤毀壞抖锥,數(shù)據(jù)不會(huì)丟失亿眠,由于采用了封裝的設(shè)計(jì),計(jì)算機(jī)系統(tǒng)對(duì)RAID操作就和對(duì)于一塊硬盤操作的方式一樣磅废。
如果從更大的維度上看纳像,類似于Google這樣的公司在全球各地設(shè)計(jì)了數(shù)據(jù)中心。這就將容錯(cuò)提升到了災(zāi)備的級(jí)別拯勉,即便有一個(gè)數(shù)據(jù)中心因?yàn)榈卣鸹蛘吒鞣N災(zāi)難毀壞了竟趾,其他數(shù)據(jù)中心也會(huì)繼續(xù)工作,用戶的數(shù)據(jù)不會(huì)丟失宫峦。當(dāng)然這樣的冗余成本也是巨大的岔帽。

除了硬件上的容錯(cuò)機(jī)制之外,軟件上也會(huì)有對(duì)于操作的容錯(cuò)斗遏,比如通過(guò)數(shù)據(jù)庫(kù)的日志來(lái)恢復(fù)數(shù)據(jù)庫(kù)的數(shù)據(jù)山卦。此外就是一些軟件設(shè)計(jì)上的容錯(cuò),比如支付寶在支付的時(shí)候需要經(jīng)過(guò)若干步驟,就是為了在錯(cuò)誤的下單后能夠及早發(fā)現(xiàn)和糾正账蓉。這些容錯(cuò)的手段枚碗,或者是通過(guò)冗余的信息使得操作能夠恢復(fù)到某個(gè)時(shí)間點(diǎn),或者是通過(guò)冗余的流程來(lái)糾正錯(cuò)誤的操作铸本。

計(jì)算機(jī)系統(tǒng)設(shè)計(jì)容錯(cuò)性的原則實(shí)際上依然是依賴于分層與封裝肮雨。容錯(cuò)機(jī)制都是為了讓每一層和每一個(gè)模塊確保自己所存儲(chǔ)或者傳遞的信息是正確的,也基本都是發(fā)生在該層或者該模塊箱玷。比如網(wǎng)絡(luò)通信中怨规,這些校驗(yàn)碼都是在物理傳輸層面進(jìn)行的,這樣使用這一層的通信層就可以依賴完全正確的物理傳輸進(jìn)行傳遞锡足;這一層會(huì)進(jìn)行相互對(duì)話來(lái)確保A到B波丰,B到A的通信是暢通的,這樣更高的應(yīng)用層就可以依賴通信層互通的鏈接來(lái)傳遞更多的數(shù)據(jù)舶得。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掰烟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沐批,更是在濱河造成了極大的恐慌纫骑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九孩,死亡現(xiàn)場(chǎng)離奇詭異先馆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)躺彬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門煤墙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宪拥,你說(shuō)我怎么就攤上這事番捂。” “怎么了江解?”我有些...
    開(kāi)封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)徙歼。 經(jīng)常有香客問(wèn)我犁河,道長(zhǎng),這世上最難降的妖魔是什么魄梯? 我笑而不...
    開(kāi)封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任桨螺,我火速辦了婚禮,結(jié)果婚禮上酿秸,老公的妹妹穿的比我還像新娘灭翔。我一直安慰自己,他們只是感情好辣苏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布肝箱。 她就那樣靜靜地躺著哄褒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪煌张。 梳的紋絲不亂的頭發(fā)上呐赡,一...
    開(kāi)封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音骏融,去河邊找鬼链嘀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛档玻,可吹牛的內(nèi)容都是我干的怀泊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼误趴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼霹琼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起冤留,我...
    開(kāi)封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碧囊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后纤怒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糯而,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年泊窘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了熄驼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烘豹,死狀恐怖瓜贾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情携悯,我是刑警寧澤祭芦,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站憔鬼,受9級(jí)特大地震影響龟劲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轴或,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一昌跌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧照雁,春花似錦蚕愤、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悬嗓。三九已至,卻和暖如春砂沛,著一層夾襖步出監(jiān)牢的瞬間烫扼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工碍庵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留映企,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓静浴,卻偏偏與公主長(zhǎng)得像堰氓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苹享,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容