一、 什麼是**可用性
很簡單,可用性就是**的可訪問性。它的度量指標是正常執行時間佔所有執行時間的比例。測量方式是實際執行乙個服務,測量其不可用的時間。
**為什麼不可用?主要的原因是伺服器硬體故障,比如磁碟,比如網路等。那麼,所謂的保證**的可用性,就是要在伺服器可能因硬體故障而怠機的前提下設計保證**可用性的**架構。
二、 保證**可用性的基本方法
應用層:負責主要的業務邏輯
服務層:提供公用(通用)的服務
資料層:提供資料的讀寫
每個層次的系統,因為其所提供的功能不同,使用的可用性技術也有所區別。概要的可用性技術如下表所示:
系統可用性技術
應用層負載均衡
服務層負載均衡
資料層冗餘備份
三、 應用層的可用性技術
對於無狀態的請求,當應用集群中的某台伺服器當機時,負載均衡伺服器會通過心跳檢測技術檢測到,它會將怠機的伺服器從集群中移除,並進行失效轉移,即將原來**給該伺服器的請求**給其他伺服器。
對於有session狀態的應用集群,比較成熟的方法是使用session伺服器集群將狀態和應用分離,以使應用伺服器怠機不影響session。當然還有別的方法。
四、 服務層的可用技術
基本的方法也是使用和應用層類似的負載均衡技術。此外還有一些實踐中產生的高可用性技術或策略:
伺服器按業務的重要程度進行分級管理;
設定超時時間以及時通知應用;
非同步呼叫以使任務在時間順序上解耦;
服務降級以扛住高峰併發壓力;
使用冪等設計保證應用在重複呼叫服務時產生相同的結果。
五、 資料層的可用技術
基本的方法當然是備份了。備份分為冷備份和熱備份。冷備份指定期備份,缺陷是不能保證資料始終一致和不能保證資料可用性(在切換到備份的過程始終可訪問,並且在使用者無感知)。熱備份指實時備份,即資料寫入時即備份到其他儲存空間中去。熱備份又可分為:
非同步熱備份:先寫入一台伺服器後即返回成功的響應,至於備份到其他機器,是之後再非同步地進行。這就可能有後續寫操作失敗的可能。
同步熱備份:同時寫入多台平等的機器,都寫成功了才返回。由於採用了併發寫的技術,速度上和非同步的方式差不多。
另外值得一提的是cap原理:
資料系統無法同時滿足資料一致性、可用性和分割槽耐受性(跨網路區域的伸縮性)。
因此,大多數**選擇犧牲部分一致性。
六、 從軟體方面保證可用性
**發布採用優雅發布(即平滑過渡,集群中的機器一部分一部分地逐漸發布),需要知道的是,**發布時,實際上必須重啟(或中斷)應用系統,這等於怠機的效果。
採用web自動化測試保證質量;
進行預發布驗證;(在和線上環境一樣的預發布伺服器上進行發布並檢查結果)
**控制,一般使用主幹發布,分支開發;
使用火車發布模型的自動化發布,提高發布效率,當然該模型必然存在一些問題;
使用灰度發布,有2個內內涵,乙個其實指的就是優雅發布,另乙個指ab測試。
七、 進行**監控以保證可用性
監控需要採集的資料報括:
使用者行為日誌(服務端採集和客戶端採集是2種採集手段)
伺服器效能監控(op負責伺服器系統基本效能的採集)
執行資料報告(需要rd加入特定的資料採集邏輯)
八、 參考資料
《大型**技術架構-核心原理與案例分析》
ps:我們是誰?我們是天邊流雲,有不成韻律的詩云:
《流雲》
我們是天邊漂泊的流雲
常懷著遊子的愁緒
我們曾貪慕青天的高遠
也會迷戀新月的柔情
但終有一天我們尋到了故鄉
哦,原來她正是這滿目瘡痍的大地
於是,我們等待風起時把我們連成一片
甘願化成雨水,澆灌大地
更多…請見流雲部落格:無法訪問請發郵件到[email protected],我們將定期檢視郵箱並告訴您訪問方法)
迷你web服務端
import re import socket from multiprocessing import process def handle client client skt 接收客戶端資料 recv data client skt.recv 1024 按照換行進行切割 request lines...
檢查vsftp服務端是否可用
開啟user list檔案將root注釋掉 開啟ftpusers將root注釋掉cat etc passwd grep i ftp 如果沒有ftp使用者,使用useradd,passwd增加ftp使用者tftp home dir off 若是關閉的,請開啟 setsebool a tftp home...
web服務端重定向
伺服器重定向常見某些 引導登陸頁面 例如 點選購物車會跳轉到登陸頁面 服務端的重定向功能主要由響應頭的302 狀態碼來實現 用nodejs,寫的服務端重定向 1.匯入模組 2.建立伺服器 登陸頁 if req.url login res.end data 3.開啟伺服器 server.listen ...