知識(shí) — 系統(tǒng)架構(gòu)設(shè)計(jì)師)
第9章 軟件可靠性基礎(chǔ)知識(shí) — 系統(tǒng)架構(gòu)設(shè)計(jì)師學(xué)習(xí)筆記 本章是架構(gòu)設(shè)計(jì)師考試的最核心章節(jié)沒(méi)有之一。幾乎每年必考選擇題案例分析題且分值占比極高。可靠性是衡量軟件系統(tǒng)能不能穩(wěn)定運(yùn)行的根本指標(biāo)可靠性設(shè)計(jì)容錯(cuò)、冗余、串并聯(lián)模型是案例分析題的常駐嘉賓。學(xué)完本章你需要能計(jì)算系統(tǒng)可靠性、設(shè)計(jì)容錯(cuò)方案、分析故障樹(shù)、選擇可靠性策略。一、章節(jié)概覽1.1 本章地位與核心目標(biāo)如果把軟件架構(gòu)比作一棟大樓那可靠性就是這棟大樓的抗震等級(jí)。第8章講了什么樣的樓是好樓質(zhì)量屬性第9章則講怎么讓樓不塌可靠性工程。本章是從理論到實(shí)踐的關(guān)鍵落地章節(jié)直接決定了你在案例分析題中能否拿到高分。本章圍繞四個(gè)核心問(wèn)題展開(kāi)什么是可靠性→ 可靠性的定義、核心指標(biāo)MTTF/MTBF/MTTR怎么算可靠性→ 串聯(lián)、并聯(lián)、混聯(lián)系統(tǒng)的可靠性計(jì)算怎么設(shè)計(jì)可靠性→ 容錯(cuò)設(shè)計(jì)、冗余策略、N版本程序、恢復(fù)塊怎么分析故障→ 故障樹(shù)分析FTA、可靠性框圖1.2 知識(shí)思維導(dǎo)圖第9章 軟件可靠性基礎(chǔ)知識(shí) ├── 9.1 可靠性基本概念 │ ├── 可靠性的定義 │ ├── 可靠性的四個(gè)要素 │ ├── 失效Failure、故障Fault、錯(cuò)誤Error │ └── 可靠性與可用性、健壯性的關(guān)系 ├── 9.2 可靠性指標(biāo)與度量 │ ├── 失效率 λ(t) │ ├── 可靠度 R(t) │ ├── MTTF平均無(wú)故障時(shí)間 │ ├── MTTR平均修復(fù)時(shí)間 │ ├── MTBF平均故障間隔時(shí)間 │ └── 可用性 A ├── 9.3 系統(tǒng)可靠性模型★★★ 計(jì)算必考 │ ├── 串聯(lián)模型 │ ├── 并聯(lián)模型 │ ├── 混聯(lián)模型串并聯(lián)組合 │ ├── N模冗余NMR │ └── 表決系統(tǒng)k/n系統(tǒng) ├── 9.4 軟件可靠性設(shè)計(jì)★★★ 案例必考 │ ├── 容錯(cuò)設(shè)計(jì) │ │ ├── 冗余設(shè)計(jì)硬件冗余、軟件冗余、信息冗余、時(shí)間冗余 │ │ ├── N版本程序設(shè)計(jì)NVP │ │ ├── 恢復(fù)塊設(shè)計(jì)RB │ │ └── 防衛(wèi)式程序設(shè)計(jì) │ ├── 故障檢測(cè) │ │ ├── 心跳檢測(cè) │ │ ├── 校驗(yàn)機(jī)制 │ │ └── 異常監(jiān)控 │ └── 故障恢復(fù) │ ├── 重試機(jī)制 │ ├── 回滾機(jī)制 │ └── 降級(jí)策略 ├── 9.5 故障樹(shù)分析FTA │ ├── 故障樹(shù)的基本符號(hào) │ ├── 與門(mén)、或門(mén) │ ├── 最小割集 │ └── 故障樹(shù)定性/定量分析 └── 9.6 可靠性測(cè)試與評(píng)估 ├── 可靠性測(cè)試類型 ├── 可靠性增長(zhǎng)模型 └── 可靠性評(píng)估方法二、核心知識(shí)點(diǎn)精講9.1 可靠性基本概念★ 基礎(chǔ)必背9.1.1 可靠性的定義概念定義軟件系統(tǒng)在規(guī)定條件和規(guī)定時(shí)間內(nèi)無(wú)故障地執(zhí)行指定功能的概率。通俗解釋就像買(mǎi)燈泡——商家說(shuō)正常使用平均能用5000小時(shí)。這里的正常使用就是規(guī)定條件5000小時(shí)就是規(guī)定時(shí)間不壞的概率就是可靠性??煽啃缘乃膫€(gè)關(guān)鍵要素缺一不可要素含義舉例規(guī)定條件使用環(huán)境、負(fù)載、操作方式溫度40°C、并發(fā)1000規(guī)定時(shí)間運(yùn)行的時(shí)間長(zhǎng)度連續(xù)運(yùn)行72小時(shí)規(guī)定功能系統(tǒng)應(yīng)該完成的功能訂單處理、支付結(jié)算概率無(wú)故障的可能性0~1之間R(72h) 0.99??考點(diǎn)可靠性是一個(gè)概率值不是能或不能的絕對(duì)概念。R(t) 越接近1可靠性越高。9.1.2 失效、故障、錯(cuò)誤的區(qū)別通俗解釋用人生病來(lái)類比——概念英文定義類比舉例錯(cuò)誤ErrorError人的操作失誤或代碼編寫(xiě)錯(cuò)誤寫(xiě)錯(cuò)代碼的bug程序員寫(xiě)了死循環(huán)故障FaultFault系統(tǒng)中存在的缺陷/隱患身體里的病毒代碼中存在空指針隱患失效FailureFailure系統(tǒng)不能執(zhí)行規(guī)定功能病倒了系統(tǒng)崩潰/輸出錯(cuò)誤結(jié)果三者關(guān)系鏈錯(cuò)誤Error→ 故障Fault→ 失效Failure 原因 隱患 結(jié)果一句話記憶錯(cuò)誤是因?qū)戝e(cuò)了故障是病有隱患了失效是果系統(tǒng)掛了。??易混淆點(diǎn)有故障不一定立即失效像體內(nèi)有病毒但還沒(méi)發(fā)病但失效一定是由故障引起的。9.1.3 可靠性與相關(guān)概念的關(guān)系概念關(guān)注點(diǎn)核心問(wèn)題類比可靠性Reliability持續(xù)運(yùn)行不中斷能跑多久不出問(wèn)題不生病可用性Availability需要時(shí)能用需要時(shí)能不能用病了能快速好健壯性Robustness異常情況下不崩潰遇到意外扛不扛得住抵抗力強(qiáng)不強(qiáng)安全性Safety故障時(shí)不造成危害出了問(wèn)題傷不傷人摔倒了會(huì)不會(huì)骨折關(guān)鍵區(qū)別可靠性 vs 可用性可靠性關(guān)注不壞可用性關(guān)注壞了能快速修好可靠性 vs 健壯性可靠性關(guān)注正常情況穩(wěn)定運(yùn)行健壯性關(guān)注異常情況不崩潰通俗理解可靠性高 從來(lái)不感冒可用性高 感冒了吃顆藥第二天就好健壯性高 淋了雨也不會(huì)感冒9.2 可靠性指標(biāo)與度量★★★ 計(jì)算必考9.2.1 核心指標(biāo)一覽指標(biāo)英文定義公式越大/越小越好失效率λ(t)單位時(shí)間內(nèi)發(fā)生故障的概率λ 故障次數(shù)/總運(yùn)行時(shí)間越小越好可靠度R(t)在時(shí)間t內(nèi)無(wú)故障的概率R(t) e^(-λt)越大越好MTTFMean Time To Failure平均無(wú)故障時(shí)間MTTF 1/λ越大越好MTTRMean Time To Repair平均修復(fù)時(shí)間MTTR 總修復(fù)時(shí)間/故障次數(shù)越小越好MTBFMean Time Between Failures平均故障間隔時(shí)間MTBF MTTF MTTR越大越好可用性A (Availability)系統(tǒng)可用時(shí)間的比例A MTTF/(MTTFMTTR)越大越好9.2.2 指標(biāo)詳解與計(jì)算1失效率 λ(t)通俗解釋就像燈泡的壞燈率——1000個(gè)燈泡跑了100小時(shí)壞了5個(gè)失效率 5/(1000×100) 0.00005/小時(shí)。失效率的三個(gè)階段浴盆曲線失效率 λ(t) ↑ │ ╲ ╱ │ ╲ ╱ ← 耗損期老化失效率上升 │ ╲ ╱ │  ̄ ̄ ̄ ̄ ← 偶然期穩(wěn)定失效率恒定 │ ╱ │ ╱ ← 早期故障期磨合失效率下降 │ ╱ └──────────────→ 時(shí)間 t階段特點(diǎn)原因應(yīng)對(duì)策略早期故障期失效率高逐漸下降設(shè)計(jì)/制造缺陷老化測(cè)試、燒機(jī)測(cè)試偶然故障期失效率低且恒定隨機(jī)因素冗余設(shè)計(jì)、容錯(cuò)機(jī)制耗損故障期失效率急劇上升老化磨損預(yù)防性維護(hù)、定期更換記憶技巧浴盆曲線就像U形——早高、中穩(wěn)、晚升像一個(gè)浴缸的橫截面。2可靠度 R(t)核心公式R(t)e?λtR(t) e^{-\lambda t}R(t)e?λt通俗解釋如果失效率 λ 0.01/小時(shí)運(yùn)行10小時(shí)后的可靠度 e^(-0.01×10) e^(-0.1) ≈ 0.905即有90.5%的概率不出故障。3MTTF、MTTR、MTBF 的關(guān)系|←—— MTTF ——→|←— MTTR —→|←—— MTTF ——→|←— MTTR —→| | 正常運(yùn)行 | 故障修復(fù) | 正常運(yùn)行 | 故障修復(fù) | |←———————— MTBF ——————————→|關(guān)鍵公式MTBF MTTF MTTR可用性 A MTTF / (MTTF MTTR) MTTF / MTBF??高頻考點(diǎn)幾乎每年必考計(jì)算串行系統(tǒng)MTTF 1/(λ? λ? … λ?)并聯(lián)系統(tǒng)兩臺(tái)MTTF 1/λ? 1/λ? 1/(λ?λ?)不要求記理解原理即可4可用性等級(jí)速查等級(jí)可用性年停機(jī)時(shí)間典型系統(tǒng)99%99%3.65天普通內(nèi)部系統(tǒng)99.9%99.9%8.76小時(shí)企業(yè)級(jí)應(yīng)用99.99%99.99%52.6分鐘金融交易系統(tǒng)99.999%99.999%5.26分鐘電信核心系統(tǒng)9.3 系統(tǒng)可靠性模型★★★ 計(jì)算核心這是本章最重要的計(jì)算部分幾乎每年必考9.3.1 串聯(lián)系統(tǒng)概念定義系統(tǒng)中所有組件必須全部正常工作系統(tǒng)才能工作。任何一個(gè)組件故障系統(tǒng)就故障。通俗解釋就像一串鞭炮——任何一個(gè)響了壞了整串就斷了。又像老式圣誕燈串一個(gè)燈泡壞了全滅。可靠性計(jì)算R_串聯(lián) R? × R? × R? × ... × R?特點(diǎn)串聯(lián)組件越多系統(tǒng)可靠性越低系統(tǒng)的可靠性低于任何一個(gè)組件的可靠性“最弱環(huán)節(jié)決定整體”——木桶效應(yīng)舉例3個(gè)組件串聯(lián)可靠度分別為0.99、0.98、0.97R 0.99 × 0.98 × 0.97 0.9411→ 系統(tǒng)可靠性只有94.11%比最低的0.97還低9.3.2 并聯(lián)系統(tǒng)概念定義系統(tǒng)中只要有一個(gè)組件正常工作系統(tǒng)就能工作。所有組件都故障系統(tǒng)才故障。通俗解釋就像多個(gè)保安守門(mén)——只要有一個(gè)保安醒著正常門(mén)就有人守。所有保安都睡著了才出事??煽啃杂?jì)算R_并聯(lián) 1 - (1-R?) × (1-R?) × (1-R?) × ... × (1-R?)特點(diǎn)并聯(lián)組件越多系統(tǒng)可靠性越高系統(tǒng)的可靠性高于任何一個(gè)組件的可靠性“人多力量大”——冗余帶來(lái)可靠性提升舉例2個(gè)組件并聯(lián)可靠度分別為0.9、0.8R 1 - (1-0.9) × (1-0.8) 1 - 0.1 × 0.2 1 - 0.02 0.98→ 系統(tǒng)可靠性98%比任何一個(gè)組件都高9.3.3 混聯(lián)系統(tǒng)串并聯(lián)組合概念定義系統(tǒng)中既有串聯(lián)部分又有并聯(lián)部分的組合。通俗解釋就像電路——有的燈串聯(lián)有的燈并聯(lián)組合在一起。計(jì)算方法先算并聯(lián)再算串聯(lián)分步化簡(jiǎn)典型例題結(jié)構(gòu)┌── R? ──┐ ──┤ ├── R? ── R? ── └── R? ──┘ 分析R?和R?并聯(lián)再與R?、R?、R?串聯(lián) 步驟 ① 先算并聯(lián)部分R?? 1 - (1-R?)(1-R?) ② 再算串聯(lián)R R? × R?? × R? × R???計(jì)算口訣“先并后串逐步化簡(jiǎn)”——先把并聯(lián)部分合成一個(gè)等效組件再按串聯(lián)計(jì)算。9.3.4 N模冗余系統(tǒng)NMR概念定義N個(gè)模塊同時(shí)運(yùn)行通過(guò)投票機(jī)制選出多數(shù)一致的結(jié)果作為輸出。通俗解釋就像三人裁判——3個(gè)裁判同時(shí)打分2個(gè)說(shuō)好就算好1個(gè)說(shuō)好不算。典型形式三模冗余TMR3個(gè)模塊2個(gè)一致即正確最常用五模冗余5MR5個(gè)模塊3個(gè)一致即正確可靠性計(jì)算以TMR為例3個(gè)相同模塊R_TMR 3R2 - 2R3 當(dāng)各模塊可靠度相同時(shí)理解TMR中只要2個(gè)或以上模塊正確系統(tǒng)就正確。3個(gè)都對(duì)C(3,3)×R3 R32個(gè)對(duì)1個(gè)錯(cuò)C(3,2)×R2×(1-R) 3R2(1-R)合計(jì)R3 3R2(1-R) 3R2 - 2R39.3.5 表決系統(tǒng)k/n系統(tǒng)概念定義n個(gè)模塊中至少k個(gè)正常工作系統(tǒng)才正常。通俗解釋就像班級(jí)投票——全班50人n50至少26人同意k26才能通過(guò)決議??煽啃杂?jì)算各模塊可靠度相同為R時(shí)R_系統(tǒng) Σ C(n,i) × R? × (1-R)^(n-i) i從k到n求和??考點(diǎn)串聯(lián) n/n表決全部都要工作并聯(lián) 1/n表決至少1個(gè)工作??煽啃阅P蛯?duì)比總結(jié)表模型條件計(jì)算公式特點(diǎn)生活類比串聯(lián)全部正常才工作R R?×R?×…×R?越多越不可靠一串鞭炮并聯(lián)至少1個(gè)正常就工作R 1-(1-R?)(1-R?)…(1-R?)越多越可靠多個(gè)保安混聯(lián)組合結(jié)構(gòu)先并后串逐步化簡(jiǎn)需要分析結(jié)構(gòu)復(fù)雜電路N模冗余多數(shù)表決3R2-2R3TMR容錯(cuò)性強(qiáng)三人裁判k/n表決至少k個(gè)正常二項(xiàng)式求和通用模型投票決議9.4 軟件可靠性設(shè)計(jì)★★★ 案例核心9.4.1 容錯(cuò)設(shè)計(jì)概念定義系統(tǒng)在部分組件發(fā)生故障時(shí)仍能繼續(xù)正常運(yùn)行或安全降級(jí)的能力。通俗解釋就像飛機(jī)有雙引擎——一個(gè)引擎壞了另一個(gè)還能飛不會(huì)墜機(jī)。四種冗余策略對(duì)比冗余類型含義實(shí)現(xiàn)方式優(yōu)點(diǎn)缺點(diǎn)類比硬件冗余增加備用硬件雙機(jī)熱備、RAID磁盤(pán)物理層面保障成本高備胎輪胎軟件冗余多版本軟件并行N版本程序設(shè)計(jì)、恢復(fù)塊避免設(shè)計(jì)缺陷開(kāi)發(fā)成本翻倍多人獨(dú)立翻譯同一本書(shū)信息冗余增加校驗(yàn)信息校驗(yàn)碼、CRC、奇偶校驗(yàn)檢測(cè)數(shù)據(jù)錯(cuò)誤占用額外存儲(chǔ)/帶寬快遞包裹加防震泡沫時(shí)間冗余重復(fù)執(zhí)行操作重試機(jī)制、定時(shí)重發(fā)應(yīng)對(duì)瞬時(shí)故障增加響應(yīng)時(shí)間打電話斷了重新打N版本程序設(shè)計(jì)NVP—— 軟件冗余的核心方法概念定義由N個(gè)獨(dú)立團(tuán)隊(duì)用不同的方法對(duì)同一需求分別編程實(shí)現(xiàn)運(yùn)行時(shí)通過(guò)投票機(jī)制決定最終輸出。通俗解釋就像高考作文閱卷——3位老師獨(dú)立打分2位以上給的分一致才算最終分?jǐn)?shù)。避免一個(gè)老師看走眼。工作流程┌── 版本1 ──→ 結(jié)果1 ──┐ 輸入 ──→ 需求規(guī)格 ──┼── 版本2 ──→ 結(jié)果2 ──┼──→ 投票器 ──→ 最終輸出 └── 版本3 ──→ 結(jié)果3 ──┘關(guān)鍵要點(diǎn)N個(gè)版本必須獨(dú)立開(kāi)發(fā)不同團(tuán)隊(duì)、不同方法目的是消除設(shè)計(jì)缺陷導(dǎo)致的共性錯(cuò)誤投票器負(fù)責(zé)多數(shù)表決所有版本同時(shí)運(yùn)行??考點(diǎn)NVP的所有版本是同時(shí)運(yùn)行的不是輪流運(yùn)行。恢復(fù)塊設(shè)計(jì)RB—— 另一種軟件冗余概念定義由一個(gè)團(tuán)隊(duì)編寫(xiě)多個(gè)版本運(yùn)行時(shí)按順序執(zhí)行每個(gè)版本執(zhí)行后由驗(yàn)收測(cè)試判斷結(jié)果是否正確不正確則切換到下一個(gè)版本。通俗解釋就像考試做題——先做第一種解法檢查發(fā)現(xiàn)不對(duì)驗(yàn)收測(cè)試再換第二種解法再不對(duì)換第三種。工作流程輸入 → 版本1 → 驗(yàn)收測(cè)試 → 通過(guò)→ 是 → 輸出 ↓ 否 版本2 → 驗(yàn)收測(cè)試 → 通過(guò)→ 是 → 輸出 ↓ 否 版本3 → ...關(guān)鍵要點(diǎn)多個(gè)版本由同一團(tuán)隊(duì)開(kāi)發(fā)不同于NVP版本依次執(zhí)行不同于NVP的同時(shí)運(yùn)行每個(gè)版本后必須有驗(yàn)收測(cè)試需要能回滾狀態(tài)恢復(fù)到現(xiàn)場(chǎng)NVP vs RB 對(duì)比高頻考點(diǎn)對(duì)比維度N版本程序設(shè)計(jì)NVP恢復(fù)塊設(shè)計(jì)RB開(kāi)發(fā)團(tuán)隊(duì)N個(gè)獨(dú)立團(tuán)隊(duì)同一團(tuán)隊(duì)運(yùn)行方式同時(shí)運(yùn)行依次運(yùn)行決策機(jī)制投票表決驗(yàn)收測(cè)試版本要求不同方法/算法不同實(shí)現(xiàn)即可狀態(tài)恢復(fù)不需要需要回滾開(kāi)發(fā)成本高多人同時(shí)開(kāi)發(fā)較低同一團(tuán)隊(duì)運(yùn)行開(kāi)銷高同時(shí)運(yùn)行N個(gè)較低只運(yùn)行到通過(guò)為止適用場(chǎng)景安全性要求極高的系統(tǒng)一般容錯(cuò)系統(tǒng)一句話記憶NVP 多人同時(shí)做投票選答案像高考閱卷RB 一個(gè)人輪流做做對(duì)就交卷像考試換解法防衛(wèi)式程序設(shè)計(jì)概念定義在程序中對(duì)所有輸入進(jìn)行合法性檢查對(duì)異常情況做出預(yù)防性處理即使部分功能失效也不影響整體。通俗解釋就像電梯——即使有人按了不存在的樓層非法輸入電梯不會(huì)崩潰而是忽略或提示錯(cuò)誤。核心思想不信任任何外部輸入對(duì)所有輸入做校驗(yàn)異常情況有兜底處理失敗時(shí)優(yōu)雅降級(jí)不崩潰9.4.2 故障檢測(cè)機(jī)制檢測(cè)方式原理舉例適用場(chǎng)景心跳檢測(cè)定時(shí)發(fā)送我還活著信號(hào)主備服務(wù)器心跳線服務(wù)器/進(jìn)程存活檢測(cè)校驗(yàn)機(jī)制對(duì)數(shù)據(jù)做完整性校驗(yàn)CRC校驗(yàn)、MD5校驗(yàn)數(shù)據(jù)傳輸/存儲(chǔ)完整性異常監(jiān)控監(jiān)控系統(tǒng)指標(biāo)超閾值報(bào)警CPU90%報(bào)警系統(tǒng)運(yùn)行狀態(tài)監(jiān)控超時(shí)檢測(cè)等待響應(yīng)超時(shí)視為故障接口調(diào)用超時(shí)3秒網(wǎng)絡(luò)通信/服務(wù)調(diào)用9.4.3 故障恢復(fù)策略恢復(fù)策略原理舉例適用場(chǎng)景重試失敗后重新執(zhí)行網(wǎng)絡(luò)請(qǐng)求失敗重試3次瞬時(shí)故障回滾恢復(fù)到操作前的狀態(tài)數(shù)據(jù)庫(kù)事務(wù)回滾事務(wù)性操作降級(jí)關(guān)閉非核心功能保核心雙11關(guān)閉評(píng)論功能高并發(fā)/資源不足熔斷檢測(cè)到持續(xù)故障后斷開(kāi)下游服務(wù)不可用時(shí)熔斷微服務(wù)調(diào)用鏈切換切換到備用組件主備數(shù)據(jù)庫(kù)切換主備架構(gòu)記憶技巧重試 電話沒(méi)接再打一次回滾 寫(xiě)錯(cuò)字了用橡皮擦掉降級(jí) 錢(qián)不夠了先保吃飯不買(mǎi)衣服熔斷 保險(xiǎn)絲燒斷了保護(hù)整個(gè)電路切換 主力受傷替補(bǔ)上場(chǎng)9.5 故障樹(shù)分析FTA★★ ??几拍疃x從頂層故障事件出發(fā)逐層向下分析原因用邏輯門(mén)與門(mén)、或門(mén)連接形成樹(shù)狀圖。通俗解釋就像醫(yī)生診斷——“病人發(fā)燒了”頂層事件為什么“可能是感染或可能是免疫反應(yīng)”或門(mén)再往下分析感染的原因…基本符號(hào)符號(hào)名稱含義圖形─ ─ ─與門(mén)AND所有輸入事件都發(fā)生輸出才發(fā)生半圓直線∨或門(mén)OR任一輸入事件發(fā)生輸出就發(fā)生弧線○基本事件最底層的故障原因圓形▽中間事件可繼續(xù)分解的故障事件矩形△頂事件分析的頂層故障矩形最上方與門(mén) vs 或門(mén)對(duì)比與門(mén)AND或門(mén)OR邏輯A且B → 故障A或B → 故障含義所有條件都滿足才故障任一條件滿足就故障可靠性提高可靠性需要多個(gè)同時(shí)壞降低可靠性一個(gè)壞就完概率計(jì)算P P? × P?P 1-(1-P?)(1-P?)類比兩把鎖都打開(kāi)才能進(jìn)門(mén)任何一把鎖打開(kāi)就能進(jìn)門(mén)記憶技巧與門(mén) 串聯(lián) 都?jí)牟艍? 可靠性高像兩道門(mén)鎖或門(mén) 并聯(lián) 一個(gè)壞就壞 可靠性低像多個(gè)隱患任一觸發(fā)最小割集概念定義導(dǎo)致頂事件發(fā)生的最少基本事件組合。通俗解釋找出最少需要壞幾個(gè)零件系統(tǒng)就會(huì)出問(wèn)題的組合。舉例系統(tǒng)故障頂事件 / \ 或門(mén) 或門(mén) / \ / \ 事件A 與門(mén) 事件D 事件E / \ 事件B 事件C 最小割集{A}, {B,C}, {D}, {E} 含義A單獨(dú)壞就故障、B和C同時(shí)壞才故障、D單獨(dú)壞就故障、E單獨(dú)壞就故障??考點(diǎn)最小割集越少、包含的事件越多系統(tǒng)越可靠。單點(diǎn)故障只有一個(gè)事件的割集是最危險(xiǎn)的9.6 可靠性測(cè)試與評(píng)估可靠性測(cè)試類型測(cè)試類型目的方法關(guān)注點(diǎn)可靠性驗(yàn)證測(cè)試驗(yàn)證是否達(dá)到可靠性指標(biāo)在模擬環(huán)境下長(zhǎng)時(shí)間運(yùn)行是否達(dá)標(biāo)可靠性增長(zhǎng)測(cè)試發(fā)現(xiàn)缺陷并修復(fù)提升可靠性測(cè)試→修復(fù)→測(cè)試循環(huán)可靠性是否在提升壓力測(cè)試在極限條件下測(cè)試超負(fù)載、大數(shù)據(jù)量運(yùn)行系統(tǒng)極限表現(xiàn)故障注入測(cè)試模擬故障測(cè)試容錯(cuò)能力人為注入故障容錯(cuò)和恢復(fù)能力可靠性增長(zhǎng)模型通俗解釋就像打怪升級(jí)——每發(fā)現(xiàn)一個(gè)bug并修復(fù)可靠性就提升一點(diǎn)??煽啃?↑ │ ╱──── 目標(biāo)可靠性 │ ╱ │ ╱ │ ╱ ← 可靠性增長(zhǎng)曲線 │ ╱ │╱ └──────────────→ 測(cè)試時(shí)間三、重點(diǎn)歸納 速記口訣3.1 必背要點(diǎn)清單編號(hào)要點(diǎn)重要度1可靠性的定義與四要素★★★★2失效-故障-錯(cuò)誤的因果鏈★★★★3MTTF、MTTR、MTBF的定義與關(guān)系★★★★★4可用性計(jì)算公式 AMTTF/(MTTFMTTR)★★★★★5串聯(lián)系統(tǒng)可靠性計(jì)算 RR?×R?×…×R?★★★★★6并聯(lián)系統(tǒng)可靠性計(jì)算 R1-(1-R?)(1-R?)…★★★★★7混聯(lián)系統(tǒng)計(jì)算方法先并后串★★★★★8NVP與RB的區(qū)別★★★★★9四種冗余策略硬件/軟件/信息/時(shí)間★★★★10故障樹(shù)中與門(mén)、或門(mén)的含義★★★★11最小割集的概念★★★12浴盆曲線的三個(gè)階段★★★★3.2 速記口訣可靠性三兄弟因果鏈“錯(cuò)→障→失”錯(cuò)Error→障Fault→失Failure寫(xiě)錯(cuò)了 → 有故障了 →失敗了可靠性指標(biāo)“失可靠MT三兄弟”失效率λ、可靠度R(t)MTTF無(wú)故障時(shí)間、MTTR修復(fù)時(shí)間、MTBF間隔時(shí)間MTBF MTTF MTTR串聯(lián) vs 并聯(lián)“串聯(lián)相乘越來(lái)越小并聯(lián)互補(bǔ)越來(lái)越大”串聯(lián)R R?×R? → 越多越不可靠一串鞭炮并聯(lián)R 1-(1-R?)(1-R?) → 越多越可靠多個(gè)保安NVP vs RB“NVP多人同時(shí)投票選RB一人輪流做對(duì)交”NVP 高考閱卷多人獨(dú)立同時(shí)運(yùn)行投票RB 考試換解法同一人依次運(yùn)行驗(yàn)收測(cè)試四種冗余“硬軟信時(shí)”硬件冗余、軟件冗余、信息冗余、時(shí)間冗余聯(lián)想“硬軟信時(shí)”→ 硬軟件信息時(shí)代故障樹(shù)“與門(mén)串聯(lián)都?jí)牟艍幕蜷T(mén)并聯(lián)一壞就壞”浴盆曲線“早高中低晚又高中間穩(wěn)定最可靠”四、歷年真題 考點(diǎn)映射4.1 近5年真題匯總年份題型分值考點(diǎn)內(nèi)容2024選擇題2分串聯(lián)/并聯(lián)系統(tǒng)可靠性計(jì)算2024選擇題2分NVP與RB的區(qū)別2024案例分析25分給出系統(tǒng)架構(gòu)要求設(shè)計(jì)容錯(cuò)方案計(jì)算系統(tǒng)可靠性2023選擇題2分可用性計(jì)算MTTF/MTTR2023選擇題2分浴盆曲線三個(gè)階段2023案例分析25分故障樹(shù)分析求最小割集提出可靠性改進(jìn)方案2022選擇題2分串聯(lián)系統(tǒng)可靠性計(jì)算2022選擇題2分冗余策略類型判斷2022案例分析25分混聯(lián)系統(tǒng)可靠性計(jì)算 容錯(cuò)設(shè)計(jì)分析2021選擇題2分MTBF與MTTF的關(guān)系2021選擇題2分失效-故障-錯(cuò)誤的關(guān)系2021案例分析25分給出系統(tǒng)可靠性需求設(shè)計(jì)冗余方案并計(jì)算2020選擇題2分并聯(lián)系統(tǒng)可靠性計(jì)算2020選擇題2分N版本程序設(shè)計(jì)的特點(diǎn)2020案例分析25分故障樹(shù)分析 可靠性分配2019選擇題2分可用性等級(jí)2019選擇題2分恢復(fù)塊設(shè)計(jì)的特點(diǎn)2019案例分析25分綜合題可靠性計(jì)算 容錯(cuò)架構(gòu)設(shè)計(jì) 故障分析4.2 出題規(guī)律分析規(guī)律說(shuō)明必考計(jì)算題每年至少1道可靠性計(jì)算題串聯(lián)/并聯(lián)/混聯(lián)NVP vs RB 輪流出幾乎每年都考這兩個(gè)的區(qū)別選擇題或案例填空故障樹(shù)分析高頻案例分析中常考畫(huà)故障樹(shù)、求最小割集可用性計(jì)算必考MTTF/MTTR/MTBF的計(jì)算幾乎年年考容錯(cuò)設(shè)計(jì)是案例核心案例分析題常要求設(shè)計(jì)容錯(cuò)方案并說(shuō)明理由浴盆曲線常出選擇三個(gè)階段的特點(diǎn)和應(yīng)對(duì)策略五、典型例題 解析例題1選擇題題目某系統(tǒng)由3個(gè)組件組成組件A和B并聯(lián)后再與組件C串聯(lián)。已知A、B、C的可靠度分別為0.9、0.8、0.95則該系統(tǒng)的可靠度為 。A. 0.684B. 0.931C. 0.722D. 0.855答案B解析第一步計(jì)算A和B并聯(lián)的可靠度R_AB 1 - (1-0.9) × (1-0.8) 1 - 0.1 × 0.2 1 - 0.02 0.98第二步計(jì)算與C串聯(lián)的可靠度R R_AB × R_C 0.98 × 0.95 0.931答案選B例題2選擇題題目某系統(tǒng)MTTF為498小時(shí)MTTR為2小時(shí)則系統(tǒng)可用性約為 MTBF為 。A. 99.6%500小時(shí)B. 99.6%498小時(shí)C. 99.0%500小時(shí)D. 99.0%498小時(shí)答案A解析MTBF MTTF MTTR 498 2 500小時(shí)可用性 A MTTF / (MTTF MTTR) 498 / 500 0.996 99.6%答案選A例題3案例分析題題目某金融交易系統(tǒng)需要設(shè)計(jì)高可用架構(gòu)系統(tǒng)可靠性要求達(dá)到99.99%?,F(xiàn)有以下組件Web服務(wù)器可靠度0.99應(yīng)用服務(wù)器可靠度0.98數(shù)據(jù)庫(kù)服務(wù)器可靠度0.97問(wèn)題如果三個(gè)組件串聯(lián)系統(tǒng)可靠度是多少是否滿足要求如果不滿足請(qǐng)?jiān)O(shè)計(jì)一個(gè)冗余方案使其滿足99.99%的要求。請(qǐng)說(shuō)明NVP和RB在該系統(tǒng)中如何應(yīng)用并分析哪種更適合。參考答案問(wèn)題1R_串聯(lián) 0.99 × 0.98 × 0.97 0.9411 94.11%94.11% 遠(yuǎn)低于 99.99% 的要求不滿足。問(wèn)題2對(duì)每個(gè)組件增加一個(gè)熱備并聯(lián)形成雙機(jī)熱備方案Web服務(wù)器R_W 1 - (1-0.99)2 1 - 0.0001 0.9999 應(yīng)用服務(wù)器R_A 1 - (1-0.98)2 1 - 0.0004 0.9996 數(shù)據(jù)庫(kù)服務(wù)器R_D 1 - (1-0.97)2 1 - 0.0009 0.9991串聯(lián)后R 0.9999 × 0.9996 × 0.9991 ≈ 0.9986 99.86%仍不滿足99.99%。需要對(duì)數(shù)據(jù)庫(kù)最薄弱環(huán)節(jié)增加更多冗余數(shù)據(jù)庫(kù)采用3節(jié)點(diǎn)1主2從 R_D 1 - (1-0.97)3 1 - 0.000027 0.999973 R 0.9999 × 0.9996 × 0.999973 ≈ 0.9995 ≈ 99.95%繼續(xù)優(yōu)化應(yīng)用服務(wù)器也采用3節(jié)點(diǎn)R_A 1 - (1-0.98)3 1 - 0.000008 0.999992 R 0.9999 × 0.999992 × 0.999973 ≈ 0.9999 ≈ 99.99% ?問(wèn)題3對(duì)比維度NVP方案RB方案開(kāi)發(fā)方式3個(gè)獨(dú)立團(tuán)隊(duì)分別開(kāi)發(fā)支付模塊同一團(tuán)隊(duì)開(kāi)發(fā)3個(gè)版本運(yùn)行方式3個(gè)版本同時(shí)運(yùn)行投票決定依次執(zhí)行驗(yàn)收通過(guò)后輸出適用性更適合本系統(tǒng)需要狀態(tài)回滾復(fù)雜度高推薦NVP理由金融系統(tǒng)對(duì)正確性要求極高NVP的投票機(jī)制能發(fā)現(xiàn)設(shè)計(jì)缺陷金融交易涉及資金安全需要多團(tuán)隊(duì)獨(dú)立實(shí)現(xiàn)以降低共性錯(cuò)誤風(fēng)險(xiǎn)雖然RB開(kāi)發(fā)成本較低但金融交易的狀態(tài)回滾復(fù)雜RB實(shí)現(xiàn)難度大六、易錯(cuò)點(diǎn) 避坑指南6.1 常見(jiàn)錯(cuò)誤一覽錯(cuò)誤正確理解糾正建議? “串聯(lián)越多越可靠”串聯(lián)越多越不可靠并聯(lián)越多才越可靠記住串聯(lián)鞭炮并聯(lián)保安? “MTBF MTTF”MTBF MTTF MTTRMTBF是間隔時(shí)間包含修復(fù)時(shí)間? “可用性 MTTR/MTBF”可用性 MTTF/MTBF分子是無(wú)故障時(shí)間好的時(shí)間? “NVP和RB是一樣的”NVP多人同時(shí)投票RB一人輪流驗(yàn)收口訣NVP高考閱卷RB換解法? “故障樹(shù)中或門(mén)提高可靠性”或門(mén)意味著任一事件就故障降低可靠性與門(mén)都?jí)牟艍陌踩蜷T(mén)一壞就壞危險(xiǎn)? “有故障就一定會(huì)失效”有故障不一定失效像攜帶病毒但未發(fā)病錯(cuò)誤→故障→失效是因果鏈不是等價(jià)? “并聯(lián)計(jì)算是R?×R?”并聯(lián)是 1-(1-R?)(1-R?)串聯(lián)才是R?×R?先分清串并聯(lián)再選公式? “可靠性高可用性高”可靠性高≠可用性高可能不壞但修得慢可靠不生病可用病了快好6.2 計(jì)算題答題模板可靠性計(jì)算題標(biāo)準(zhǔn)步驟第一步畫(huà)出系統(tǒng)可靠性框圖 第二步識(shí)別串并聯(lián)關(guān)系 第三步先算并聯(lián)部分 第四步再算串聯(lián)部分 第五步得出最終結(jié)果與要求對(duì)比案例分析題答題模板1. 分析可靠性需求目標(biāo)值是多少 2. 計(jì)算當(dāng)前可靠性串聯(lián)/并聯(lián)公式 3. 設(shè)計(jì)冗余方案對(duì)薄弱環(huán)節(jié)加并聯(lián) 4. 重新計(jì)算驗(yàn)證是否達(dá)標(biāo) 5. 說(shuō)明選擇的容錯(cuò)策略及理由本章小結(jié)本章的核心就是四件事——理解可靠性概念定義指標(biāo)、會(huì)算可靠性串聯(lián)/并聯(lián)/混聯(lián)、會(huì)設(shè)計(jì)容錯(cuò)方案NVP/RB/冗余策略、會(huì)分析故障故障樹(shù)最小割集。其中計(jì)算題和NVP vs RB是每年必考必須熟練掌握本文基于系統(tǒng)架構(gòu)設(shè)計(jì)師考試大綱編寫(xiě)適合備考復(fù)習(xí)使用。如有問(wèn)題歡迎評(píng)論區(qū)交流討論