理解高可用

一、什麼是高可用

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

假設系統一直能夠提供服務,我們說系統的可用性是100%。

如果系統每運行100個時間單位,會有1個時間單位無法提供服務,我們說系統的可用性是99%。

很多公司的高可用目標是4個9,也就是99.99%,這就意味着,系統的年停機時間爲8.76個小時。

百度的搜索首頁,是業內公認高可用保障非常出色的系統,甚至人們會通過www.baidu.com 能不能訪問來判斷“網絡的連通性”,百度高可用的服務讓人留下啦“網絡通暢,百度就能訪問”,“百度打不開,應該是網絡連不上”的印象,這其實是對百度HA最高的褒獎。

二、如何保障系統的高可用

我們都知道,**單點是系統高可用的大敵,**單點往往是系統高可用最大的風險和敵人,應該儘量在系統設計的過程中避免單點。方法論上,高可用保證的原則是“集羣化”,或者叫“冗餘”:只有一個單點,掛了服務會受影響;如果有冗餘備份,掛了還有其他backup能夠頂上。

保證系統高可用,架構設計的核心準則是:冗餘

有了冗餘之後,還不夠,每次出現故障需要人工介入恢復勢必會增加系統的不可服務實踐。所以,又往往是通過“自動故障轉移”來實現系統的高可用。

三、常見的互聯網分層架構

在這裏插入圖片描述常見互聯網分佈式架構如上,分爲:

(1)客戶端層:典型調用方是瀏覽器browser或者手機應用APP

(2)反向代理層:系統入口,反向代理

(3)站點應用層:實現核心應用邏輯,返回html或者json

(4)服務層:如果實現了服務化,就有這一層

(5)數據-緩存層:緩存加速訪問存儲

(6)數據-數據庫層:數據庫固化數據存儲

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

四、分層高可用架構實踐

【客戶端層->反向代理層】的高可用
在這裏插入圖片描述

【客戶端層】到【反向代理層】的高可用,是通過反向代理層的冗餘來實現的。以nginx爲例:有兩臺nginx,一臺對線上提供服務,另一臺冗餘以保證高可用,常見的實踐是keepalived存活探測,相同virtual IP提供服務。

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