高可用筆記

學習博客地址:https://www.cnblogs.com/shizhiyi/p/7750530.html

 

一、什麼是高可用

高可用是分佈式系統架構設計中必須考慮的因素之一,它是指通過設計減少系統不能提供服務的時間。很多公司的高可用目標是4個9,即99.99%的時間系統可用,年停機時間爲8.76小時。

 

二、如何保障系統高可用

單點是高可用最大的敵人,集羣+自動故障轉移來保證系統的高可用性。

 

三、常見的互聯網分層架構高可用實踐

 

 

【客戶端層->反向代理層】

常見的實踐是keepalived存活探測,相同virtual IP提供服務。

故障自動轉移

 

【反向代理層->站點層】

nginx.conf裏能夠配置多個web後端,並且nginx能夠探測到多個後端的存活性。

 

【站點層->服務層】的高可用

自動故障轉移:當service掛了的時候,service-connection-pool能夠探測到,會自動的進行故障轉移(個人感覺是不是註冊中心的工作)

 

【服務層>緩存層】

緩存層也可以通過支持主從同步的緩存集羣來解決緩存層的高可用問題。

自動故障轉移:當redis主掛了的時候,sentinel能夠探測到,會通知調用方訪問新的redis,整個過程由sentinel和redis集羣配合完成,對調用方是透明的。

【服務層>數據庫層】

【服務層>數據庫層“讀”】

自動故障轉移:當讀庫掛了的時候,db-connection-pool能夠探測到,會自動的進行故障轉移,將流量自動遷移到其他的讀庫,整個過程由連接池自動完成,對調用方是透明的(所以說DAO中的數據庫連接池是很重要的基礎組件)。

 

【服務層>數據庫層“寫”】

以mysql爲例,可以設置兩個mysql雙主同步,一臺對線上提供服務,另一臺冗餘以保證高可用,常見的實踐是keepalived存活探測,相同virtual IP提供服務。

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