天天看點

(轉)區分可用性和可靠性

首先,這兩個屬性都是品質(可維護性)的一部分。

按照書上的定義,

可靠性(reliability):在規格時間間隔内和規定條件下,系統或部件執行所要求功能的能力。例如:

QA1:在用戶端與伺服器端通信時,如果網絡故障,系統不能出現故障。

可用性(availability):軟體系統在投入使用時可操作和可通路的程度,或能實作其指定系統功能的機率。例如:

QA2:系統的可用性要達到98%。

實話說我一直想吐槽這個定義,說得未免太模糊了一點。尤其是可用性的定義,用術語解釋術語可太秀了。後來在看分布式系統的時候,看到了一個解釋:

可用性被定義為系統的一個屬性,它說明系統已準備好,馬上就可以使用。換句話說,高度可用的系統在任何給定的時刻都能及時地工作。

可靠性是指系統可以無故障地持續運作,是一個持續的狀态。與可用性相反,可靠性是根據時間段而不是任何時刻來進行定義的。

如果系統在每小時崩潰1ms,那麼它的可用性就超過99.9999%,但是它還是高度不可靠。與之類似,如果一個系統從來不崩潰,但是每年要停機兩星期,那麼它是高度可靠的,但是可用性隻有96%。

我覺得這個解釋說得很好。可靠性是一個持續性的狀态,更多地強調系統自身;而可用性是一個短暫的狀态,更多地強調外部的觸發。就好比一個人,你找他的時候能不能找到,這是可用性;而他幹活靠不靠譜,則是可靠性。一個人如果随叫随到,但是時不時偷懶,就是高可用、低可靠;而如果他經常找不到人,但幹活很負責,就是低可用、高可靠。其實就是上面說的那個例子了。

再回到書上的例子去。為什麼“網絡故障,系統不能出現故障”是可靠性?其實也是比較顯然的。這是一個持續的過程。網絡故障的時候,系統不出現故障,維持了正常運作狀态,正是高可靠的表現;而且,系統不受外界影響,展現出内在的穩定性,也是可靠性的隐藏要求吧。

從某種程度上,可用性包括了可靠性。如果不可用,根本談不上可靠。有一個定義:

繼續閱讀