在系統設計中,有時會關注reliability, availability這兩個特性。reliability 是可靠度而availability是可用度。
這是兩個完全不同的概念(但要看定義)。在可靠度工程裡有比較嚴謹的數學定義,這邊只做qualitative概念性的描述。
Dependability, or reliability, describes the ability of a system or component to function under stated conditions for a specified period of time
(節錄 https://en.wikipedia.org/wiki/Reliability_engineering)
reliability 指的是系統在一段時間內是否正常運作,而availability指的是在一段時間內系統可以使用的時間比例 (這邊在不同的context下可能會有不同的定義方式,例如CAP裡論證的availability是以response time來定義availability)
a measure of the degree of a system which is in the operable and committable state at the start of mission when the mission is called for at an unknown random point in time. (參考https://en.wikipedia.org/wiki/Availability)
如果用生活的例子來說
high availability => 隨call可以隨到:
隨call(unknown random point in time)
隨到(operable and committable state)
而可靠度:
- 某甲每個月按照約定(to function)按時繳貸款,連續20年(a specified period of time)
- B覺得A是可靠的人,因為A總是(a specified period of time 從認識開始) 說到做到(function as expectation)
要達成high availability的方式最基本的思路是redundant,而要達成high reliability的方式比較複雜一點,如果做的事沒有side effect,那麼最基本的思路是consensus,這個再另文描述。