?可靠性” 與 “可用性,可靠性實(shí)驗(yàn)的必要性
相信點(diǎn)開(kāi)這篇文章的讀者,一定或多或少接觸過(guò)“高可靠”“高可用”這些字眼,但是往往或語(yǔ)焉不詳,或羅列術(shù)語(yǔ)(MTBF、MTTR ...),那么我們到底應(yīng)該如何定量描述系統(tǒng)的可靠性和可用性指標(biāo)呢,這些看著很上流的術(shù)語(yǔ)到底意味著什么呢?也許,看完這篇文章,您從此也可以和小伙伴們愉快地拽術(shù)語(yǔ)了!?
1) 軟件過(guò)程(代碼評(píng)審、單元測(cè)試等)4) 開(kāi)發(fā)團(tuán)隊(duì)經(jīng)驗(yàn)5) 可復(fù)用代碼比例(久經(jīng)考驗(yàn)的代碼)比如正在運(yùn)行中的100只硬盤(pán),1年之內(nèi)出了2次故障,則故障率為0.02次/年。上文提到的關(guān)于MTBF和Failure Rate關(guān)系值得細(xì)細(xì)體會(huì),在現(xiàn)實(shí)生活中,硬件廠(chǎng)商也的確更熱衷于在產(chǎn)品上標(biāo)注MTBF(個(gè)人猜測(cè)是因?yàn)镸TBF往往高達(dá)十萬(wàn)小時(shí)甚至百萬(wàn)小時(shí),容易吸引眼球)。Failure Rate伴隨著產(chǎn)品生命周期會(huì)產(chǎn)生變化,因此,只有在前述“浴盆曲線(xiàn)”的平坦底部(通俗點(diǎn)說(shuō)就是產(chǎn)品的“青壯年時(shí)期”)才存在如下關(guān)系:一般來(lái)說(shuō),服務(wù)器的主要部件MTBF,廠(chǎng)商標(biāo)稱(chēng)值都在百萬(wàn)小時(shí)以上。比如:主板、CPU、硬盤(pán)為100wh,內(nèi)存為400wh(4根內(nèi)存約為100wh),從而可以推算出服務(wù)器整體MTBF約25wh(約30年),年故障約3%,也就是說(shuō),100臺(tái)服務(wù)器每年總要壞那么幾臺(tái)。上面的理論計(jì)算看著貌似也沒(méi)啥問(wèn)題,感覺(jué)還挺靠譜。但如果換個(gè)角度想想,總覺(jué)得哪里不太對(duì)勁:MTBF約30年,難道說(shuō)可以期望它服役30年?先看看希捷的工程師如何解釋比如應(yīng)用升級(jí)或者程序CORE掉,往往借助所謂“秒起”來(lái)完成服務(wù)恢復(fù),有些更極端的甚至攔截”段錯(cuò)誤”一類(lèi)信號(hào)。其實(shí),無(wú)論如何秒起,總歸會(huì)有部分用戶(hù)受影響,另外,如果是由于程序錯(cuò)誤導(dǎo)致的意外重啟,誰(shuí)能保證共享內(nèi)存的數(shù)據(jù)仍然處于正確狀態(tài)呢?此外,如果出現(xiàn)機(jī)房搬遷、空調(diào)故障、供電故障等意外,所謂的共享內(nèi)存+秒起也只能干瞪眼。因此,正如上文所說(shuō)的,通過(guò)容災(zāi)備份+路由切換實(shí)現(xiàn)優(yōu)雅無(wú)縫重啟才是好的設(shè)計(jì)。一般來(lái)說(shuō),“可重啟”進(jìn)程具備如下特征:
- 不使用生命期大于進(jìn)程的IPC(共享內(nèi)存、跨進(jìn)程的mutex等)
- 不使用難以重建的IPC(父子進(jìn)程共享FD通信等)
那么又該如何優(yōu)雅重啟呢?一般分為兩種場(chǎng)景:首先將節(jié)點(diǎn)從服務(wù)列表中摘除,等待節(jié)點(diǎn)流量跌零,發(fā)起重啟過(guò)程(更新文件等),確認(rèn)服務(wù)啟動(dòng)正常后,重新將節(jié)點(diǎn)添加至服務(wù)列表,逐步引流進(jìn)行正確性驗(yàn)證(若發(fā)現(xiàn)異常,及時(shí)摘除)。服務(wù)節(jié)點(diǎn)依次分批處理,真正實(shí)現(xiàn)無(wú)縫重啟服務(wù)訪(fǎng)問(wèn)方支持Failover,自動(dòng)切換備用節(jié)點(diǎn),或者通過(guò)Name Service一類(lèi)設(shè)施自動(dòng)摘除故障節(jié)點(diǎn),人工介入恢復(fù)。當(dāng)然,前面一些看法并非“放之四海而皆準(zhǔn)”,在實(shí)際設(shè)計(jì)系統(tǒng)的時(shí)候,還是應(yīng)該因地制宜,選擇最適合當(dāng)時(shí)環(huán)境的方案。?