你需要了解的那些Abilities(一)

來(lái)自潑辣有圖

如果你去買一部手機(jī),你會(huì)考慮什么因素呢喜滨?一般我們都會(huì)首先考慮智能手機(jī)捉捅、照相功能、多大容量等虽风。而除了這些棒口,我們通常還會(huì)考慮品牌、顏色辜膝、外型好不好看无牵、時(shí)尚與否。作為一個(gè)軟件產(chǎn)品也不例外厂抖,用戶首先會(huì)期望系統(tǒng)要滿足正常的功能需求茎毁,同時(shí)系統(tǒng)還要滿足好用、性能好忱辅、穩(wěn)定可靠等其他特性七蜘。一般我們會(huì)把這些稱為非功能性需求或者跨功能性需求。系統(tǒng)的每一次故障和宕機(jī)對(duì)用戶都是不可忽視的損失墙懂,所以這些非功能性需求也是軟件質(zhì)量非常重要的屬性橡卤,是軟件架構(gòu)設(shè)計(jì)需要滿足的目標(biāo)。

在運(yùn)行時(shí)的非功能需求中损搬,我們常常會(huì)提到幾個(gè)詞有 Availability蒜魄、Stability和Reliability,即系統(tǒng)要高可用场躯、高可靠和穩(wěn)定谈为。那么可用、可靠還有穩(wěn)定是什么意思呢踢关?如何衡量伞鲫?它們之間又有什么區(qū)別?我經(jīng)常在不同場(chǎng)景下聽到這幾個(gè)詞的混用签舞。今天就先來(lái)談一談這幾個(gè)ability秕脓。

1. Availability 可用性

Availability defines the proportion of time that the system is functional and working. It can be measured as a percentage of the total system downtime over a predefined period. Availability will be affected by system errors, infrastructure problems, malicious attacks, and system load. - Microsoft Application Architecture Guide

可用性指系統(tǒng)在給定時(shí)間內(nèi)可以正常工作的概率柒瓣,通常用SLA指標(biāo)來(lái)表示,如下圖所示吠架。

SLA指標(biāo)

墨菲定律說(shuō)“會(huì)出錯(cuò)的事總會(huì)出錯(cuò)”芙贫,可用性做到100是可望而不可及的。對(duì)于SLA指標(biāo)來(lái)說(shuō)傍药,9的數(shù)字越多可用性越高磺平,宕機(jī)時(shí)間越少,系統(tǒng)就可以在給定的時(shí)刻內(nèi)高比例地正常工作拐辽。然而對(duì)系統(tǒng)的挑戰(zhàn)就越大拣挪,投入的成本也會(huì)越高。 比如5個(gè)9要求系統(tǒng)每年只宕機(jī)5分鐘左右俱诸,而4個(gè)9要求每年宕機(jī)時(shí)間不超過(guò)一個(gè)小時(shí)菠劝。這就使得系統(tǒng)需要在設(shè)計(jì)、基礎(chǔ)設(shè)施睁搭、數(shù)據(jù)備份等不同層面采取多種方式赶诊,甚至增加基礎(chǔ)設(shè)施投資來(lái)保證可用性。

“當(dāng)你的設(shè)備處理人命關(guān)天的事情园骆,或業(yè)務(wù)中斷一分鐘就會(huì)損失百萬(wàn)美刀舔痪,那么你可以考慮99.99%的可靠性∮錾。” Robertson(Linux高可用項(xiàng)目開發(fā)者)

不同系統(tǒng)的可用性要求也是不同的辙喂,比如:淘寶捶牢、京東等這些電商系統(tǒng)用戶量很多鸠珠,不同區(qū)不同時(shí)刻都有大量的用戶在使用系統(tǒng),這必然對(duì)系統(tǒng)的可用性要求很高秋麸。據(jù)以往這些系統(tǒng)的故障統(tǒng)計(jì)和不準(zhǔn)確地測(cè)試數(shù)據(jù)推測(cè)渐排,它們目前的可用性是在3個(gè)9到4個(gè)9左右。相對(duì)而言灸蟆,企業(yè)類的工作軟件因?yàn)橥ǔV辉诠ぷ鲿r(shí)間被使用驯耻,或只在某些特定的地區(qū)使用,或只給某部分人某一特定時(shí)間使用炒考,可用性的需求就會(huì)低一些可缚。典型的系統(tǒng)就數(shù)salesforce了,經(jīng)常會(huì)看到“周末又要升級(jí)了”的提示斋枢。

影響可用性的因素有很多帘靡,包括系統(tǒng)故障、基礎(chǔ)設(shè)施故障瓤帚、數(shù)據(jù)故障描姚、安全攻擊涩赢、系統(tǒng)壓力等等。

