設(shè)計(jì)一個(gè)高可用性的互聯(lián)網(wǎng)軟件系統(tǒng)需要考慮哪些因素

導(dǎo)語(yǔ):IT領(lǐng)域的5個(gè)9是啥?

寫(xiě)下這個(gè)題目時(shí)感覺(jué)是給自己挖了一個(gè)大坑晌端,就像是在嘗試回答前段時(shí)間在知乎上很火的一個(gè)討論“為什么很多看起來(lái)不是很復(fù)雜的網(wǎng)站捅暴,比如Facebook需要大量頂尖高手來(lái)開(kāi)發(fā)?”咧纠。人們可能已經(jīng)習(xí)慣于生活中的很多事情蓬痒,比如你隨手拿起手機(jī)就可以打一個(gè)電話出去,打開(kāi)一個(gè)APP就可以買(mǎi)一件心儀的商品漆羔,但是你可曾想過(guò)這背后對(duì)應(yīng)的電信領(lǐng)域/IT領(lǐng)域的5個(gè)9的要求梧奢?那么問(wèn)題來(lái)了什么是5個(gè)9?通俗的講就是一年中有99.999%的時(shí)間服務(wù)都是必須可用的演痒,也就是意味這一年中只允許最多只有5.26分鐘服務(wù)是不可用的流炕,這中間還包括系統(tǒng)升級(jí)的時(shí)間逢勾。在飛機(jī)系統(tǒng)領(lǐng)域這個(gè)要求則達(dá)到了9個(gè)9员帮,這也是為什么飛機(jī)依然是世界上最安全的交通工具亥贸。

1、軟件系統(tǒng)的非功能性需求

那么設(shè)計(jì)一個(gè)這樣高可靠高可用的互聯(lián)網(wǎng)軟件系統(tǒng)到底需要哪些因素呢讯嫂?本文不會(huì)討論互聯(lián)網(wǎng)世界紛繁復(fù)雜的功能性需求比如電商的購(gòu)物車(chē)如何設(shè)計(jì)蹦锋,P2P行業(yè)的買(mǎi)賣(mài)標(biāo)如何實(shí)現(xiàn);而是試圖探討在這些看起來(lái)完全不同的系統(tǒng)背后所需要的通用的需求端姚,IT領(lǐng)域有個(gè)專(zhuān)有的名詞來(lái)概括這些需求叫做非功能性需求:Non-functional Requirements. 什么是非功能性需求呢晕粪,維基上的定義如下是指依一些條件判斷系統(tǒng)運(yùn)作情形或其特性挤悉,而不是針對(duì)系統(tǒng)特定行為的需求渐裸。非功能性需求是一個(gè)系統(tǒng)能夠達(dá)到的高質(zhì)量,高穩(wěn)定装悲,高可靠昏鹃,高性能,高可用的程度诀诊。

非功能性需求相對(duì)于功能性需求不為大多數(shù)人知道洞渤,但是并不代表不重要。按筆者理解它也屬于用戶體驗(yàn)的一部分属瓣;試想你打開(kāi)一個(gè)電商網(wǎng)站载迄,數(shù)據(jù)加載花了1分鐘你還有興趣在這家網(wǎng)站買(mǎi)東西么?那么衡量這個(gè)非功能性需求的指標(biāo)就是系統(tǒng)響應(yīng)時(shí)間-Reponse Time 抡蛙。再或者一個(gè)在線旅游網(wǎng)站連續(xù)幾個(gè)小時(shí)網(wǎng)站打不開(kāi)护昧,損失的不只是幾個(gè)小時(shí)的訂單,還有用戶的信任度和對(duì)品牌的負(fù)面影響粗截,衡量這個(gè)非功能性需求的指標(biāo)就是系統(tǒng)的高可用性-High Availability惋耙。

非功能性需求聽(tīng)起來(lái)是幾個(gè)簡(jiǎn)單的指標(biāo)和衡量標(biāo)準(zhǔn),可是為了達(dá)到一定的性能指標(biāo)后面所涉及到的技術(shù)和系統(tǒng)規(guī)模都是常人無(wú)法想像的,后面凝聚著無(wú)數(shù)工程師團(tuán)隊(duì)的智慧和勞動(dòng)绽榛。下面的章節(jié)筆者會(huì)簡(jiǎn)單介紹一下這幾個(gè)非功能性需求指標(biāo)和它們背后對(duì)應(yīng)的一些可能的技術(shù)方案湿酸。

