1. 程式人生 > >高可用架構設計思路

高可用架構設計思路

什麼是高可用

高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。

如何保障高可用

減少單點,伺服器叢集化

服務分層,並且每層都是叢集,當叢集中一個節點發生故障時,要自動將請求轉移到可用節點上,此轉移過程要對呼叫方透明

常見的服務分層思路

架構圖

  1. 客戶端層:典型呼叫方是瀏覽器browser或者手機應用APP
  2. 反向代理層:系統入口,反向代理
  3. 站點應用層:實現核心應用邏輯,返回html或者json
  4. 服務層:如果實現了服務化,就有這一層
  5. 資料-快取層:快取加速訪問儲存
  6. 資料-資料庫層:資料庫固化資料儲存

整個系統的高可用,又是通過每一層的冗餘+自動故障轉移來綜合實現的。

總結

高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。

方法論上,高可用是通過冗餘+自動故障轉移來實現的。

整個網際網路分層系統架構的高可用,又是通過每一層的冗餘+自動故障轉移來綜合實現的,具體的:

  1. 【客戶端層】到【反向代理層】的高可用,是通過反向代理層的冗餘實現的,常見實踐是keepalived + virtual IP自動故障轉移

  2. 【反向代理層】到【站點層】的高可用,是通過站點層的冗餘實現的,常見實踐是nginx與web-server之間的存活性探測與自動故障轉移

  3. 【站點層】到【服務層】的高可用,是通過服務層的冗餘實現的,常見實踐是通過service-connection-pool來保證自動故障轉移

  4. 【服務層】到【快取層】的高可用,是通過快取資料的冗餘實現的,常見實踐是快取客戶端雙讀雙寫,或者利用快取叢集的主從資料同步與sentinel保活與自動故障轉移;更多的業務場景,對快取沒有高可用要求,可以使用快取服務化來對呼叫方遮蔽底層複雜性

  5. 【服務層】到【資料庫“讀”】的高可用,是通過讀庫的冗餘實現的,常見實踐是通過db-connection-pool來保證自動故障轉移

  6. 【服務層】到【資料庫“寫”】的高可用,是通過寫庫的冗餘實現的,常見實踐是keepalived + virtual IP自動故障轉移

參考