2. Reliability 可靠性

Reliability is a measure of the probability that an item will perform its intended function for a specified interval under stated conditions.

可靠性是在給定的時(shí)間間隔和給定條件下轩勘,系統(tǒng)可以無(wú)故障持續(xù)運(yùn)行的概率筒扒。那么可靠性和可用性有什么區(qū)別呢?在《分布式系統(tǒng)原理與范型》中提到的下面例子中比較準(zhǔn)確的解釋了兩者的區(qū)別:

如果系統(tǒng)在每小時(shí)崩潰1ms绊寻,那么它的可用性就超過(guò)99.9999%花墩,但是它還是高度不可靠。與之類似榛斯,如果一個(gè)系統(tǒng)從來(lái)不崩潰观游,但是每年要停機(jī)兩星期,那么它是高度可靠的驮俗,但是可用性只有96%懂缕。

簡(jiǎn)而言之,可用性關(guān)注的是系統(tǒng)任何時(shí)刻可以持續(xù)正常工作的能力王凑,關(guān)注的是服務(wù)總體的持續(xù)時(shí)間搪柑。系統(tǒng)在給定時(shí)間內(nèi)總體的運(yùn)行時(shí)間越長(zhǎng),可用性越高索烹。而可靠性更關(guān)注系統(tǒng)可以無(wú)故障地持續(xù)運(yùn)行的概率工碾,關(guān)注的是故障率。故障的頻率越高百姓,可靠性越低渊额。可靠性差一定程度上是會(huì)影響可用性的垒拢,但反過(guò)來(lái)不一定成立旬迹。

這里面還有一些常用的指標(biāo)來(lái)衡量可用性和可靠性:

  • MTBF(Mean Time Between Failure)
    即平均無(wú)故障時(shí)間,是指從新的產(chǎn)品在規(guī)定的工作環(huán)境條件下開始工作到出現(xiàn)第一個(gè)故障的時(shí)間的平均值求类。MTBF越長(zhǎng)表示可靠性越高奔垦,正確工作能力越強(qiáng) 。

  • MTTR(Mean Time To Repair)
    即平均修復(fù)時(shí)間尸疆。是指可修復(fù)產(chǎn)品的平均修復(fù)時(shí)間椿猎,就是從出現(xiàn)故障到修復(fù)中間的這段時(shí)間。MTTR越短表示易恢復(fù)性越好寿弱。

  • MTTF(Mean Time To Failure)
    即平均失效時(shí)間犯眠。系統(tǒng)平均能夠正常運(yùn)行多長(zhǎng)時(shí)間,才發(fā)生一次故障症革。系統(tǒng)的可靠性越高筐咧,平均無(wú)故障時(shí)間越長(zhǎng)。

基于以上指標(biāo)地沮,可用性可以如此計(jì)算:

Availability = UpTime/(UpTime+DownTime) = MTBF / (MTBF + MTTR)

作為系統(tǒng)的響應(yīng)嗜浮,首要目標(biāo)是先降低故障的次數(shù)羡亩,頻率要低,從而提高可靠性危融;同時(shí)在故障出現(xiàn)后畏铆,要提高故障的恢復(fù)時(shí)間,速度要快吉殃,從而提高業(yè)務(wù)的可用性辞居。

影響可靠性的因素就是能夠引起故障的所有因素,包括軟件設(shè)計(jì)錯(cuò)誤蛋勺,編碼錯(cuò)誤瓦灶,硬件故障等等。

3. Stability 穩(wěn)定性

Stability is about how many failures an application exhibits; whether that is manifested as unexpected or unintended behaviour, users receiving errors, or a catastrophic failure that brings a system down. The fewer failures that are observed the more stable an application is.

軟件的穩(wěn)定性抱完,指軟件在一個(gè)運(yùn)行周期內(nèi)贼陶、在一定的壓力條件下,在持續(xù)操作時(shí)間內(nèi)出錯(cuò)的概率巧娱,性能劣化趨勢(shì)等等碉怔。如果一個(gè)系統(tǒng)的故障率很高,它一定是高度不可靠的禁添,也一定是不穩(wěn)定的撮胧。那么如何區(qū)分穩(wěn)定性和可靠性呢?

對(duì)于電力系統(tǒng)而言老翘,穩(wěn)定性就是“人民用電不要忽明忽暗忽快忽慢”芹啥,可靠性就是”不要用著用著突然沒(méi)有啦“。-知乎盛夏白日夢(mèng)

如果一個(gè)系統(tǒng)的性能時(shí)好時(shí)壞铺峭,它一定是不穩(wěn)定的墓怀,而不一定是不可靠的。穩(wěn)定性更關(guān)注系統(tǒng)在給定條件下的響應(yīng)是否一致逛薇,行為是否穩(wěn)定捺疼∈璩妫可靠是可用的前提永罚,穩(wěn)定是可靠的進(jìn)一步提升。