2、非功能性需求的幾個(gè)重要指標(biāo)

2.1高可用性-High Availability

高可用性是一個(gè)系統(tǒng)的重要特征灭美,是指一個(gè)系統(tǒng)可以連續(xù)服務(wù)的時(shí)間推溃,就是本文開(kāi)篇提到的5個(gè)9,對(duì)于5個(gè)9的系統(tǒng)來(lái)說(shuō)一年宕機(jī)時(shí)間不能超過(guò)5.26分鐘届腐。也許您可能不覺(jué)得這個(gè)時(shí)間算什么美莫,但是如果你知道這里的需求是針對(duì)任何可抗和不可抗的情況下都需要滿足的需求時(shí)就不一樣了。不可抗是指發(fā)生火災(zāi)梯捕,地震時(shí)你的系統(tǒng)依然能夠正常服務(wù)厢呵。這就意味著你可能不只是需要在上海的機(jī)房擁有你的系統(tǒng)還要在北京也擁有一套同樣的系統(tǒng),而且兩個(gè)系統(tǒng)的數(shù)據(jù)還必須時(shí)同步的傀顾,這樣才能保證作為一個(gè)用戶當(dāng)你使用網(wǎng)上系統(tǒng)時(shí)絲毫感受不了任何問(wèn)題的影響而且連數(shù)據(jù)都是準(zhǔn)確無(wú)誤的襟铭!為了這5.26分鐘,攻城獅們需要搭建高可靠的系統(tǒng)短曾,不能有單點(diǎn)故障寒砖,建立本地冗余,異活嫉拐,錯(cuò)誤檢測(cè)和無(wú)縫切換哩都,考慮各種極端的情況下如何做數(shù)據(jù)同步,系統(tǒng)升級(jí)時(shí)如何做到服務(wù)不間斷婉徘。

2.2性能和可擴(kuò)展性-Performance and Scalability

性能是指整個(gè)軟件系統(tǒng)在訪問(wèn)高峰時(shí)段能夠支持的高峰并發(fā)會(huì)話數(shù)漠嵌,而可擴(kuò)展性是指基于單臺(tái)服務(wù)器可支持的會(huì)話數(shù)基礎(chǔ)上是否只是單純?cè)黾臃?wù)器數(shù)量就能支持成倍增長(zhǎng)的會(huì)話數(shù)。這兩年互聯(lián)網(wǎng)行業(yè)蓬勃發(fā)展盖呼,每天會(huì)冒出無(wú)數(shù)的APP儒鹿,最初一些小的APP因?yàn)榭蛻羧后w比較小同時(shí)在線也不多對(duì)系統(tǒng)性能要求和可擴(kuò)展性也不高,但是如果突然某天APP火起來(lái)几晤,用戶量激增约炎,那么系統(tǒng)能夠快速擴(kuò)容就是挑戰(zhàn)一款應(yīng)用成敗的關(guān)鍵了。因此在設(shè)計(jì)的初期就把單臺(tái)服務(wù)器的性能調(diào)優(yōu)考慮進(jìn)去蟹瘾,并且考慮系統(tǒng)是否可以近似線性的擴(kuò)容是應(yīng)對(duì)這個(gè)問(wèn)題的關(guān)鍵圾浅。提高了性能和可擴(kuò)展性是隱性的節(jié)約成本,節(jié)省的不僅僅是服務(wù)器/IDC和運(yùn)營(yíng)成本憾朴,還有最重要的是時(shí)間成本狸捕。

2.3系統(tǒng)的特性-Characteristic

