可用性的度量
MTBF(Mean Time Between Failure)是平均故障間隔的意思,代表兩次故障的間隔時間,也就是系統正常運轉的平均時間。這個時間越長,系統穩定性越高。
MTTR(Mean Time To Repair)表示故障的平均恢復時間,也可以理解爲平均故障時間。這個值越小,故障對於用戶的影響越小。
可用性與 MTBF 和 MTTR 的值息息相關,我們可以用下面的公式表示它們之間的關係:
Availability = MTBF / (MTBF + MTTR)
高可用系統設計的思路
1. 系統設計
- 預先考慮如何自動化地發現故障,發生故障之後要如何解決,
對應的優化方法:failover(故障轉移)、超時控制以及降級和限流。
一般來說,發生 failover 的節點可能有兩種情況:1、 是在完全對等的節點之間做 failover。2、 是在不對等的節點之間,即系統中存在主節點也存在備節點—使用最廣泛的故障檢測機制是“心跳” - 系統間調用超時的控制 如何確定超時時間-----通過收集系統之間的調用日誌,統計比如說 99% 的響應時間是怎樣的,然後依據這個時間來指定超時時間。 超時時間不是一成不變的,需要在後面的系統維護過程中不斷的修改
- 降級-----保證核心服務的穩定而犧牲非核心服務。
- 限流-----通過對併發的請求進行限速來保護系統,超過請求次數直接返回錯誤
冗餘,服務冗餘+數據冗餘+設備冗餘—主備,負載均衡,failover
取捨----降級,限流,熔斷,超時控制
2. 系統運維
灰度發佈、故障演練、監控報警