今天在Stackoverflow看到這樣一段代碼來(lái)表示這兩個(gè)的區(qū)別卧秘,甚為有趣:

Reliable but unstable:
    add(a,b):
     if randomInt mod 5 == 0: 
        throw exception
     else
        print a+b        
Stable but unreliable:
  add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b

不知道寫到這里呢袱,你是否對(duì)可用性、可靠性和穩(wěn)定性有了更清晰的了解了呢翅敌?有了這些指標(biāo)可以幫助我們?nèi)シ治鱿到y(tǒng)存在的問(wèn)題羞福,比如說(shuō)故障頻率較高,故障恢復(fù)時(shí)間較長(zhǎng)蚯涮,那么系統(tǒng)的可靠性可用性一定很低治专,對(duì)用戶的影響一定很高卖陵,就可以促使我們?nèi)母鱾€(gè)角度去改進(jìn)和提高,去找架構(gòu)設(shè)計(jì)的問(wèn)題张峰,去找系統(tǒng)實(shí)現(xiàn)的缺陷泪蔫,去找依賴的基礎(chǔ)設(shè)施問(wèn)題等等,從而改善我們的系統(tǒng)喘批。尤其是在當(dāng)下復(fù)雜的分布式系統(tǒng)下撩荣,這些顯得尤為重要。

那么饶深,最后請(qǐng)問(wèn)我們常見的容錯(cuò)處理餐曹、藍(lán)綠部署、回滾敌厘、cluster台猴、災(zāi)備會(huì)有助于提高以上哪個(gè)ability呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俱两,一起剝皮案震驚了整個(gè)濱河市卿吐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锋华,老刑警劉巖嗡官,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異毯焕,居然都是意外死亡衍腥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門纳猫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)婆咸,“玉大人,你說(shuō)我怎么就攤上這事芜辕∩薪荆” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵侵续,是天一觀的道長(zhǎng)倔丈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)状蜗,這世上最難降的妖魔是什么需五? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮轧坎,結(jié)果婚禮上宏邮,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好蜜氨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布械筛。 她就那樣靜靜地躺著,像睡著了一般飒炎。 火紅的嫁衣襯著肌膚如雪变姨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天厌丑,我揣著相機(jī)與錄音定欧,去河邊找鬼。 笑死怒竿,一個(gè)胖子當(dāng)著我的面吹牛砍鸠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耕驰,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爷辱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了朦肘?” 一聲冷哼從身側(cè)響起饭弓,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎媒抠,沒(méi)想到半個(gè)月后弟断,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趴生,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年阀趴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苍匆。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刘急,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浸踩,到底是詐尸還是另有隱情叔汁,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布检碗,位于F島的核電站据块,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏后裸。R本人自食惡果不足惜瑰钮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一冒滩、第九天 我趴在偏房一處隱蔽的房頂上張望微驶。 院中可真熱鬧,春花似錦、人聲如沸因苹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扶檐。三九已至凶杖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間款筑,已是汗流浹背智蝠。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奈梳,地道東北人杈湾。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像攘须,于是被迫代替她去往敵國(guó)和親漆撞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理于宙,服務(wù)發(fā)現(xiàn)浮驳,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 分布式系統(tǒng)面臨的第一個(gè)問(wèn)題就是數(shù)據(jù)分布捞魁,即將數(shù)據(jù)均勻地分布到多個(gè)存儲(chǔ)節(jié)點(diǎn)至会。另外,為了保證可靠性和可用性谱俭,需要將數(shù)據(jù)...
    olostin閱讀 4,576評(píng)論 2 26
  • 云應(yīng)用設(shè)計(jì)模式 下面的章節(jié)詳細(xì)介紹了一些設(shè)計(jì)模式奋献,這些現(xiàn)有的設(shè)計(jì)模式可以有效地應(yīng)用到云服務(wù)應(yīng)用程序設(shè)計(jì)中去。 電路...
    MagicBowen閱讀 749評(píng)論 1 2
  • 今天我讀了一本書旺上,這本書是《我為自己豎大拇指》瓶蚂。接下來(lái)呢,我就要給大家講講我的感想吧宣吱! 這本書給了我一個(gè)...
    師睿佳閱讀 717評(píng)論 0 0
  • 紅燈籠剛被人點(diǎn)亮就落滿白霜 紅衣裳雕著花的床成就了新娘 紅顏是種罪 青春是禍水 命薄如紙世人方說(shuō)美 清晨初上妝 黃...
    郭小蝠閱讀 254評(píng)論 5 4