顧名思義,系統(tǒng)的特性是指作為一個(gè)獨(dú)立的系統(tǒng)需要支持的獨(dú)特特殊非功能性需求伊脓。不同的軟件系統(tǒng)所需要支持的特性是不同的府寒,比如視頻網(wǎng)站需要的低延時(shí)魁衙,保證視頻能夠被流暢的播放;P2P網(wǎng)站要求的是數(shù)據(jù)精準(zhǔn)株搔,以保證任何時(shí)候用戶投資收益是正確的剖淀。而無(wú)論是視頻網(wǎng)站還是P2P系統(tǒng)又都要求系統(tǒng)的響應(yīng)時(shí)間盡量的短,以保證良好的用戶體驗(yàn)纤房。因此針對(duì)不同的互聯(lián)網(wǎng)系統(tǒng)纵隔,我們需要制定不同的系統(tǒng)特性參數(shù)以提高用戶的滿意度。

2.4系統(tǒng)的可維護(hù)性-Maintainability

系統(tǒng)的可維護(hù)性在互聯(lián)網(wǎng)產(chǎn)品初期階段可能并不能引起很高的重視炮姨,因?yàn)槌跗陔A段最重要的痛點(diǎn)是快速占領(lǐng)市場(chǎng)捌刮。但是等到產(chǎn)品發(fā)展到一定階段,一個(gè)系統(tǒng)的可維護(hù)性又會(huì)成為繼續(xù)發(fā)展壯大的瓶頸舒岸∩鹱鳎可維護(hù)性主要考慮下面幾個(gè)因素:

3、結(jié)束語(yǔ)

軟件系統(tǒng)的非功能性需求是一個(gè)很大的題目蛾派,如果要展開(kāi)說(shuō)可能不是這樣的篇幅能夠涵蓋的俄认。在所有的非功能性需求中用戶體驗(yàn)是已經(jīng)被廣大互聯(lián)網(wǎng)用戶所了解的,而文中所提到的幾個(gè)非功能性需求背后對(duì)應(yīng)的都是一個(gè)龐大的解決方案需要無(wú)數(shù)的軟硬件系統(tǒng)協(xié)作來(lái)完成洪乍。

套用Fenng所說(shuō)的:技術(shù)的作用從短期來(lái)看往往都被高估眯杏,但是從長(zhǎng)期來(lái)看又往往被低估。

本文作者:陳琨(點(diǎn)融黑幫)壳澳,現(xiàn)任點(diǎn)融網(wǎng)資深軟件開(kāi)發(fā)工程師岂贩,曾就職于愛(ài)立信,華為巷波,關(guān)注于高并發(fā)高可用的互聯(lián)網(wǎng)軟件系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)萎津。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市褥紫,隨后出現(xiàn)的幾起案子姜性,更是在濱河造成了極大的恐慌,老刑警劉巖髓考,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弃酌,居然都是意外死亡氨菇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)妓湘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)查蓉,“玉大人,你說(shuō)我怎么就攤上這事榜贴⊥阊校” “怎么了妹田?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹃共。 經(jīng)常有香客問(wèn)我鬼佣,道長(zhǎng)霜浴,這世上最難降的妖魔是什么阴孟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任锹漱,我火速辦了婚禮凌蔬,結(jié)果婚禮上闯冷,老公的妹妹穿的比我還像新娘蛇耀。我一直安慰自己纺涤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著伯顶,像睡著了一般祭衩。 火紅的嫁衣襯著肌膚如雪阅签。 梳的紋絲不亂的頭發(fā)上政钟,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天精算,我揣著相機(jī)與錄音殖妇,去河邊找鬼。 笑死疲吸,一個(gè)胖子當(dāng)著我的面吹牛摘悴,可吹牛的內(nèi)容都是我干的蹂喻。 我是一名探鬼主播口四,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赤嚼!你這毒婦竟也來(lái)了更卒?” 一聲冷哼從身側(cè)響起稚照,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤腌闯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后糖声,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了土陪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬼雀。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖励烦,靈堂內(nèi)的尸體忽然破棺而出坛掠,到底是詐尸還是另有隱情却音,我是刑警寧澤矢炼,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布夷陋,位于F島的核電站,受9級(jí)特大地震影響资昧,放射性物質(zhì)發(fā)生泄漏撤缴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一虎眨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦棺耍、人聲如沸蒙袍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)邑遏。三九已至记盒,卻和暖如春纪吮,著一層夾襖步出監(jiān)牢的瞬間碾盟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工估盘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人攀细。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓锦担,卻偏偏與公主長(zhǎng)得像洞渔,于是被迫代替她去往敵國(guó)和親堤瘤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子本辐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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