高併發系統設計三-系統怎樣做到高可用

高可用(High Avaliability, HA),指的是系統具備較高的無故障運行的能力。

1、可用性的度量

  • MTBF
    MTBF(Mean Time Between Failure):平均故障間隔,代表兩次故障的間隔時間,也就是系統正常運轉的平均時間,這個時間越長,系統穩定性就越高
  • MTTR
    MTTR(Mean Time To Repair):故障的平均恢復時間,也就是平均故障的時間。這個值越小,故障對於用戶的影響也就越小。

Availability = MTBF / (MTBF + MTTR)

在這裏插入圖片描述

一般來說,我們的核心的業務系統的可用性,需要達到 四個九;非核心繫統的可用性最多容忍到 三個九。

2、高可用系統設計思路

2.1、系統設計

“Design for failure”是我們做高可用系統設計時秉持的第一原則。

  • failover(故障轉移)

    1、完全對等的節點之間做 failover,一個節點不可用時,直接訪問另一個節點。

    2、不對等的節點之間(系統中存在主節點也存在備節點)。比方說我們有一個主節點,有多臺備用節點,這些備用節點可以是熱備(同樣在線提供服務的備用節點),也可以是冷備(只作爲備份使用),那麼我們就需要在代碼中控制如何檢測主備機器是否故障,以及如何做主備切換。

    使用最廣泛的故障檢測機制是“心跳”。你可以在客戶端上定期地向主節點發送心跳包,也可以從備份節點上定期發送心跳包。當一段時間內未收到心跳包,就可以認爲主節點已經發生故障,可以觸發選主的操作。

  • 超時控制
    複雜的高併發系統通常會有很多的系統模塊組成,同時也會依賴很多的組件和服務,比如說緩存組件,隊列服務等等。它們之間的調用最怕的就是延遲而非失敗,因爲失敗通常是瞬時的,可以通過重試的方式解決。而一旦調用某一個模塊或者服務發生比較大的延遲,調用方就會阻塞在這次調用上,它已經佔用的資源得不到釋放。當存在大量這種阻塞請求時,調用方就會因爲用盡資源而掛掉

  • 降級是爲了保證核心服務的穩定而犧牲非核心服務的做法

  • 限流,它通過對併發的請求進行限速來保護系統。

2.2、系統運維

  • 灰度發佈
  • 故障演練
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章